从 Java class 将变量设置到 Activiti

Set variable into Activiti from Java class

我正在使用 Alfresco 和 Activiti 工作流。我的工作流程之一需要连接到外部数据库并获取一些用户名。这些用户名将是分配给某些工作流任务的用户。

此刻,我的 "solution" 正在创建一个 Java class 和 JDBC 来检索所需的用户名,并创建一个调用此 Java class,但我不知道如何继续。

我正在寻找解决方案,但没有找到任何解决方案。有什么建议吗?

谢谢。

您的 Java 服务任务 class 应该实现接口 org.activiti.engine.delegate.JavaDelegate,它得到一个 DelegateExecution 传递给它的 execute 方法。

DelegateExecution对象上,可以调用setVariable设置工作流变量。

public class MyServiceTask implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) {
        // Do something to get the data for your variable
        Object value = ...;

        // Set the variable
        execution.setVariable("VARNAME", value);
    }
}

参见Activiti user guide and API documentation

您的另一个选择是将任务侦听器 class 添加到您要分配给从数据库中提取的用户的任务中。您可以将任务侦听器分配给 "assign" 事件,从而能够进行动态分配。

这种方法的好处是,如果此分配逻辑仅在流程中使用一次,则无需使用流程变量。