Jakarta ee Alfresco:ScriptTaskListener未执行javascript代码
我正在alfresco中构建一个自定义工作流,我正在设置两个执行变量的值,如下所示Jakarta ee Alfresco:ScriptTaskListener未执行javascript代码,jakarta-ee,alfresco,Jakarta Ee,Alfresco,我正在alfresco中构建一个自定义工作流,我正在设置两个执行变量的值,如下所示 <startEvent id="startevent1" name="Start" activiti:formKey="swwf:AssignmentTask"> <extensionElements> <activiti:executionListener event="complete" class="org.alfresco.repo.workflo
<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>
bpm:startTask
翻译
假的
假的
cm:人
假的
假的
审核人
假的
假的
cm:人
假的
假的
您对javascript没有被执行有多大把握
如果在project name repo/src/main/amp/config/alfresco/module/project name repo
中没有如下适当的日志级别设置:log4j.logger.org.alfresco.repo.jscript.ScriptLogger=DEBUG
,那么您可能无法在日志中获得任何输出
如果您感到困惑,无法验证是否正确加载了log4j.properties,请尝试logger.error(“消息”)代码>以确保js代码段是否正确执行
将信息/调试消息记录为错误是非常不可取的,事实上这违反了编码标准,因此在控制台中验证日志消息后,请确保返回到logger.log()
我相当肯定你设置听众的方式有问题
activiti:executionListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
您正在调用executionListener,但为其分配了任务侦听器类。此外,“完成”是任务侦听器事件,而不是执行事件。如果您希望在提交开始表单时触发此事件,则需要将事件更改为“开始”。相反,应该是这样的:
activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
此外,正在运行的脚本也存在问题。我只是有基本相同的东西
task.getVariable(swwf\u translator)
当您引用一个属性本身而不是它的内容(就像您在这里)时,您需要将该属性括在引号中。否则,任务将尝试获取一个变量,并将swwf_translator的值解释为引用不同变量的字符串。如下所示:task.getVariable(“swwf\u转换器”)
您不能在开始事件中实际引用“任务”。这是因为启动事件基本上在流程开始之前,而不是一项任务。因此,试图以这种方式从中获取价值是行不通的。(这就是我的SO问题。请查看那里的回答。)
如果您试图在流程中传递这些值,则可能需要使用方面。如果您使用这些字段创建一个方面,将其设置为开始任务的强制方面,并引用这些字段(确保您没有像我错误地引用方面本身),那么您在开始表单中输入的信息将自动放入执行级别。事实上,您还应该能够为其他表单下拉它,只需让它们也使用给定的方面,而不必编写task.setVariableLocal(xxx,execution.getVariable(xxx))之类的脚本
我认为您试图设置执行值的方式通常不应该起作用(忽略上述原因)<代码>execution.setVariable('translator',task.getVariable(swwf_translator))代码>而不是“translator”,您应该使用完整id“swwf_translator”,就像您对任务部分所做的那样
为什么你这么肯定代码没有被执行?如果是因为看不到日志消息,也可能需要提高日志级别。默认情况下不会打印这些消息。我已经设置了log4j.properties以增加要调试的日志级别,@Basil您在说什么日志级别?根记录器?javascript记录器?你是如何设置log4j的?