AEM 6.1 Uber Jar Maven依赖

时间:2016-07-18 14:43:13

标签: maven workflow aem uberjar aem-6

我使用AEM 6.1Maven作为构建管理器。我已使用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

2 个答案:

答案 0 :(得分:2)

根本不会在AEM中导出

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检查您的自定义流程组件是否处于活动状态?如果没有,那么您将必须解决导致服务/组件不可用的依赖性。