提问者:小点点

ScriptTaskListener javascript代码未执行


我正在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>

共2个答案

匿名用户

有多确定那个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问题中遇到了基本相同的问题。

    null