尝试在工作流元数据和下面保存一些属性是我正在使用的代码片段 .

try {
    if (workItem.getWorkflowData().getPayloadType().equals("JCR_PATH")) {
        addValuesToMetadata(workItem, workflowSession,metaDataMap);
    }

    MetaDataMap wfMetaData=workItem.getWorkflowData().getMetaDataMap();
    Set<String> keys=metaDataMap.keySet();
    for (String key : keys) {
        if(key.startsWith("xyz")){
            wfMetaData.put(key, metaDataMap.get(key));
        }
    }

    workflowSession.updateWorkflowData(workItem.getWorkflow(), workItem.getWorkflowData());
} catch (Exception e) {
    e.printStackTrace();
}

我没有关闭会话,但它抛出以下异常 .

javax.jcr.RepositoryException:此会话已关闭 . org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.checkAlive(SessionDelegate.java:367)org.apache.jackrabbit.oak.jcr.session.SessionImpl $ ReadOperation.checkPreconditions(SessionImpl.java:110)at org位于org.apache.jackrabbit的org.apache.jackrabbit.oak.jcr.session.SessionImpl.perform(SessionImpl.java:127)的.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:289) .oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:228)atg.apache.jackrabbit.oak.jcr.session.SessionImpl.getItem(SessionImpl.java:357)at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown源代码:sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.sling.jcr.base.SessionProxyHandler $ SessionProxyInvocationHandler.invoke (SessionProxyHandler.java:113)com.sad.proxy . $ Proxy0.getItem(未知来源)com.adobe.granite.workflow.core.jcr.WorkflowManager.getWorkflowNode(WorkflowM) anager.java:815)com.adobe.granite.workflow.core.jcr.WorkflowManager.updateWorkflowData(WorkflowManager.java:326)at com.adobe.granite.workflow.core.WorkflowSessionImpl.updateWorkflowData(WorkflowSessionImpl.java:952)在java.util的org.apache.sling.event.jobs.JobUtil $ 1.run(JobUtil.java:365)的com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:177) . concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:745)com.adobe . granite.workflow.WorkflowException:无法在com.adobe.granite.workflow.core.jcr.WorkItemManager.updateWorkItem(WorkItemManager)中加载workItem:/ etc / workflow / instances / 2015-06-18 / model_1299575053804439 / workItems / node7_etc_workflow_instances_2015-06-18_model_9 .java:349)at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:180)at org.apache.sling.event.jobs.JobUtil $ 1.run(JobUtil.java:365)在java . 在java.lang.Thread.run(Thread.java:745)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)的util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)引起的:javax.jcr.RepositoryException:此会话已关闭 . org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.checkAlive(SessionDelegate.java:367)org.apache.jackrabbit.oak.jcr.session.SessionImpl $ ReadOperation.checkPreconditions(SessionImpl.java:110)at org位于org.apache.jackrabbit的org.apache.jackrabbit.oak.jcr.session.SessionImpl.perform(SessionImpl.java:127)的.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:289) .oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:228)atg.apache.jackrabbit.oak.jcr.session.SessionImpl.getItem(SessionImpl.java:357)at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown源代码:sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.sling.jcr.base.SessionProxyHandler $ SessionProxyInvocationHandler.invoke (SessionProxyHandler.java:113)com.sad.proxy . $ Proxy0.getItem(未知来源)com.adobe.granite.workflow.core.jcr.WorkItemManager.updateWorkItem(WorkItemMa) nager.java:344)...省略了5个常见帧

任何帮助都非常感谢 .