流转后如何获取下个环节任务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,","));