【问题标题】:camunda - deployment fluent BPMN model API in spring bootcamunda - 在 Spring Boot 中部署流畅的 BPMN 模型 API
【发布时间】:2018-01-18 16:10:30
【问题描述】:

我想问一下spring boot中使用流畅的BPMN模型API的camunda流程。 设置自动部署和重新部署(版本控制)的最佳做法是什么?

@Configuration
public class BpmProcess {

    private final Log logger = LogFactory.getLog(getClass());

    @Autowired
    private ProcessEngine processEngine;

    @Bean
    public BpmnModelInstance bpmnModelInstance() {
        BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("esign-store")
                .name("esign store document")
                .startEvent("esign-startEvent")
                .serviceTask("esign-uploadStorage")
                    .name("upload to storage")
                    .camundaAsyncBefore()
                    .camundaDelegateExpression("${uploadStorageDelegate}")
                .serviceTask("esign-uploadCezar")
                    .name("upload to cezar")
                    .camundaAsyncBefore()
                    .camundaDelegateExpression("${uploadCezarDelegate}")
                .endEvent("esign-endEvent")
                    .camundaAsyncBefore()
                    .messageEventDefinition("esign-endEventDefinition")
                .done();

        MessageEventDefinition event = modelInstance.getModelElementById("esign-endEventDefinition");
        event.setCamundaDelegateExpression("${endReplyDelegate}");
        Bpmn.writeModelToStream(System.out, modelInstance);

        return modelInstance;

    }

    @PostConstruct
    public void deploy(){
        processEngine.getRepositoryService()
                .createDeployment()
                .addModelInstance("esign-store.bpmn", bpmnModelInstance())
                .name("esign-store-service")
                .deploy();
    }

}

不知道对不对。

【问题讨论】:

    标签: spring-boot camunda camunda-modeler


    【解决方案1】:

    @PostConstruct 太早了,你必须等到引擎设置好并运行。使用 camunda spring boot,您可以监听 PostDeployEvent 并将其用作钩子:

     @SpringBootApplication
     @EnableProcessApplication
     public class MyApp {
       ...
       @EventListener
       public void onStart(PostDeployEvent event) {
           // deploy here
       }
     }
    

    【讨论】:

    • 感谢您的回复。它工作正常,但我有另一个问题。我正在使用 spring 集成从 amqp 开始进程。问题是 amqp bean 在部署流程之前被配置。我不知道如何设置配置类的顺序,以便在 postDeployEvent 之后配置 amqp bean。
    • 我能够使用 controlBus 解决配置顺序。 @Jan 谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多