我正在alFresco中构建一个自定义工作流,我正在设置两个执行变量的值,如下所示
<startEvent id="startevent1" name="Start" activiti:formKey="swwf:AssignmentTask">
<extensionElements>
<activiti:executionListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string><![CDATA[logger.log("Log Start");
execution.setVariable('translator', task.getVariable(swwf_translator));
execution.setVariable('reviewer', task.getVariable(swwf_reviewer));]]></activiti:string>
</activiti:field>
</activiti:executionListener>
</extensionElements>
</startEvent>
启动任务对应的工作流模型中的类型为
<type name="swwf:AssignmentTask" >
<parent>bpm:startTask</parent>
<associations>
<association name="swwf:translator">
<title>Translator</title>
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>false</many>
</target>
</association>
<association name="swwf:reviewer">
<title>Reviewer</title>
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>false</many>
</target>
</association>
</associations>
</type>
有多确定那个javascript没有被执行?
如果您没有适当的日志级别设置在您的项目名称-repo/src/main/amp/config/alFresco/module/project-name-repo
像这样:log4j.logger.org. alfreco.repo.jscript.ScriptLogger=DEBUG
然后你可能不会得到任何输出在你的日志!
如果您感到困惑并且无法验证您的log4j.properties是否正确加载,请尝试logger. error("message");
以确保js片段是否正确执行!
将info/debug消息记录为错误是非常不推荐的,事实上它违反了编码标准,因此请务必在您的控制台中验证日志消息后恢复为logger. log()
。
我相当肯定您设置侦听器的方式存在问题。
activiti:executionListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
您调用的是执行监听器,但为其分配了任务监听器类。此外,“完成”是任务监听器事件,而不是执行事件。如果您希望在提交开始表单时触发它,则需要将事件更改为“开始”。相反,应该是这样的:
activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
另外,正在运行的脚本也有问题。我在这个SO问题中遇到了基本相同的问题。