java - 如何在activiti中设置 boolean 字段

标签 java activiti

我正在尝试设置 org.activiti.engine.impl.bpmn.listener.ScriptTaskListenerautoStoreVariables 字段。

这是包含 taskListeneruserTask

<userTask id="WorkJob.task" name="WorkJob.task" activiti:assignee="${assignee}" activiti:dueDate="${dueDate}">
    <extensionElements>
        <activiti:taskListener event="create" class="org.activiti.engine.impl.bpmn.listener.ScriptTaskListener" >
          <activiti:field name="autoStoreVariables" expression="${true}"/>
          <activiti:field name="script" stringValue="${out:print('hello world')}"/>
          <activiti:field name="language" stringValue="juel" />
        </activiti:taskListener>
    </extensionElements>
</userTask>

出现以下错误:

org.activiti.engine.ActivitiIllegalArgumentException: Incompatible type set on field declaration 'autoStoreVariables' for class org.activiti.engine.impl.bpmn.listener.ScriptTaskListener. Declared value has type org.activiti.engine.impl.el.JuelExpression, while expecting boolean

我尝试了以下方法但没有成功:

<activiti:field name="autoStoreVariables" booleanValue="true"/>

<activiti:field name="autoStoreVariables" stringValue="true"/>

<activiti:field name="autoStoreVariables" expression="true"/>

设置 boolean 字段的正确方法是什么?

最佳答案

根据 Activiti 用户指南 Field Injection部分

It’s possible to inject values into the fields of the delegated classes. The following types of injection are supported:

  • Fixed string values
  • Expressions

看起来不可能直接注入(inject) boolean 值。我认为在你的情况下,解决方案是扩展 ScriptTaskListener ,例如

public class CustomScriptTaskListener extends ScriptTaskListener {

    private Expression autoStoreVariablesExp;

    public void setAutoStoreVariablesExp(Expression autoStoreVariablesExp) {
        this.autoStoreVariablesExp = autoStoreVariablesExp;
    }

    @Override
    public void notify(DelegateTask delegateTask) {
        autoStoreVariables = Boolean.TRUE.equals(autoStoreVariablesExp.getValue(delegateTask));

        super.notify(delegateTask);
    }
}

并用 <activiti:field name="autoStoreVariablesExp" expression="${true}"/> 注入(inject)值.

关于java - 如何在activiti中设置 boolean 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37859525/

相关文章:

java - cxf webclient 因内部错误无法联系 openAM

java - 请求 POJO AXIS2 Web 服务的参数未传递给 POJO

java - 有关 Activiti BPMN 的基本问题

scala - 使用 Akka 构建工作流引擎

java - 无法设置带有文本标题的工具栏?

java - 如何将一个组件包装成多行

activiti - 在 Activiti 中编辑当前流程定义

java - 如何在 Alfresco 中获取 nodeService.getChildAssocs 的 companyHome ?

ruby-on-rails - 将 Activiti Explorer 与 Ruby on Rails 项目集成

java - 何时使用 rowiterator 和 iterator 遍历 Excel 工作表的行