在Java类上使用表达式委托有什么好处?

时间:2018-12-17 18:02:38

标签: java bpm camunda

与camunda中的java类相比,使用表达式委托有什么好处

1 个答案:

答案 0 :(得分:2)

我只能想象对Java类使用表达式委托是,每当需要使用依赖注入从Spring bean加载我的自定义代码类时,特别是在您要控制委托实例的生命周期的地方取决于您的应用程序,而不是Camunda运行时引擎。

简单来说,通过使用表达式委托,我们可以根据需要使用spring DI初始化委托类,而无需让Camunda引擎对其进行初始化。并充分利用DI的优势。

这种情况是,我们想从Spring bean加载委托类,在该类中,需要在运行委托代码之前注入运行时依赖项。因此,我们可以使用spring bean来初始化其他对象依赖关系,并创建一个引用委托类的bean,注入其他初始化的bean。例如,

<serviceTask id="paymentTask" camunda:delegateExpression="${myPaymentBean}" />

在上面,myPaymentBean是从spring解析的,它将是JavaDelegate的一个实例,该实例已经通过依赖项注入(DI)进行了必需的依赖项初始化。我们之所以使用DI,是因为我们的业务逻辑在投入生产之前需要进行彻底的测试,并且更容易在其之上编写自动化测试。


如果使用Java类,则实例初始化部分将由camunda引擎完成,并且存在必须存在公共默认构造函数的限制。这是非常有限的,因为大多数实际应用程序都具有依赖性,并且必须在代码之前已经初始化。您要么必须将依赖项设置为单例(我不建议这样做),要么使用工厂在代码之前创建实例(效率低下且难以测试)。

希望这可以澄清您的问题。