Flowable动态配置监听器

网友投稿 2097 2022-11-21

Flowable动态配置-

Flowable动态配置-

很久没有写博客,承蒙诸位流程爱好者的关心和爱护,鄙人才疏学浅,但尽管如此,我也是依然让自己为社会做点贡献,帮助那些需要帮助的人能节约时间和少走弯路,这也是我的初衷。自立立人,自达达人。

flowable提供了在线配置-的形式,然而如何能把-配置用到最好,还是需要多思考,同时也需要储备一些技术知识点,在实际场景中,流程执行过程或结束的时候需要调用业务系统接口,怎么样才能一次配置多处使用呢,这也是我们今天要讲的话题。

动态配置-,一处配置多处使用

​​目标:尽可能少硬编码编写-,让程序更加健壮,减轻程序员的负担​​​​第一 、编写可执行的动态配置-,这里我们拿流程实例执行监听打样,其他的也都如此​​​​第二 、编写动态调用业务接口的通用方式 DynamicCallbackServiceImpl​​​​第三 、现在我们看看如何动态配置​​​​总结、至此我们所有的动态配置通用执行-已经完毕,至于任务-,我们一样也可以配置成这样子,这个大家可以自行完成。如有错误之处,还望诸位仁兄多多批评指正。​​

目标:尽可能少硬编码编写-,让程序更加健壮,减轻程序员的负担

学会动态配置学会动态调用

第一 、编写可执行的动态配置-,这里我们拿流程实例执行监听打样,其他的也都如此

@Component(value = "executionBusinessCallListener")public class ExecutionBusinessCallListener implements ExecutionListener { /** * nacos的服务id */ private FixedValue serviceId; /** * 访问的url路径 */ private FixedValue url; /** * 参数 多个的话用分号隔开 实例 userCode:00004737;status:1 */ private FixedValue params; @Autowired private IDynamicCallbackService dynamicCallbackService; @Override public void notify(DelegateExecution execution) { String processInstanceId = execution.getProcessInstanceId(); String businessKey = execution.getProcessInstanceBusinessKey(); String serviceIdStr = null, urlStr = null, paramsStr = null; if (serviceId != null) { serviceIdStr = serviceId.getExpressionText(); } if (url != null) { urlStr = url.getExpressionText(); } if (params != null) { paramsStr = params.getExpressionText(); } Map params = new HashMap<>(); params.put("processInstanceId", processInstanceId); params.put("params", paramsStr); params.put("businessKey", businessKey); dynamicCallbackService.postCallback(serviceIdStr, urlStr, params); }}

第二 、编写动态调用业务接口的通用方式 DynamicCallbackServiceImpl

public class DynamicCallbackServiceImpl implements IDynamicCallbackService { @Autowired private LoadBalancerClient loadBalancerClient; @Autowired private RestTemplate restTemplate; @Override public JSONObject postCallback(String serviceId, String url, Map params) { return this.callback(serviceId, url, HttpMethod.POST, params); } @Override public JSONObject getCallback(String serviceId, String url, Map params) { return this.callback(serviceId, url, HttpMethod.GET, params); } @Override public JSONObject callback(String serviceId, String url, HttpMethod method, Map params) { JSONObject forObject = null; ServiceInstance serviceInstance = loadBalancerClient.choose(serviceId); if (serviceInstance != null) { StringBuffer callbackurl = new StringBuffer(""); if (serviceInstance.isSecure()) { callbackurl.APPend(" } else { callbackurl.append(" } callbackurl.append(serviceInstance.getHost()).append(":").append(serviceInstance.getPort()); if (url.substring(0, 1).equals("/")) { callbackurl.append(url); } else { callbackurl.append("/").append(url); } if (HttpMethod.GET.equals(method)) { forObject = restTemplate.getForObject(callbackurl.toString(), JSONObject.class, params); } else if (HttpMethod.POST.equals(method)) { HttpHeaders requestHeaders = getRequestHeaders(); HttpEntity requestEntity = new HttpEntity(params, requestHeaders); forObject = restTemplate.postForObject(callbackurl.toString(), requestEntity, JSONObject.class); } } return forObject; } private HttpHeaders getRequestHeaders(){ HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setContentType(MediaType.APPLICATION_JSON); return requestHeaders; }}

第三 、现在我们看看如何动态配置

总结、至此我们所有的动态配置通用执行-已经完毕,至于任务-,我们一样也可以配置成这样子,这个大家可以自行完成。如有错误之处,还望诸位仁兄多多批评指正。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring学习(1) 初识Spring
下一篇:Oracle 之 表新增字段后修改字段顺序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~