使用表达式委托相比Java类有哪些好处?

7

在Camunda中,使用表达式委托是否比使用Java类有优势?

1个回答

13

我所能想象使用表达式委托而不是Java类的唯一理由是,每当我的自定义代码类需要使用依赖注入从Spring beans中加载时,特别是在您想要通过应用程序控制委托实例的生命周期而不是Camunda运行时引擎时。

简单地说,通过使用表达式委托,我们可以像希望的那样使用Spring DI初始化委托类,而不让Camunda引擎对其进行初始化。并且可以利用DI的所有优势。

场景是,我们希望从Spring beans加载委托类,在其中运行我们的委托代码之前需要注入运行时依赖项。因此,我们可以使用Spring beans初始化其他对象依赖项,并创建一个引用委托类并注入其他已初始化的beans的bean。例如:

<serviceTask id="paymentTask" camunda:delegateExpression="${myPaymentBean}" />
在上述代码中,myPaymentBean是由Spring解析的实例,并且它将是已通过依赖注入(DI)初始化所需依赖项的JavaDelegate实例。我们使用了DI,因为我们的业务逻辑需要在进入生产之前进行彻底测试,并且更容易编写自动化测试。
如果您使用Java类,则实例初始化部分将由Camunda引擎完成,并存在一个限制,即必须有一个公共默认构造函数。这非常有限,因为大多数实际应用程序都具有依赖项,并且必须在代码之前进行初始化。您要么必须将依赖项作为单例(这是我从不建议的),要么使用工厂在代码之前创建实例(这样效率低下且难以测试)。
希望这能解答您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接