我使用AEM 6.1
和Maven
作为构建管理器。我已使用Adobe提供的未经模糊处理的UberJar
更新了.m2本地文件夹。我收到以下错误:
错误 [JobHandler:/ etc / workflow / instances / server0 / 2016-07-15 / model_157685507700064:/ content / myApp / testing / wf_test01] com.adobe.granite.workflow.core.job.JobHandler流程实现 找不到:com.myApp.workflow.ActivatemyAppPageProcess com.adobe.granite.workflow.WorkflowException:流程实现 找不到:com.myApp.workflow.ActivatemyAppPageProcess at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:197) 在 com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:232) 在 org.apache.sling.event.impl.jobs.JobConsumerManager $ JobConsumerWrapper.process(JobConsumerManager.java:512) 在 org.apache.sling.event.impl.jobs.queues.JobRunner.run(JobRunner.java:205) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
UberJar
似乎没有com.adobe.granite.workflow.core.job
个包。有什么方法可以解决这个问题吗?
流程步骤.execute
的{{1}}方法:
ActivatemyAppPageProcess
答案 0 :(得分:2)
com.adobe.granite.workflow.core.job
。这意味着,您无法使用它,因为它对您的代码是不可见的。
com.adobe.granite.workflow.core
捆绑包仅导出com.adobe.granite.workflow.core.event
。
如果您使用AEM工作流程,则应该坚持使用com.adobe.granite.workflow.api
捆绑包。
以下包在此捆绑包中导出,因此可用:
com.adobe.granite.workflow,version=1.0.0
com.adobe.granite.workflow.collection,version=1.1.0
com.adobe.granite.workflow.collection.util,version=1.0.0
com.adobe.granite.workflow.event,version=1.0.0
com.adobe.granite.workflow.exec,version=1.0.0
com.adobe.granite.workflow.exec.filter,version=1.0.0
com.adobe.granite.workflow.job,version=1.0.0
com.adobe.granite.workflow.launcher,version=1.0.0
com.adobe.granite.workflow.metadata,version=1.0.0
com.adobe.granite.workflow.model,version=1.0.0
com.adobe.granite.workflow.rule,version=1.0.0
com.adobe.granite.workflow.serialization,version=1.0.0
com.adobe.granite.workflow.status,version=1.0.0
即使uber.jar
包含软件包,如果您在/system/console/bundles
上查看AEM实例并单击com.adobe.granite.workflow.core
软件包,您也会看到"导出的软件包& #34;没有com.adobe.granite.workflow.core.job
可用。因此,即使您的IDE,Maven和/或Jenkins可以处理它,AEM也无法执行您的代码。
在AEM中,您只能使用在其中一个可用软件包中导出的软件包或捆绑包中包含的软件包 - 这不是一个坏主意。然后,您将拥有相同代码的两个版本,这将导致进一步的问题。
看过代码后我会说这里有另一个问题。解决这个问题也可以帮助你摆脱另一个问题。
您尝试为已在工作流程中使用的路径启动另一个WF(激活请求)。 您必须终止当前工作流实例才能执行此操作。
干净方法的一个例子是:
Workflow workflow = workItem.getWorkflow();
WorkflowData wfData = workflow.getWorkflowData();
workflowSession.terminateWorkflow(workflow);
Map<String, Object> paramMap = new HashMap<String, Object>();
if (!StringUtils.isEmpty(data.getNextParticipantUid())) {
paramMap.put("nextParticipant", "admin");
}
workflowSession.startWorkflow(
workflowSession.getModel(WORKFLOW_MODEL_PATH, wfData, paramMap);
答案 1 :(得分:0)
错误的可能原因可能是您的工作流程com.myApp.workflow.ActivatemyAppPageProcess
服务/组件未处于活动状态,因此它未绑定到JobHandler的可用进程列表,从而导致此异常。
您可以在/system/console/components
检查您的自定义流程组件是否处于活动状态?如果没有,那么您将必须解决导致服务/组件不可用的依赖性。