一.为什么要接入camel?
实际大部分很多审批流包括请假,离职等都要人为操作审批,审批通过后要和其他系统进行业务交互,比如发送mq,同步/异步调用http,调用rpc请求(thrift/grpc等),生成本地文件等等,也可能要和其他异构语言交互,毕竟一个大型公司肯定会有很多语言,也会有很多历史逻辑,所以这时就可以用上camel,camel提供了很多组件,让activiti接入的也可以使用
Activiti6接入camel的方法有很多种方式,因为activiti提供了很多扩展点,我提供两种我们项目中使用的方法
1.通过流程图设计增加活动列表-服务任务组件(serviceTask)
<serviceTask id="camel" activiti:class="org.activiti.camel.CamelBehavior">
<extensionElements>
<activiti:field name="camelContext">
<activiti:string>camel</activiti:string>
</activiti:field>
<activiti:field name="camelRoute">
<activiti:string>direct:start</activiti:string>
</activiti:field>
</extensionElements>
</serviceTask>
2.通过重写complete()接口通过责任链模式去实现camel路由的启动
producerTemplate.sendBody("direct:开始", "Hello Everyone");