如何在Activiti任务中使用自定义变量

时间:2016-03-25 17:00:15

标签: activiti

问题

我有几种Activiti任务类型,基类型为ServiceTaskUserTask

一些ServiceTask类型是Java实现,每个类型都不同。还有其他人。

我想在我的代码中区分它们。

问题

是否可以在任务中存储一些自定义属性/属性,如果可以,如何存储?

实施例: 实现简单日志记录功能的ServiceTask应具有属性" TYPE"价值"记录"然后我可以稍后查询。

我尝试使用FieldExtension,但是当我运行工作流程时,Activiti会抛出错误:

org.activiti.engine.ActivitiIllegalArgumentException: Field definition uses unexisting field 'TYPE'

CustomProperty也是如此。

当然,我可以通过声明Java类中的字段来解决这个问题,但我需要一个适用于非Java服务任务和用户任务的解决方案。或者更好的是,如果可能的话,所有流量元素。

非常感谢!

1 个答案:

答案 0 :(得分:4)

您可以在XML / Designer中定义字段:

def add_50_credits(self, request, queryset):
    queryset.values('id').update(account_balance=F('account_balance') + 50)
    self.message_user(request, "50 credits added.")

如果要访问Java代码中的字段,可以这样做:

<serviceTask id="javaService"
    name="Java service invocation"
    activiti:class="org.activiti.examples.bpmn.servicetask.ToUppercase">
    <extensionElements>
      <activiti:field name="text" stringValue="Hello World" />
  </extensionElements>
</serviceTask>

如果要在UserTask中访问变量,则必须实现TaskListener而不是JavaDelegate。

相关问题