JmsBpmTestCaseConsumer.java
9.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
//package com.hotent.runtime.jms;
//
//import javax.annotation.Resource;
//
//import com.hotent.bpm.api.service.BoDataService;
//import com.hotent.bpm.util.BoDataUtil;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
//import org.springframework.jms.annotation.JmsListener;
//import org.springframework.security.core.context.SecurityContextHolder;
//import org.springframework.stereotype.Service;
//
//import com.fasterxml.jackson.databind.JsonNode;
//import com.fasterxml.jackson.databind.node.ArrayNode;
//import com.fasterxml.jackson.databind.node.ObjectNode;
//import com.hotent.base.constants.JmsConstant;
//import com.hotent.base.context.BaseContext;
//import com.hotent.base.jms.JmsProducer;
//import com.hotent.base.model.CommonResult;
//import com.hotent.base.query.PageList;
//import com.hotent.base.query.QueryFilter;
//import com.hotent.base.query.QueryOP;
//import com.hotent.base.util.AppUtil;
//import com.hotent.base.util.Base64;
//import com.hotent.base.util.BeanUtils;
//import com.hotent.base.util.ExceptionUtil;
//import com.hotent.base.util.JsonUtil;
//import com.hotent.base.util.StringUtil;
//import com.hotent.base.util.time.DateUtil;
//import com.hotent.bpm.api.constant.OpinionStatus;
//import com.hotent.bpm.persistence.manager.BpmProcessInstanceManager;
//import com.hotent.bpm.persistence.manager.impl.BpmCheckOpinionManagerImpl;
//import com.hotent.bpm.persistence.model.AutoTestModel;
//import com.hotent.bpm.persistence.model.DefaultBpmProcessInstance;
//import com.hotent.bpm.persistence.util.BpmUtil;
//import com.hotent.bpm.persistence.util.PublishAutoTestEventUtil;
//import com.hotent.runtime.constant.SysObjTypeConstants;
//import com.hotent.runtime.manager.BpmTestCaseLogsManager;
//import com.hotent.runtime.manager.BpmTestCaseManager;
//import com.hotent.runtime.manager.IFlowManager;
//import com.hotent.runtime.manager.IProcessManager;
//import com.hotent.runtime.model.BpmTestCase;
//import com.hotent.runtime.model.BpmTestCaseLogs;
//import com.hotent.runtime.params.DoEndParamObject;
//import com.hotent.runtime.params.DoNextParamObject;
//import com.hotent.uc.api.impl.model.UserFacade;
//import com.hotent.uc.api.impl.util.ContextUtil;
//
//import java.util.List;
//
//@Service
//@ConditionalOnProperty(value="jms.enable", matchIfMissing = true)
//public class JmsBpmTestCaseConsumer {
// private static final Logger logger = LoggerFactory.getLogger(JmsBpmTestCaseConsumer.class);
// @Resource
// BpmTestCaseLogsManager bpmTestCaseLogsManager;
// @Resource
// BaseContext baseContext;
// @JmsListener(destination = JmsConstant.BPM_TEST_CASE , containerFactory="jmsListenerContainerQueue")
// public void receiveQueue(AutoTestModel model) throws Exception {
// logger.debug("[JMS]: queue message is :"+model.getClass().getName()+"---"+model);
// autoTest(model);
// }
//
// // 流程仿真测试
// private void autoTest(Object obj) throws Exception{
// if(!(obj instanceof AutoTestModel)) return;
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e1) {
// e1.printStackTrace();
// }
// AutoTestModel model = (AutoTestModel) obj;
//
// if(StringUtil.isEmpty(model.getProcInstId())) return;
// baseContext.setTempTenantId(model.getTenantId());
// BpmProcessInstanceManager bean = AppUtil.getBean(BpmProcessInstanceManager.class);
// BpmTestCaseManager testCase = AppUtil.getBean(BpmTestCaseManager.class);
// DefaultBpmProcessInstance instance = bean.get(model.getProcInstId());
// if(BeanUtils.isEmpty(instance)) return;
// String flowKey = instance.getProcDefKey();
// String nodeId = model.getNodeId();
// instance = (DefaultBpmProcessInstance) bean.getTopBpmProcessInstance(instance);
//
// String sysCode = instance.getSysCode();
// if(StringUtil.isEmpty(sysCode) || !sysCode.startsWith(SysObjTypeConstants.BPMX_AUTO_TEST) ) return;
//
// BpmTestCase bpmTestCase = testCase.get(sysCode.replace(SysObjTypeConstants.BPMX_AUTO_TEST, ""));
//
// // 获取当前的审批动作 {nodeId:actionName}==>> {"userTask1":"agree"}
// String actionName = "agree";
// String destination = "";
// int count = 1;
// String actionType = bpmTestCase.getActionType();
// if(StringUtil.isNotEmpty(actionType) && JsonUtil.toJsonNode(actionType).has(flowKey) ){
// ArrayNode jsonArray = (ArrayNode) JsonUtil.toJsonNode(actionType).get(flowKey);
// ObjectNode parse = JsonUtil.arrayToObject(jsonArray, "nodeId");
// if(parse.has(model.getNodeId())){
// parse = (ObjectNode) parse.get(model.getNodeId());
// actionName = JsonUtil.getString(parse, "actionName",actionName);
// count = JsonUtil.getInt(parse, "count",count);
// }
// }
//
// try {
//
// IProcessManager processService = AppUtil.getBean(IProcessManager.class);
// IFlowManager flowManager = AppUtil.getBean(IFlowManager.class);
//
// if("endProcess".equals(actionName)){
// DoEndParamObject doEndParamObject = new DoEndParamObject();
// doEndParamObject.setEndReason("流程仿真测试--人工结束流程");
// doEndParamObject.setTaskId(model.getTaskId());
// processService.doEndProcess(doEndParamObject);
// return;
// }
//
// // bpmDebugger
// String debugger = bpmTestCase.getBpmDebugger();
// if(StringUtil.isNotEmpty(debugger) && !model.getSkipDebugger() ){
// ObjectNode debuggerJo = (ObjectNode) JsonUtil.toJsonNode(debugger);
// if(debuggerJo.has(flowKey)){
// ArrayNode jsonArray = (ArrayNode) debuggerJo.get(flowKey);
// for (JsonNode jsonNode : jsonArray) {
// if(nodeId.equals(jsonNode.asText())){
// throw new RuntimeException("设置了断点, 流程审批到该节点停止了测试用例往下执行,需要继续运行的请在流程实例中点击继续运行。 ");
// }
// }
//
// }
// }
//
// if(OpinionStatus.BACK_TO_START.getKey().equals(actionName) || OpinionStatus.REJECT.getKey().equals(actionName) ){
//
// if( OpinionStatus.REJECT.getKey().equals(actionName)){
// destination = BpmUtil.getRejectPreDestination(model.getTaskId());
// if(StringUtil.isEmpty(destination)){
// throw new RuntimeException("在审批节点[ "+model.getNodeName()+" ] 不支持驳回到上一步的设置,请修改测试用例。 ");
// }
// }
//
// // 判断驳回次数
// QueryFilter queryFilter = QueryFilter.build();
// queryFilter.addFilter("proc_inst_id_", model.getProcInstId(), QueryOP.EQUAL);
// queryFilter.addFilter("task_key_", model.getNodeId(), QueryOP.EQUAL);
// queryFilter.addFilter("status_", OpinionStatus.BACK_TO_START.getKey().equals(actionName)?"backToStart":"reject", QueryOP.EQUAL);
// BpmCheckOpinionManagerImpl bpmCheckOpinionManagerImpl = (BpmCheckOpinionManagerImpl) AppUtil.getBean("bpmCheckOpinionManager");
// PageList query = bpmCheckOpinionManagerImpl.query(queryFilter);
// if(BeanUtils.isNotEmpty(query) && query.getTotal()>=count){
// actionName = "agree";
// }
//
// }
//
// //自动下一任务
// BoDataService boDataService = AppUtil.getBean(BoDataService.class);
// List<ObjectNode> boDatas = boDataService.getDataByInst(instance);
// // BO数据前置处理
// ObjectNode data = BoDataUtil.hanlerData(instance, "", boDatas);
// DoNextParamObject doNextParamObject = new DoNextParamObject();
// doNextParamObject.setAccount(model.getRandomAccount());
// doNextParamObject.setActionName(actionName);
// doNextParamObject.setData(Base64.getBase64(JsonUtil.toJson(data)));
// doNextParamObject.setTaskId(model.getTaskId());
// doNextParamObject.setDestination(destination);
// doNextParamObject.setOpinion("流程仿真测试");
// UserFacade userFacade = new UserFacade();
// userFacade.setAccount(doNextParamObject.getAccount());
// SecurityContextHolder.getContext().setAuthentication(null);
// ContextUtil.setCurrentUser(ContextUtil.getUserByAccount(doNextParamObject.getAccount()));
// CommonResult<String> doNext = flowManager.complete(doNextParamObject).get();
//
// if(doNext.getState()){
// PublishAutoTestEventUtil.publishAutoTestEvent(instance.getId());
// }
//
//
// } catch (Exception e) {
// e.printStackTrace();
// ObjectNode objectNode = JsonUtil.getMapper().createObjectNode();
// objectNode.put("id", instance.getId());
// objectNode.put("opeName", "流程[ "+instance.getSubject()+" ]未正常结束: ");
// objectNode.put("reqUrl", "");
// objectNode.put("opeContent", "在审批任务【"+model.getNodeName()+"】出现异常" +
// ExceptionUtil.getExceptionMessage(e));
// objectNode.putPOJO("executionTime", DateUtil.getCurrentDate());
// JmsProducer jmsProducer = AppUtil.getBean(JmsProducer.class);
// jmsProducer.sendToQueue(JsonUtil.toJson(objectNode),JmsConstant.SYS_LOG_QUEUE);
// bpmTestCaseLogsManager.removeById(instance.getId());
// BpmTestCaseLogs logs = JsonUtil.toBean(objectNode, BpmTestCaseLogs.class);
// bpmTestCaseLogsManager.create(logs);
// }finally {
// baseContext.clearTempTenantId();
// }
// }
//}