ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

flowable任务监听器 事件监听器

2021-05-25 21:07:42  阅读:336  来源: 互联网

标签:String flowable restUrl params 事件 监听器 paramMap requestFactory


任务监听器:针对UserTask节点
事件监听器:针对任意节点
使用场景:实际情况下可能会在节点开始或结束之后调用业务系统的接口去做同步数据之类的业务处理。


一、定义任务监听器

@Scope
@Component(value = "taskBusinessCallListener")
public class TaskBusinessCallListener extends BusinessCallListener implements TaskListener {
    /**
     * rest接口
     */
    private FixedValue restUrl;
    /**
     * 参数 多个的话用分号隔开 实例 userCode:00004737;status:1
     */
    private FixedValue params;

    @Override
    public void notify(DelegateTask delegateTask) {
        String processInstanceId = delegateTask.getProcessInstanceId();
        String restUrlStr = null, paramsStr = null;
        if (restUrl != null) {
            restUrlStr = restUrl.getExpressionText();
        }
        if (params != null) {
            paramsStr = params.getExpressionText();
        }
        //执行回调
        restUrlStr = "http://localhost:8501/hznet-gn/floodDispatch/syncDispatch";
        paramsStr = "status:1";
        this.callBack(processInstanceId, restUrlStr, paramsStr);
    }
}

二、接口调用

public void callBack(String pocessInstanceId, String restUrl, String params) {
        String paramsJson = null;
        try {
            //Map<String, Object> paramMap = new HashMap<String, Object>();
            //获取变量
            Map<String, Object> paramMap = runtimeService.getVariables(pocessInstanceId);
            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(pocessInstanceId).singleResult();
            paramMap.put("businessKey", processInstance.getBusinessKey());
            this.setParams(params, paramMap);
            paramsJson = JSON.toJSONString(paramMap);
            //设置超时时间,否则会报超时错误
            HttpComponentsClientHttpRequestFactory requestFactory=new HttpComponentsClientHttpRequestFactory();
            requestFactory.setReadTimeout(30000);
            requestFactory.setConnectionRequestTimeout(30000);
            requestFactory.setConnectTimeout(30000);
            restTemplate=new RestTemplate(requestFactory);
            //调用业务方法
            logger.info("开始调用业务系统接口" + restUrl + ",业务参数:" + paramsJson);
            restTemplate.postForObject(restUrl, paramsJson, String.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

三、配置监听

流程定义xml中的delegateExpression与监听类对应!

标签:String,flowable,restUrl,params,事件,监听器,paramMap,requestFactory
来源: https://blog.51cto.com/u_14318784/2812531

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有