Browse Source

@IPU_FIXBUG_2022@修复注册接口bug;增加注册中心列表,用于动态管理注册中心配置;增加组织下用户处理逻辑模板

weihf 3 years ago
parent
commit
9a872f5559

+ 3 - 1
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/LogicService.java

@ -13,7 +13,9 @@ public interface LogicService {
13 13
14 14
    public Object execute(String logicName, JMap param) throws Exception;
15 15
    public String registerFlow(String flowXml) throws Exception;
16
    public String registerModel(String modelXml) throws Exception;
16
    public String registerModel(String modelId) throws Exception;
17
    public void unregisterFlow(String flowId) throws Exception;
18
    public void unregisterModel(String modelXml) throws Exception;
17 19
    public void saveFlowToConfigCenter(String flowName, String flowXml) throws Exception;
18 20
    public void saveModelToConfigCenter(String modelName, String modelXml) throws Exception;
19 21
}

+ 29 - 5
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/impl/LogicServiceImpl.java

@ -5,10 +5,13 @@ import com.ai.ipu.basic.log.IpuLoggerFactory;
5 5
import com.ai.ipu.data.JMap;
6 6
import com.ai.ipu.nacos.INacosService;
7 7
import com.github.pagehelper.util.StringUtil;
8
import com.nuosi.flow.data.BDataDefine;
9
import com.nuosi.flow.data.BizDataManager;
8 10
import com.nuosi.flow.logic.LogicFlowEngine;
9 11
import com.nuosi.flow.logic.LogicFlowManager;
10 12
import com.nuosi.flow.logic.model.LogicFlow;
11 13
import com.nuosi.flow.logic.model.domain.DomainModel;
14
import com.nuosi.flow.logic.parse.ModelToDataDefineUtil;
12 15
import com.ipu.logicflow.server.biz.logic.service.LogicService;
13 16
import com.ipu.logicflow.server.util.LogicFlowConfig;
14 17
@ -36,8 +39,14 @@ public class LogicServiceImpl implements LogicService {
36 39
	
37 40
    @Override
38 41
    public Object execute(String logicName, JMap param) throws Exception {
39
        Object result = LogicFlowEngine.execute(logicName, param);
40
        return result;
42
    	if (LogicFlowConfig.getFlowPathMap() != null && 
43
    			LogicFlowConfig.getFlowPathMap().containsKey(logicName))
44
        {
45
    		Object result = LogicFlowEngine.execute(logicName, param);
46
            return result;
47
        }
48
    	else
49
        	return "{\"IPU_RESULT_INFO\":\"执行异常:服务逻辑对象[" + logicName + "]不存在或未注册\",\"IPU_RESULT_CODE\":\"FLOW_NOT_EXISTS\"}";
41 50
    }
42 51
43 52
	@Override
@ -77,11 +86,14 @@ public class LogicServiceImpl implements LogicService {
77 86
		try {
78 87
			xml = new ByteArrayInputStream(modelXml.getBytes(StandardCharsets.UTF_8.name()));
79 88
			//先注册到核心流程引擎
80
			Object result = LogicFlowManager.registerDomainModel(xml);
81
			if (result!=null)
89
			DomainModel domainModel = LogicFlowManager.registerDomainModel(xml);
90
            BDataDefine dataDefine = ModelToDataDefineUtil.parse(domainModel.getId());
91
            BizDataManager.registerDto(dataDefine, true);
92
			
93
			if (domainModel!=null)
82 94
			{
83 95
				//注册成功后再将配置缓存到本地
84
				modelName = ((DomainModel)result).getId();
96
				modelName = domainModel.getId();
85 97
				LogicFlowConfig.addModelPathMap(modelName, modelXml);
86 98
			}
87 99
			else
@ -119,4 +131,16 @@ public class LogicServiceImpl implements LogicService {
119 131
		newConfigInfo.append(modelName).append("==").append(LogicFlowConfig.replaceBlank(modelXml));
120 132
		service.pushConfigToServer(LogicFlowConfig.FLOW_MODEL, "DEFAULT_GROUP", newConfigInfo.toString());
121 133
	}
134
135
	@Override
136
	public void unregisterFlow(String flowId) throws Exception {
137
		//缺少注销方法,因此在执行逻辑处增加判断条件。
138
		LogicFlowConfig.removeFlowPathMap(flowId);
139
	}
140
141
	@Override
142
	public void unregisterModel(String modelId) throws Exception {
143
		BizDataManager.unregisterDto(modelId);
144
		LogicFlowConfig.removeModelPathMap(modelId);	
145
	}
122 146
}

+ 94 - 1
qb-auth-server/src/main/java/com/ipu/logicflow/server/util/LogicFlowConfig.java

@ -10,6 +10,7 @@ import com.nuosi.flow.util.LogicFlowUtil;
10 10
import java.util.HashMap;
11 11
import java.util.Iterator;
12 12
import java.util.Map;
13
import java.util.Optional;
13 14
import java.util.regex.Matcher;
14 15
import java.util.regex.Pattern;
15 16
@ -31,6 +32,8 @@ public class LogicFlowConfig {
31 32
32 33
	private static Map<String, String> modelPathMap = new HashMap<String, String>();
33 34
	private static Map<String, String> flowPathMap = new HashMap<String, String>();
35
	/*  保存配置中心配置列表,用于动态维护配置中心的配置  */
36
	private static Map<String/* 取值:model、flow */, Map<String/* modelPath or flowPath */, Long/* 时间戳,单位为毫秒 */>> configCenterMap = new HashMap<String, Map<String, Long>>();
34 37
35 38
	public static void init() {
36 39
		initModel();
@ -75,6 +78,14 @@ public class LogicFlowConfig {
75 78
	public static void addFlowPathMap(String flowName, String flowXml) {
76 79
		flowPathMap.put(flowName, flowXml);
77 80
	}
81
	
82
	public static void removeModelPathMap(String modelName) {
83
		modelPathMap.remove(modelName);
84
	}
85
86
	public static void removeFlowPathMap(String flowName) {
87
		flowPathMap.remove(flowName);
88
	}
78 89
79 90
	public static String replaceBlank(String str) {
80 91
		String dest = "";
@ -86,7 +97,10 @@ public class LogicFlowConfig {
86 97
		return dest;
87 98
	}
88 99
	
100
	//只有配置中心代码才会调用
89 101
	public static void registerLogicFlow(String flowConfig) throws Exception {
102
		Map<String, Long> flowMap = getConfigCenterMap(FLOW_LOGIC);
103
		Map<String, Long> flowCloneMap = (Map<String, Long>) ((HashMap<String, Long>) flowMap).clone();
90 104
		if (!StringUtil.isEmpty(flowConfig)) {
91 105
			String[] configs = flowConfig.split("\n");
92 106
			int i=0;
@ -96,25 +110,104 @@ public class LogicFlowConfig {
96 110
				{
97 111
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
98 112
					logicService.registerFlow(config[1]);
113
					addConfigCenterMap(FLOW_LOGIC, config[0]);
99 114
					LOG.debug("添加Flow配置成功:" + config[1]);
100 115
				}
116
				flowCloneMap.remove(config[0]);
101 117
			}	
102 118
		}
119
120
		//需要清除配置中心没有的flow数据
121
		try {
122
			LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
123
			flowCloneMap.forEach((k, v) -> {
124
				flowMap.remove(k);
125
				try {
126
					logicService.unregisterFlow(k);
127
				} catch (Exception e) {
128
					e.printStackTrace();
129
				}
130
				});
131
		}finally {
132
			flowCloneMap.clear();
133
		}
134
103 135
	}
104 136
	
137
	//只有配置中心代码才会调用
105 138
	public static void registerLogicModel(String modelConfig) throws Exception {
139
		Map<String, Long> modelMap = getConfigCenterMap(FLOW_MODEL);
140
		Map<String, Long> modelCloneMap = (Map<String, Long>) ((HashMap<String, Long>) modelMap).clone();
106 141
		if (!StringUtil.isEmpty(modelConfig)) {
107 142
			String[] configs = modelConfig.split("\n");
143
			
108 144
			int i=0;
109 145
			for (;i<configs.length;i++) {
110 146
				String[] config = configs[i].split("==");
111
				if (!LogicFlowConfig.getFlowPathMap().containsKey(config[0]))
147
				if (!LogicFlowConfig.getModelPathMap().containsKey(config[0]))
112 148
				{
113 149
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
114 150
					logicService.registerModel(config[1]);
151
					addConfigCenterMap(FLOW_MODEL, config[0]);
115 152
					LOG.debug("添加Model配置成功:" + config[1]);
116 153
				}
154
				modelCloneMap.remove(config[0]);
117 155
			}	
118 156
		}
157
		
158
		//需要清除配置中心没有的model数据
159
		try {
160
			LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
161
			modelCloneMap.forEach((k, v) -> {
162
				modelMap.remove(k);
163
				try {
164
					logicService.unregisterModel(k);
165
				} catch (Exception e) {
166
					e.printStackTrace();
167
				}
168
				});
169
		}finally {			
170
			modelCloneMap.clear();
171
		}
172
		
173
	}
174
	
175
	private static HashMap<String, Long> getConfigCenterMap(String configType) {
176
		if (!configCenterMap.containsKey(configType))
177
			configCenterMap.put(configType, new HashMap<String, Long>());
178
		return (HashMap<String, Long>) configCenterMap.get(configType);
179
	}
180
	
181
	private static void addConfigCenterMap(String configType, String configId) {
182
		Map<String, Long> configsMap = getConfigCenterMap(configType);
183
		if (getConfigIdOptional(configType, configId).isPresent())
184
			configsMap.put(configId, getTimeStamp());
185
		else
186
		{
187
			Map<String, Long> value = new HashMap<String, Long>();
188
			value.put(configId, getTimeStamp());
189
			configCenterMap.put(configType, value);
190
		}
191
	}
192
	
193
	private static boolean removeConfigCenterMap(String configType, String configId) {
194
		Map<String, Long> configsMap = getConfigCenterMap(configType);
195
		if (getConfigIdOptional(configType, configId).isPresent())
196
			return configsMap.remove(configId) == null?true:false;
197
		return false;
198
	}
199
	
200
	private static boolean existConfigCenterMap(String configType, String configId) {
201
		return getConfigIdOptional(configType, configId).isPresent();
202
	}
203
	
204
	private static Optional<Object> getConfigIdOptional(String configType, String configId) {
205
		Map<String, Long> configsMap = getConfigCenterMap(configType);
206
		Optional<Map<String, Long>> configOptional = Optional.ofNullable(configsMap);
207
		return configOptional.map(configMap ->Optional.ofNullable(configMap.get(configId)));
208
	}
209
	
210
	private static long getTimeStamp() {
211
		return System.currentTimeMillis();
119 212
	}
120 213
}

+ 65 - 71
qb-auth-server/src/main/resources/flow/org/model/sec_org_user_rel.xml

@ -1,75 +1,69 @@
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<model id="sec_org_user_rel" name="用户组织信息模型">
3
    <attr id="org_user_rel_id" type="int" name="角色关联用户标识"/>
4
    <attr id="user_id" type="int" name="用户标识"/>
5
    <attr id="organize_id" type="int" name="角色标识"/>
6
    <attr id="valid_date" type="datetime" name="生效日期" exists="false"/>
7
    <attr id="expire_date" type="datetime" name="失效日期" exists="false"/>
8
    <attr id="data_status" type="string" name="数据状态"/>
9
    <attr id="create_date" type="datetime" name="创建日期"/>
10
    <attr id="create_op_id" type="string" name="创建人员" exists="false"/>
11
    <attr id="create_org_id" type="string" name="创建组织" exists="false"/>
12
    <attr id="done_code" type="datetime" name="事务编号" exists="false"/>
13
    <attr id="done_date" type="datetime" name="操作日期" exists="false"/>
14
    <attr id="op_id" type="string" name="操作人员"/>
15
    <attr id="org_id" type="string" name="操作组织" exists="false" />
16
    <attr id="mgmt_district" type="string" name="管理地区" exists="false"/>
17
    <attr id="mgmt_county" type="string" name="管理国家" exists="false"/>
18
    <attr id="region_id" type="string" name="区域ID" exists="false"/>
19
    <attr id="tenant_code" type="string" name="租户编码" exists="false"/>
20
21
    <behavior id="insertOrgUserRel" name="新增用户组织信息">
22
        <function domain="DB" name="insert">
23
            <param value="auth" type="string"/>
24
            <param value="sec_org_user_rel" type="string"/>
25
            <param key="org_user_rel" type="map"/>
26
            <param value="uppercase" type="string"/>
27
        </function>
28
    </behavior>
29
30
    <behavior id="selectOrgUserRel" name="查询用户组织信息">
31
        <function domain="DB" name="select">
32
            <param value="auth" type="string"/>
33
            <param value="sec_org_user_rel" type="string"/>
34
            <param key="org_user_rel" type="map"/>
35
            <param value="uppercase" type="string"/>
36
        </function>
37
    </behavior>
38
39
    <behavior id="updateOrgUserRel" name="修改用户组织信息">
40
        <function domain="DB" name="update">
41
            <param value="auth" type="string"/>
42
            <param value="sec_org_user_rel" type="string"/>
43
            <param key="org_user_rel" type="map"/>
44
            <param value="uppercase" type="string"/>
45
        </function>
46
    </behavior>
47
48
    <behavior id="deletetOrgUserRel" name="删除用户组织信息">
49
        <function domain="DB" name="delete">
50
            <param value="auth" type="string"/>
51
            <param value="sec_org_user_rel" type="string"/>
52
            <param key="org_user_rel" type="map"/>
53
            <param value="uppercase" type="string"/>
54
        </function>
55
    </behavior>
56
    
57
    <behavior id="selectOrgUserRelByUserId" name="根据组织下用户信息列表">
58
        <sql conn="auth">
59
            <![CDATA[
60
            select ORG_USER_REL_ID, ORGANIZE_ID, USER_ID, VALID_DATE, EXPIRE_DATE, DATA_STATUS, CREATE_DATE, CREATE_OP_ID, CREATE_ORG_ID, DONE_CODE, DONE_DATE, OP_ID, ORG_ID, MGMT_DISTRICT, MGMT_COUNTY, REGION_ID, TENANT_CODE
61
            from sec_org_user_rel
62
            WHERE USER_ID = #{user_id} and ORGANIZE_ID = #{organize_id} ;
3
	<attr id="org_user_rel_id" type="int" name="角色关联用户标识" />
4
	<attr id="user_id" type="int" name="用户标识" />
5
	<attr id="organize_id" type="int" name="角色标识" />
6
	<attr id="valid_date" type="datetime" name="生效日期" exists="false" />
7
	<attr id="expire_date" type="datetime" name="失效日期" exists="false" />
8
	<attr id="data_status" type="string" name="数据状态" />
9
	<attr id="create_date" type="datetime" name="创建日期" />
10
	<attr id="create_op_id" type="string" name="创建人员" exists="false" />
11
	<attr id="create_org_id" type="string" name="创建组织" exists="false" />
12
	<attr id="done_code" type="datetime" name="事务编号" exists="false" />
13
	<attr id="done_date" type="datetime" name="操作日期" exists="false" />
14
	<attr id="op_id" type="string" name="操作人员" />
15
	<attr id="org_id" type="string" name="操作组织" exists="false" />
16
	<attr id="mgmt_district" type="string" name="管理地区" exists="false" />
17
	<attr id="mgmt_county" type="string" name="管理国家" exists="false" />
18
	<attr id="region_id" type="string" name="区域ID" exists="false" />
19
	<attr id="tenant_code" type="string" name="租户编码" exists="false" />
20
	<behavior id="insertOrgUserRel" name="新增用户组织信息">
21
		<function domain="DB" name="insert">
22
			<param value="auth" type="string" />
23
			<param value="sec_org_user_rel" type="string" />
24
			<param key="org_user_rel" type="map" />
25
			<param value="uppercase" type="string" />
26
		</function>
27
	</behavior>
28
	<behavior id="selectOrgUserRel" name="查询用户组织信息">
29
		<function domain="DB" name="select">
30
			<param value="auth" type="string" />
31
			<param value="sec_org_user_rel" type="string" />
32
			<param key="org_user_rel" type="map" />
33
			<param value="uppercase" type="string" />
34
		</function>
35
	</behavior>
36
	<behavior id="updateOrgUserRel" name="修改用户组织信息">
37
		<function domain="DB" name="update">
38
			<param value="auth" type="string" />
39
			<param value="sec_org_user_rel" type="string" />
40
			<param key="org_user_rel" type="map" />
41
			<param value="uppercase" type="string" />
42
		</function>
43
	</behavior>
44
	<behavior id="deleteOrgUserRel" name="删除用户组织信息">
45
		<function domain="DB" name="delete">
46
			<param value="auth" type="string" />
47
			<param value="sec_org_user_rel" type="string" />
48
			<param key="org_user_rel" type="map" />
49
			<param value="uppercase" type="string" />
50
		</function>
51
	</behavior>
52
	<behavior id="selectOrgUserRelByUserId" name="根据组织下用户信息列表">
53
		<sql conn="auth">            
54
		<![CDATA[            
55
		select ORG_USER_REL_ID, ORGANIZE_ID, USER_ID, VALID_DATE, EXPIRE_DATE, DATA_STATUS, CREATE_DATE, CREATE_OP_ID, CREATE_ORG_ID, DONE_CODE, DONE_DATE, OP_ID, ORG_ID, MGMT_DISTRICT, MGMT_COUNTY, REGION_ID, TENANT_CODE            
56
		from sec_org_user_rel            
57
		WHERE USER_ID = #{user_id} and ORGANIZE_ID = #{organize_id} ;
58
		]]>
59
		</sql>
60
	</behavior>
61
	<behavior id="deleteOrgUserRelByUserId" name="根据组织下用户信息列表">
62
		<sql conn="auth">
63
		<![CDATA[            
64
		delete from sec_org_user_rel            
65
		WHERE USER_ID = #{user_id} and ORGANIZE_ID = #{organize_id} ;
63 66
        ]]>
64
 from sec_org_user_rel            </sql>
65
    </behavior>
66
    
67
    <behavior id="deleteOrgUserRelByUserId" name="根据组织下用户信息列表">
68
        <sql conn="auth">
69
            <![CDATA[
70
            delete from sec_org_user_rel
71
            WHERE USER_ID = #{user_id} and ORGANIZE_ID = #{organize_id} ;
72
        ]]>
73
        </sql>
74
    </behavior>
67
		</sql>
68
	</behavior>
75 69
</model>

+ 2 - 0
qb-auth-server/src/main/resources/flow/org/model/sec_organize.xml

@ -53,4 +53,6 @@
53 53
            <param value="uppercase" type="string"/>
54 54
        </function>
55 55
    </behavior>
56
    
57
56 58
</model>

+ 52 - 0
qb-auth-server/src/main/resources/flow/org/org_user_rel_combine_select.xml

@ -0,0 +1,52 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_combine_select"
3
            name="用户详情(用户基本信息,用户组织信息)"
4
            desc="用户详情(用户基本信息,用户组织信息)">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_user"/>
8
        <import model="sec_organize"/>
9
        <import model="sec_org_user_rel"/>
10
    </declare>
11
12
    <start id="start" name="开始节点" next="selectOrgUserRel">
13
        <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
14
        <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
15
    </start>
16
17
    <action id="selectOrgUserRel" name="查询组织信息" next="aggregateUser">
18
        <input>
19
            <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
20
            <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
21
        </input>
22
        <behavior model="sec_org_user_rel" id="selectUserOrganizeByUserId"/>
23
        <output>
24
            <var key="org_info"/>
25
        </output>
26
    </action>
27
28
    <action id="aggregateUser" name="聚合用户信息" next="selectUser">
29
        <input>
30
            <var key="user_id" />
31
        </input>
32
        <aggregate />
33
        <output>
34
            <var key="user"/>
35
        </output>
36
    </action>
37
38
    <action id="selectUser" name="查询用户" next="end">
39
        <input>
40
            <var key="user" model="sec_user" attrExists="false"/>
41
        </input>
42
        <behavior model="sec_user" id="selectUser"/>
43
        <output>
44
            <var key="user_info"/>
45
        </output>
46
    </action>
47
    
48
    <end id="end" name="结束节点">
49
        <var key="org_info"/>
50
        <var key="user_info"/>
51
    </end>
52
</logic-flow>

+ 4 - 4
qb-auth-server/src/main/resources/flow/org/org_user_rel_delete.xml

@ -7,13 +7,13 @@
7 7
        <import model="sec_org_user_rel"/>
8 8
    </declare>
9 9
10
    <start id="start" name="开始节点" next="deletetOrgUserRel">
11
        <var key="org_user_rel_cond" model="sec_org_user_rel" attrExists="false"/>
10
    <start id="start" name="开始节点" next="deleteOrgUserRel">
11
        <var key="org_user_rel" model="sec_org_user_rel" attrExists="false"/>
12 12
    </start>
13 13
14
    <action id="deletetOrgUserRel" name="删除组织下人员信息" next="end">
14
    <action id="deleteOrgUserRel" name="删除组织下人员信息" next="end">
15 15
        <input>
16
            <var key="org_user_rel_cond" model="sec_org_user_rel"/>
16
            <var key="org_user_rel" model="sec_org_user_rel" attrExists="false"/>
17 17
        </input>
18 18
        <behavior model="sec_org_user_rel" id="deleteOrgUserRel"/>
19 19
        <output>

+ 29 - 0
qb-auth-server/src/main/resources/flow/org/organize_update.xml

@ -0,0 +1,29 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="organize_update"
3
            name="组织修改"
4
            desc="组织修改">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_organize"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="updateOrganize">
11
        <var key="organize" model="sec_organize" attrExists="false"/>
12
        <var key="organize_cond" model="sec_organize" attrExists="false"/>
13
    </start>
14
15
    <action id="updateOrganize" name="修改组织" next="end">
16
        <input>
17
            <var key="organize" model="sec_organize" attrExists="false"/>
18
            <var key="organize_cond" model="sec_organize" attrExists="false"/>
19
        </input>
20
        <behavior model="sec_organize" id="updateOrganize"/>
21
        <output>
22
            <var key="update_num"/>
23
        </output>
24
    </action>
25
26
    <end id="end" name="结束节点">
27
        <var key="update_num"/>
28
    </end>
29
</logic-flow>

+ 1 - 1
qb-auth-server/src/main/resources/flow/user/user_update.xml

@ -17,7 +17,7 @@
17 17
            <var key="user" model="sec_user" attrExists="false"/>
18 18
            <var key="user_cond" model="sec_user" attrExists="false"/>
19 19
        </input>
20
        <behavior model="sec_user" id="updateUserByCond"/>
20
        <behavior model="sec_user" id="updateUser"/>
21 21
        <output>
22 22
            <var key="update_num"/>
23 23
        </output>

+ 29 - 0
qb-auth-server/src/main/resources/flow/user/user_update_by_cond.xml

@ -0,0 +1,29 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="user_update_by_cond"
3
            name="用户启用"
4
            desc="用户启用">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_user"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="updateUser">
11
        <var key="user" model="sec_user" attrExists="false"/>
12
        <var key="user_cond" model="sec_user" attrExists="false"/>
13
    </start>
14
15
    <action id="updateUser" name="启用用户" next="end">
16
        <input>
17
            <var key="user" model="sec_user" attrExists="false"/>
18
            <var key="user_cond" model="sec_user" attrExists="false"/>
19
        </input>
20
        <behavior model="sec_user" id="updateUserByCond"/>
21
        <output>
22
            <var key="update_num"/>
23
        </output>
24
    </action>
25
26
    <end id="end" name="结束节点">
27
        <var key="update_num"/>
28
    </end>
29
</logic-flow>

+ 20 - 2
qb-auth-server/src/test/java/com/ipu/logicflow/server/OrgUserRelTest.java

@ -69,6 +69,23 @@ public class OrgUserRelTest {
69 69
            Assert.assertTrue(false);
70 70
        }
71 71
    }
72
    
73
    @Test
74
    public void testSelectUserOrganizeByUserId() {
75
        JMap param = new JsonMap();
76
        param.put("organize_id", 33);
77
        param.put("user_id", 308075);
78
79
        try{
80
            JMap result = LogicFlowEngine.execute("org_user_rel_combine_select", param);
81
            System.out.println("执行结果:" + result);
82
            Assert.assertTrue(true);
83
        }catch (Exception e){
84
            e.printStackTrace();
85
            System.out.println("错误信息:" + e.getMessage());
86
            Assert.assertTrue(false);
87
        }
88
    }
72 89
73 90
    @Test
74 91
    public void testDeleteOrgUserRelByUserId(){
@ -89,11 +106,11 @@ public class OrgUserRelTest {
89 106
    
90 107
    @Test
91 108
    public void testDeleteOrgUserRel(){
92
    	String org_user_rel_id = "2";
109
    	int org_user_rel_id = 3;
93 110
        JSONObject org_user_rel_cond = new JSONObject();
94 111
        org_user_rel_cond.put("org_user_rel_id", org_user_rel_id);
95 112
        JMap param = new JsonMap();
96
        param.put("org_user_rel_cond", org_user_rel_cond);
113
        param.put("org_user_rel", org_user_rel_cond);
97 114
        JMap result = null;
98 115
        try {
99 116
            
@ -121,6 +138,7 @@ public class OrgUserRelTest {
121 138
                "flow/org/org_user_rel_delete_by_cond.xml",
122 139
                "flow/org/org_user_rel_select.xml",
123 140
                "flow/org/org_user_rel_select_by_cond.xml",
141
                "flow/org/org_user_rel_combine_select.xml",
124 142
                "flow/user/user_select_by_id.xml",
125 143
                "flow/org/organize_select.xml"
126 144
        };

+ 54 - 20
qb-auth-server/src/test/java/com/ipu/logicflow/server/OrganizeTest.java

@ -2,6 +2,7 @@ package com.ipu.logicflow.server;
2 2
3 3
import com.ai.ipu.data.JMap;
4 4
import com.ai.ipu.data.impl.JsonMap;
5
import com.alibaba.fastjson.JSON;
5 6
import com.alibaba.fastjson.JSONObject;
6 7
import com.nuosi.flow.logic.LogicFlowEngine;
7 8
import com.nuosi.flow.logic.inject.initial.InitialMethod;
@ -52,6 +53,38 @@ public class OrganizeTest {
52 53
            Assert.assertTrue(false);
53 54
        }
54 55
    }
56
    
57
    @Test
58
    public void testUpdateOrganize(){
59
    	JSONObject organize_cond = new JSONObject();
60
    	organize_cond.put("organize_id", "33");        
61
62
        JMap param = new JsonMap();
63
        param.put("organize", organize_cond);
64
        try{
65
        	JMap selectResult = LogicFlowEngine.execute("organize_select", param);
66
        	
67
68
            JSONObject organize = JSON.parseObject(JSONObject.toJSONString(selectResult.get("organize_info")));       		
69
            
70
            organize.put("dept_full_id", "2");
71
            organize.put("dept_leader", 2);
72
            organize.put("done_date", new InitialMethod().getDatetime());
73
            organize.put("op_id", "1");
74
            
75
            param.put("organize", organize);
76
            param.put("organize_cond", organize_cond);
77
            
78
            JMap result = LogicFlowEngine.execute("organize_update", param);
79
            System.out.println("执行结果:" + result);
80
            Assert.assertTrue(true);
81
82
        }catch (Exception e){
83
            e.printStackTrace();
84
            System.out.println("错误信息:" + e.getMessage());
85
            Assert.assertTrue(false);
86
        }
87
    }
55 88
56 89
    @Before
57 90
    public void before() throws IOException {
@ -62,7 +95,8 @@ public class OrganizeTest {
62 95
63 96
        String[] flows = {
64 97
                "flow/org/organize_insert.xml",
65
                "flow/org/organize_select.xml"
98
                "flow/org/organize_select.xml",
99
                "flow/org/organize_update.xml"
66 100
        };
67 101
68 102
        LogicFlowUtil.loadLogicFlows(flows);
@ -70,24 +104,24 @@ public class OrganizeTest {
70 104
71 105
    private JMap createOrganize() throws Exception {
72 106
        String organize_id = String.valueOf(System.currentTimeMillis()).substring(7);
73
        JMap userParam = new JsonMap();
74
        userParam.put("organize_id", organize_id);
75
        userParam.put("organize_type", "0");
76
        userParam.put("organize_name", "亚信科技有限责任公司");
77
        userParam.put("parent_organize_id", "0");
78
        userParam.put("short_name", "亚信科技");
79
        userParam.put("english_name", "asiainfo");
80
        userParam.put("dept_full_id", "1");
81
        userParam.put("dept_full_name", "亚信科技");
82
        userParam.put("level", 1);
83
        userParam.put("dept_leader", 1);
84
        userParam.put("org_level", "1");
85
        userParam.put("remark", "NULL");
86
        userParam.put("data_status", "1");
87
        userParam.put("create_date", "2022-1-10 16:09:12");
88
        userParam.put("create_op_id", "1");
89
        userParam.put("done_date", new InitialMethod().getDatetime());
90
        userParam.put("op_id", new InitialMethod().getDatetime());
91
        return userParam;
107
        JMap organizeParam = new JsonMap();
108
        organizeParam.put("organize_id", organize_id);
109
        organizeParam.put("organize_type", "0");
110
        organizeParam.put("organize_name", "亚信科技有限责任公司");
111
        organizeParam.put("parent_organize_id", "0");
112
        organizeParam.put("short_name", "亚信科技");
113
        organizeParam.put("english_name", "asiainfo");
114
        organizeParam.put("dept_full_id", "1");
115
        organizeParam.put("dept_full_name", "亚信科技");
116
        organizeParam.put("level", 1);
117
        organizeParam.put("dept_leader", 1);
118
        organizeParam.put("org_level", "1");
119
        organizeParam.put("remark", "NULL");
120
        organizeParam.put("data_status", "1");
121
        organizeParam.put("create_date", "2022-1-10 16:09:12");
122
        organizeParam.put("create_op_id", "1");
123
        organizeParam.put("done_date", new InitialMethod().getDatetime());
124
        organizeParam.put("op_id", new InitialMethod().getDatetime());
125
        return organizeParam;
92 126
    }
93 127
}

+ 46 - 9
qb-auth-server/src/test/java/com/ipu/logicflow/server/UserTest.java

@ -98,7 +98,7 @@ public class UserTest {
98 98
        param.put("user_cond", user_cond);
99 99
        param.put("user", user);
100 100
        try{
101
            JMap result = LogicFlowEngine.execute("user_update", param);
101
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
102 102
            System.out.println("执行结果:" + result);
103 103
            Assert.assertTrue(true);
104 104
@ -106,7 +106,7 @@ public class UserTest {
106 106
            user.put("enabled_flag", "1");
107 107
            user.put("op_id", user_id);
108 108
            param.put("user", user);
109
            LogicFlowEngine.execute("user_update", param);
109
            LogicFlowEngine.execute("user_update_by_cond", param);
110 110
        }catch (Exception e){
111 111
            e.printStackTrace();
112 112
            System.out.println("错误信息:" + e.getMessage());
@ -134,7 +134,7 @@ public class UserTest {
134 134
            user_cond.put("user_id", user_id);
135 135
            param.put("user_cond", user_cond);
136 136
137
            LogicFlowEngine.execute("user_update", param);
137
            LogicFlowEngine.execute("user_update_by_cond", param);
138 138
        }catch (Exception e){
139 139
            e.printStackTrace();
140 140
            System.out.println("错误信息:" + e.getMessage());
@ -157,7 +157,7 @@ public class UserTest {
157 157
        param.put("user_cond", user_cond);
158 158
        param.put("user", user);
159 159
        try{
160
            JMap result = LogicFlowEngine.execute("user_update", param);
160
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
161 161
            System.out.println("执行结果:" + result);
162 162
            Assert.assertTrue(true);
163 163
@ -165,7 +165,7 @@ public class UserTest {
165 165
            user.put("enabled_flag", "0");
166 166
            user.put("op_id", user_id);
167 167
            param.put("user", user);
168
            LogicFlowEngine.execute("user_update", param);
168
            LogicFlowEngine.execute("user_update_by_cond", param);
169 169
        }catch (Exception e){
170 170
            e.printStackTrace();
171 171
            System.out.println("错误信息:" + e.getMessage());
@ -174,12 +174,48 @@ public class UserTest {
174 174
    }
175 175
    
176 176
    @Test
177
    public void testUpdateUserByCond(){
178
        String user_id = "308075";
179
        JSONObject user_cond = new JSONObject();
180
        user_cond.put("user_id", user_id);
181
182
        JSONObject user = new JSONObject();
183
        user.put("user_id", user_id);
184
        user.put("NICK_NAME", "嘉信立恒管理员");
185
        user.put("USER_ACCOUNT", "admin");
186
        user.put("GENDER", "1");
187
        user.put("AVATAR_NAME", "head.jpg");
188
        user.put("SURNAME", "刘恒");
189
        user.put("EMAIL", "tls@163.com");
190
        user.put("SEC_LEVEL", "2");
191
        user.put("LINK_PHONE", "18935548888");
192
        user.put("PASSWORD", "qawsx");       
193
        user.put("done_date", new InitialMethod().getDatetime());
194
        user.put("op_id", "1");
195
196
        JMap param = new JsonMap();
197
        param.put("user_cond", user_cond);
198
        param.put("user", user);
199
        try{
200
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
201
            System.out.println("执行结果:" + result);
202
            Assert.assertTrue(true);
203
204
        }catch (Exception e){
205
            e.printStackTrace();
206
            System.out.println("错误信息:" + e.getMessage());
207
            Assert.assertTrue(false);
208
        }
209
    }
210
211
    @Test
177 212
    public void testUpdateUser(){
178 213
        String user_id = "308075";
179 214
        JSONObject user_cond = new JSONObject();
180 215
        user_cond.put("user_id", user_id);
181 216
182
        JSONObject user = new JSONObject();       		
217
        JSONObject user = new JSONObject();
218
        user.put("user_id", user_id);
183 219
        user.put("NICK_NAME", "嘉信立恒管理员");
184 220
        user.put("USER_ACCOUNT", "admin");
185 221
        user.put("GENDER", "1");
@ -222,7 +258,7 @@ public class UserTest {
222 258
        param.put("user_cond", user_cond);
223 259
        param.put("user", user);
224 260
        try{
225
            JMap result = LogicFlowEngine.execute("user_update", param);
261
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
226 262
            System.out.println("执行结果:" + result);
227 263
            Assert.assertTrue(true);
228 264
@ -230,7 +266,7 @@ public class UserTest {
230 266
            user.put("DATA_STATUS", "1");
231 267
            user.put("op_id", user_id);
232 268
            param.put("user", user);
233
            LogicFlowEngine.execute("user_update", param);
269
            LogicFlowEngine.execute("user_update_by_cond", param);
234 270
        }catch (Exception e){
235 271
            e.printStackTrace();
236 272
            System.out.println("错误信息:" + e.getMessage());
@ -253,7 +289,7 @@ public class UserTest {
253 289
        param.put("user_cond", user_cond);
254 290
        param.put("user", user);
255 291
        try{
256
            JMap result = LogicFlowEngine.execute("user_update", param);
292
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
257 293
            System.out.println("执行结果:" + result);
258 294
            Assert.assertTrue(true);
259 295
@ -276,6 +312,7 @@ public class UserTest {
276 312
                "flow/user/user_select.xml",
277 313
                "flow/user/user_select_by_id.xml",
278 314
                "flow/user/user_select_by_name.xml",
315
                "flow/user/user_update_by_cond.xml",
279 316
                "flow/user/user_update.xml",
280 317
                "flow/user/user_disable_with_aggregate.xml"
281 318
        };