流转后如何获取下个环节任务id

前端页面中工作流组件提供的有流转成功事件,但此事件中获取的task值不是最终写入数据库可以进行流转的,要获取写入数据库可以流转的值需要在后端事件实现。

后端事件中实现是需要定义post类型的服务,然后在事件中调用服务,服务中通过流程信息可以获取。

代码如下:

需要import的类:

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

获取代码:

    HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
    InputStream  is =request.getInputStream();
    String taskInfo = IOUtils.toString(is);
    JSONObject task = JSON.parseObject(taskInfo);

一个环节一个执行者


    JSONArray activeAIs = task.getJSONArray("activeAIs");
    String taskID = activeAIs.getJSONObject(0).getString("task");

一个环节多个执行者

    /**    一个环节多人执行
        抢占模式(或签,一个人同意即可),选择任何一个task的值进行继续流转就可以
        顺序模式(依次顺序处理),按获取顺序执行
        共同模式(会签(须所有人同意)),可以不按顺序执行

    */
    JSONArray activeAIs = task.getJSONArray("activeAIs");
    List<String> taskIDs = new ArrayList<String>();    
    JSONArray executorTasks = activeAIs.getJSONObject(0).getJSONArray("executorTasks");        
    for(int i=0;i<executorTasks.size();i++) {
        taskIDs.add(executorTasks.getJSONObject(i).getString("task"));
    }

    String taskIDsStr = StringUtils.join(taskIDs,","));

并行多个环节每个环节一个执行者

    JSONArray activeAIs = task.getJSONArray("activeAIs");
    List<String> taskIDs = new ArrayList<String>();    
    for(int i=0;i<activeAIs.size();i++) {                    
        taskIDs.add(activeAIs.getJSONObject(i).getString("task"));        
    }
    String taskIDsStr = StringUtils.join(taskIDs,","));

并行多个环节,环节中多人处理

    JSONArray activeAIs = task.getJSONArray("activeAIs");
    List<String> taskIDs = new ArrayList<String>();    
    for(int i=0;i<activeAIs.size();i++) {                
        JSONArray executorTasks = activeAIs.getJSONObject(i).getJSONArray("executorTasks");        
        for(int j=0;j<executorTasks.size();j++) {
            taskIDs.add(executorTasks.getJSONObject(j).getString("task"));
        }
    }
    String taskIDsStr = StringUtils.join(taskIDs,","));

results matching ""

    No results matching ""

    results matching ""

      No results matching ""