【问题标题】:What are the benefits of using expression Delegates over Java classes?使用表达式委托而不是 Java 类有什么好处?
【发布时间】:2018-12-17 18:02:38
【问题描述】:

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

【问题讨论】:

    标签: java bpmn business-process-management camunda


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 2010-12-31
      • 2010-09-14
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多