我们正在使用 bpm 对流程进行建模,并在 Spring 环境中使用 camunda 引擎执行所述 bpm。在一种情况下,我想在两个用户任务之间执行自定义 Java 代码。通过阅读大量 camunda 文档,我得出的结论是,我最适合使用服务任务概念。
我想做两件事,一是在服务任务中存储多个流程变量,二是动态定义,哪些流程变量映射到服务任务的哪个输入参数
据我所知,Camunda 提供了两种将 Java 代码与服务任务集成的方法:
1.) 声明一个实现 JavaDelegate 接口的 Spring-Bean。(该方法获取一个 DelegateExecution 作为参数)。这将允许我存储任意数量的结果变量,但我看不到定义映射过程变量-> 输入变量的选项。
2.) 声明一个可供 camunda 访问的通用 Spring bean,并定义该 bean 由系统任务执行的方法。这允许我通过 bpm-definition 指定流程变量 -> 输入变量模式,但最多存储一个结果变量。
那么,有没有办法同时实现呢?
澄清
为了阐明我的要求,有时我的系统任务可能会检测到不一致的状态(在数据库或进程变量中)。我希望任务在流程变量中存储错误代码(类似于程序“exit(1)”的错误代码),以便后续用户任务有机会纠正错误。这个错误代码也可以存储在流程变量中的固定位置,但是我希望能够将至少一个“真实结果”放在指定位置。