无法理解AEM工作流程中的"OR拆分"

Dil*_*epa 3 javascript workflow ecma aem

我有一个工作流程.

在第一步中,它设置了一个名为language的变量.

WorkflowData data = workItem.getWorkflow().getWorkflowData();
data.getMetaDataMap().put("language", "English");
workflowSession.updateWorkflowData(workItem.getWorkflow(), data);
Run Code Online (Sandbox Code Playgroud)

接下来是"OR SPLIT",它有2个带有ECMA脚本的分支.第一个分支是默认选中并具有以下内容

function check(){
   var action = workflowData.getMetaDataMap().get("language");
   return (action == "en_US");
}
Run Code Online (Sandbox Code Playgroud)

第二个分支只有,

function check(){
   return true;
}
Run Code Online (Sandbox Code Playgroud)

当流程通过第一个分支时,它工作正常.如果它通过第二个分支我面临以下错误.

com.adobe.granite.workflow.WorkflowException: No route found to continue from step node1 in model /etc/workflow/models/example/jcr:content/model. Probably a configuration error.
    at com.adobe.granite.workflow.core.WorkflowSessionImpl.getRoutes(WorkflowSessionImpl.java:734)
    at com.adobe.granite.workflow.core.job.HandlerBase.complete(HandlerBase.java:497)
    at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:336)
    at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:512)
    at org.apache.sling.event.impl.jobs.queues.JobRunner.run(JobRunner.java:205)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

mar*_*ell 5

你尝试过向第二个分支添加一个无操作步骤吗?

  • "默认路线"是一种奇怪的动物.如果将log.info()添加到两个路由,您将看到将有3个日志条目.一个用于第一个路由,一个用于第二个路由,一个用于默认路由.因此,似乎将以任一方式检查默认值.但是,如果两个路由都没有返回true,则默认值将失败.您应该使用默认值作为后备路由,始终返回true. (2认同)