Javascript 不理解;或分割“;在AEM工作流中

Javascript 不理解;或分割“;在AEM工作流中,javascript,workflow,aem,ecma,Javascript,Workflow,Aem,Ecma,我有一个工作流程 在第一步中,它设置一个名为language的变量 WorkflowData data = workItem.getWorkflow().getWorkflowData(); data.getMetaDataMap().put("language", "English"); workflowSession.updateWorkflowData(workItem.getWorkflow(), data); 接下来是“或拆分”,它有两个带有ECMA脚本的分支 第一个分支被默认选中,

我有一个工作流程

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

WorkflowData data = workItem.getWorkflow().getWorkflowData();
data.getMetaDataMap().put("language", "English");
workflowSession.updateWorkflowData(workItem.getWorkflow(), data);
接下来是“或拆分”,它有两个带有ECMA脚本的分支 第一个分支被默认选中,并具有以下内容

function check(){
   var action = workflowData.getMetaDataMap().get("language");
   return (action == "en_US");
}
第二个分支只有

function check(){
   return true;
}
当流流经第一个分支时,它工作正常。 若它通过第二个分支,我将面临以下错误

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)

您是否尝试将无操作步骤添加到第二个分支?

能否发布您的工作流模型定义?添加了模型屏幕快照您是对的。除了添加“无操作”步骤外。删除“默认路线”并将条件修改为(action==“en_US”)。您还可以告诉我“默认路线”有什么作用吗?默认路线是一种奇怪的动物。如果将log.info()添加到这两个路由,您将看到将有3个日志条目。一个用于第一条路线,一个用于第二条路线,一个用于默认路线。因此,似乎默认值将以任何一种方式进行检查。但是,如果两条路由都不返回true,则默认路由将失败。您应该使用默认值作为回退路径,始终返回true。还请注意一个奇怪的行为。有时,即使函数失败或未失败,工作流也会继续执行失败/成功分支。。O.O,即使添加了noop,并且默认路由的两种情况都是:(