提交 74d82616 编写于 作者: tangyaolong's avatar tangyaolong

修改回退逻辑

上级 14408390
......@@ -98,8 +98,8 @@ public class WFCoreService
@Autowired
private RuntimeService runtimeService;
@Autowired
protected ManagementService managementService;
@Autowired
protected ManagementService managementService;
@Autowired
private WFModelService wfModelService;
......@@ -1095,7 +1095,7 @@ public class WFCoreService
bpmnLayout.execute();
byte[] bs= bpmnXMLConverter.convertToXML(entitymodel);
bmpmfileId=DigestUtils.md5DigestAsHex(bs);
if(bmpmfileId.equals(old.getMd5check()))
if(bmpmfileId.equals(1))
{
log.warn("部署流程没有变化,忽略 name:" + curProcess.getName() + " key " + processDefinitionKey + " deploy " + bmpmfileId);
deployInfo+=curProcess.getName()+" key:" + processDefinitionKey +",流程配置没有变化,忽略发布"+"\r\n";
......@@ -1904,53 +1904,4 @@ public class WFCoreService
});
return true;
}
/**
* @param taskId 当前需要回退的节点
* @return 回退上一个节点
*/
public boolean wfback(String system,String appname,String entity,String taskId) {
try {
Boolean flag = true;
String sourceRef = null;
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskDefinitionKey = task.getTaskDefinitionKey();
if (taskDefinitionKey == null) {
log.debug("taskDefinitionKey不存在");
return false;
}
String processInstanceId = task.getProcessInstanceId();
if (processInstanceId == null) {
log.debug("processInstanceId不存在");
return false;
}
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey());
// 获取历史路径
WFProcessInstance instance = getWFHistory(system, appname, entity, taskDefinitionKey, task.getProcessInstanceId());
if (!ObjectUtils.isEmpty(flowNode) && !ObjectUtils.isEmpty(instance)) {
List<WFProcessNode> usertasks = new ArrayList((Collection<? extends WFProcessNode>) instance.getExtensionparams().get("usertasks"));
for (WFProcessNode node : usertasks) {
for (SequenceFlow flow : flowNode.getIncomingFlows()) {
if (node.getUsertaskid().equals(flow.getSourceRef())&&flow.getSourceRef().startsWith("tid")) {
sourceRef = flow.getSourceRef();
flag = false;
break;
}
}
if (!flag) {
break;
}
}
} else {
return false;
}
// 执行回退
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveActivityIdTo(taskDefinitionKey, sourceRef).changeState();
} catch (Exception e) {
throw new BadRequestAlertException("回退失败","WFCoreService","wfback");
}
return true;
}
}
......@@ -24,4 +24,6 @@ public interface WFCoreMapper {
Page<WFTask> searchUnReadTask(IPage page, @Param("srf") WFTaskSearchContext context, @Param("ew") Wrapper<WFTask> wrapper) ;
Object readTask(@Param("et")Map param);
Map serchSubProcess(@Param("et")Map param);
}
......@@ -30,6 +30,10 @@
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if>
</select>
<select id="serchSubProcess" parameterType="cn.ibizlab.core.workflow.filter.WFTaskSearchContext" resultType="java.util.Map">
select TASK_DEF_KEY_ as taskDefinitionKey from act_hi_taskinst where PROC_INST_ID_ = #{et.processInstanceId} and END_TIME_ is not null order by END_TIME_ desc
</select>
<select id="searchMyTaskCnt" parameterType="cn.ibizlab.core.workflow.filter.WFTaskSearchContext" resultType="cn.ibizlab.core.workflow.domain.WFProcessNode">
......
......@@ -150,11 +150,9 @@ public class WFCoreResource
}
@ApiOperation(value = "wfback", tags = {"wfback" }, notes = "工作流回退")
@RequestMapping(method = RequestMethod.POST, value = "/{system}-app-{appname}/{entity}/{taskId}/back")
public ResponseEntity<Boolean> wfback(@PathVariable("system") String system,@PathVariable("appname") String appname,
@PathVariable("entity") String entity,
@PathVariable("taskId") String taskId){
return ResponseEntity.ok(wfCoreService.wfback(system,appname,entity,taskId));
@RequestMapping(method = RequestMethod.POST, value = "/{taskId}/back")
public ResponseEntity<Boolean> wfback(@PathVariable("taskId") String taskId){
return ResponseEntity.ok(wfCoreService.wfback(taskId));
}
//@PreAuthorize("hasPermission(#entity,'WFSTART',this.getEntity())")
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册