|
@@ -0,0 +1,111 @@
|
|
1
|
+package com.horizon.wf.core.rule;
|
|
2
|
+
|
|
3
|
+import cn.hutool.http.HttpUtil;
|
|
4
|
+import com.horizon.common.constant.Constants;
|
|
5
|
+import com.horizon.wf.bean.WorkParaBean;
|
|
6
|
+import com.horizon.wf.core.runtime.RunningData;
|
|
7
|
+import com.horizon.wf.definition.pub.IFlowNode;
|
|
8
|
+import com.horizon.wf.entity.db.DBTrack;
|
|
9
|
+import com.horizon.wf.entity.db.DBWork;
|
|
10
|
+import com.horizon.wf.entity.user.IRunUser;
|
|
11
|
+import com.horizon.wf.global.StaticVarExtend;
|
|
12
|
+
|
|
13
|
+import java.util.HashMap;
|
|
14
|
+import java.util.List;
|
|
15
|
+import java.util.Map;
|
|
16
|
+
|
|
17
|
+/**
|
|
18
|
+ * 客商 业务相关的事件触发器
|
|
19
|
+ *
|
|
20
|
+ */
|
|
21
|
+public class BasPartnerRule extends BaseRuleImpl implements IBaseRule {
|
|
22
|
+
|
|
23
|
+ /**
|
|
24
|
+ * 具体的实现,参考下面方法中的说明,所有的实现都差不多结构,
|
|
25
|
+ * 只有自定义的异常处理接口实现中是没有传入 runningdata的.
|
|
26
|
+ * 不同的接口 仅仅是额外传入的参数有些差异,额外的参数多数都是可以从runningdata中获取的
|
|
27
|
+ * 系统为了方便接口的实现,额外传入了一些认为会用到的参数
|
|
28
|
+ * @return
|
|
29
|
+ */
|
|
30
|
+ @Override
|
|
31
|
+ public boolean executeRule() {
|
|
32
|
+ // 从引擎获取到核心数据对象(如果接口没有额外传入需要的数据时,可以从此对象中获取)
|
|
33
|
+ RunningData runningdata = getRunningdata();
|
|
34
|
+ Map<String, String> flowVar = runningdata.getFlowVar().getAllFlowVarMap();
|
|
35
|
+
|
|
36
|
+ //事件处理类额外传入参数
|
|
37
|
+ // 1.执行事件的节点对象
|
|
38
|
+ IFlowNode eventNode = (IFlowNode) getParameter(StaticVarExtend.Parameter_IFlowNode);
|
|
39
|
+
|
|
40
|
+ // 2.当前节点对象
|
|
41
|
+ IFlowNode curNode = (IFlowNode)getParameter(StaticVarExtend.Parameter_Current_IFlowNode);
|
|
42
|
+ // 3.引擎调用时,传入的参数对象
|
|
43
|
+ WorkParaBean paraBean = (WorkParaBean)getParameter(StaticVarExtend.Parameter_WorkParaBean);
|
|
44
|
+ // Map<String, String> varMap = paraBean.getFlowVarMap();
|
|
45
|
+ String action = paraBean.getActionname();
|
|
46
|
+ // 4.当前实例对象
|
|
47
|
+ DBWork work = (DBWork)getParameter(StaticVarExtend.Parameter_DBWork);
|
|
48
|
+ // 5.当前执行人对象
|
|
49
|
+ IRunUser user = (IRunUser) getParameter(StaticVarExtend.Parameter_RunUser);
|
|
50
|
+ // 6.当前路径对象
|
|
51
|
+ DBTrack track = (DBTrack)getParameter(StaticVarExtend.Parameter_DBTrack);
|
|
52
|
+ int status = track.getFlowstatus();
|
|
53
|
+ String nodeId = track.getNodeid();
|
|
54
|
+ String statusName = track.getFunname();
|
|
55
|
+ String nodeName = track.getNodename();
|
|
56
|
+ // 7.需要保存的SQL数据如果需要引擎来保存,请放入此 map中(key=SQL,value=List为SQL中对应的参数)
|
|
57
|
+ Map<String, List<Object>> dataMap = (Map<String, List<Object>>) getParameter(StaticVarExtend.Parameter_SaveMap);
|
|
58
|
+ // 8.事件类型
|
|
59
|
+ String eventType = (String)getParameter("eventType");
|
|
60
|
+ // 9.事件实际执行内容
|
|
61
|
+ // 10.返回 true 表示执行成功,引擎从第7步中的dataMap里获取需要保存的数据,引擎继续往下执行,
|
|
62
|
+ // 返回 false表示执行失败, 引擎会根据事件类型,确定是否继续往下执行
|
|
63
|
+
|
|
64
|
+ System.err.println(
|
|
65
|
+ ",status:" + status +
|
|
66
|
+ ",nodeId:" + nodeId +
|
|
67
|
+ ",nodeName:" + nodeName +
|
|
68
|
+ ",statusName:" + statusName +
|
|
69
|
+ ",action:" + action +
|
|
70
|
+ ",eventNodeId:" + eventNode.getNodeid() +
|
|
71
|
+ ",eventNodeName:" + eventNode.getNodename());
|
|
72
|
+
|
|
73
|
+ if(eventNode.getNodeid().contains("End")){
|
|
74
|
+ status = 170;
|
|
75
|
+ }else if(eventNode.getNodeid().equals("Node1")){
|
|
76
|
+ if(statusName.equals("JumpReject") || statusName.equals("Reject")){
|
|
77
|
+ status = 130;
|
|
78
|
+ }else if(statusName.equals("Getback")){
|
|
79
|
+ status = 190;
|
|
80
|
+ }else if(statusName.equals("autofirst")){
|
|
81
|
+ status = 110;
|
|
82
|
+ }
|
|
83
|
+ }else {
|
|
84
|
+ status = 110;
|
|
85
|
+ }
|
|
86
|
+
|
|
87
|
+ // 业务使用
|
|
88
|
+ // flowVar就是业务传递过来的参数集
|
|
89
|
+ // 获取这里面的变量需要在流程中配置——流程建模时,右键——**属性设置——流程变量——添加变量——要不然获取不到变量
|
|
90
|
+ final String url = Constants.WF_PRE_URL + "/bas/Partner/horizonAcceptSubmit";
|
|
91
|
+ System.err.println(flowVar.toString());
|
|
92
|
+ String id = flowVar.get("id");
|
|
93
|
+ final Map<String, Object> params = new HashMap<>();
|
|
94
|
+ System.err.println(url);
|
|
95
|
+ params.put("id", id);
|
|
96
|
+ params.put("processInstanceStatus", status);
|
|
97
|
+ Constants.EXECUTOR_SERVICE.submit(new Runnable() {
|
|
98
|
+ @Override
|
|
99
|
+ public void run() {
|
|
100
|
+ // final url params
|
|
101
|
+ String result = HttpUtil.post(url, params);
|
|
102
|
+ System.err.println("result:" + result);
|
|
103
|
+ }
|
|
104
|
+ });
|
|
105
|
+// String result = HttpUtil.post(url, params);
|
|
106
|
+// System.err.println("result:" + result);
|
|
107
|
+ return true;
|
|
108
|
+ }
|
|
109
|
+}
|
|
110
|
+
|
|
111
|
+
|