Pau*_*uey 3 java business-process-management bpmn camunda
在camunda中使用表达式委托而不是java类是否有一些好处
我唯一能想象在 Java 类上使用表达式委托的是,每当我的自定义代码类需要使用依赖注入从 spring bean 加载时,特别是在您希望通过应用程序而不是 Camunda 运行时引擎控制委托实例的生命周期的情况下。
简单来说,通过使用表达式委托,我们可以根据需要使用 spring DI 初始化委托类,而无需让 Camunda 引擎对其进行初始化。并利用 DI 的所有优势。
这个场景是我们想要从 spring bean 加载我们的委托类,它需要在我们的委托代码运行之前注入运行时依赖项。因此,我们可以使用 spring bean 来初始化其他对象依赖项,并创建一个 bean 引用注入其他初始化 bean 的委托类。例如,
<serviceTask id="paymentTask" camunda:delegateExpression="${myPaymentBean}" />
Run Code Online (Sandbox Code Playgroud)
在上面,myPaymentBean是从 spring 解析的,它将是一个JavaDelegate已经通过依赖注入(DI)初始化所需依赖项的实例。我们使用 DI,因为我们的业务逻辑需要在投入生产之前进行彻底的测试,并且更容易在它们之上编写自动化测试。
如果使用Java类,那么实例初始化部分将由camunda引擎完成,并且有一个限制,必须有一个公共的默认构造函数。这是非常有限的,因为大多数实际应用程序都有依赖关系,并且必须在代码之前已经初始化。您要么必须将依赖项设为单例(我从不推荐),要么使用工厂在代码之前创建实例(效率低下且难以测试)。
希望这能澄清你的问题。
| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |