与 Java 类相比,使用表达式委托有什么好处?

Pau*_*uey 3 java business-process-management bpmn camunda

在camunda中使用表达式委托而不是java类是否有一些好处

isu*_*u89 8

我唯一能想象在 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引擎完成,并且有一个限制,必须有一个公共的默认构造函数。这是非常有限的,因为大多数实际应用程序都有依赖关系,并且必须在代码之前已经初始化。您要么必须将依赖项设为单例(我从不推荐),要么使用工厂在代码之前创建实例(效率低下且难以测试)。

希望这能澄清你的问题。