浏览代码

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

weihf 3 年之前
父节点
当前提交
9a872f5559

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

13
13
14
    public Object execute(String logicName, JMap param) throws Exception;
14
    public Object execute(String logicName, JMap param) throws Exception;
15
    public String registerFlow(String flowXml) throws Exception;
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
    public void saveFlowToConfigCenter(String flowName, String flowXml) throws Exception;
19
    public void saveFlowToConfigCenter(String flowName, String flowXml) throws Exception;
18
    public void saveModelToConfigCenter(String modelName, String modelXml) throws Exception;
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
import com.ai.ipu.data.JMap;
5
import com.ai.ipu.data.JMap;
6
import com.ai.ipu.nacos.INacosService;
6
import com.ai.ipu.nacos.INacosService;
7
import com.github.pagehelper.util.StringUtil;
7
import com.github.pagehelper.util.StringUtil;
8
import com.nuosi.flow.data.BDataDefine;
9
import com.nuosi.flow.data.BizDataManager;
8
import com.nuosi.flow.logic.LogicFlowEngine;
10
import com.nuosi.flow.logic.LogicFlowEngine;
9
import com.nuosi.flow.logic.LogicFlowManager;
11
import com.nuosi.flow.logic.LogicFlowManager;
10
import com.nuosi.flow.logic.model.LogicFlow;
12
import com.nuosi.flow.logic.model.LogicFlow;
11
import com.nuosi.flow.logic.model.domain.DomainModel;
13
import com.nuosi.flow.logic.model.domain.DomainModel;
14
import com.nuosi.flow.logic.parse.ModelToDataDefineUtil;
12
import com.ipu.logicflow.server.biz.logic.service.LogicService;
15
import com.ipu.logicflow.server.biz.logic.service.LogicService;
13
import com.ipu.logicflow.server.util.LogicFlowConfig;
16
import com.ipu.logicflow.server.util.LogicFlowConfig;
14
17
36
	
39
	
37
    @Override
40
    @Override
38
    public Object execute(String logicName, JMap param) throws Exception {
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
	@Override
52
	@Override
77
		try {
86
		try {
78
			xml = new ByteArrayInputStream(modelXml.getBytes(StandardCharsets.UTF_8.name()));
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
				LogicFlowConfig.addModelPathMap(modelName, modelXml);
97
				LogicFlowConfig.addModelPathMap(modelName, modelXml);
86
			}
98
			}
87
			else
99
			else
119
		newConfigInfo.append(modelName).append("==").append(LogicFlowConfig.replaceBlank(modelXml));
131
		newConfigInfo.append(modelName).append("==").append(LogicFlowConfig.replaceBlank(modelXml));
120
		service.pushConfigToServer(LogicFlowConfig.FLOW_MODEL, "DEFAULT_GROUP", newConfigInfo.toString());
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
import java.util.HashMap;
10
import java.util.HashMap;
11
import java.util.Iterator;
11
import java.util.Iterator;
12
import java.util.Map;
12
import java.util.Map;
13
import java.util.Optional;
13
import java.util.regex.Matcher;
14
import java.util.regex.Matcher;
14
import java.util.regex.Pattern;
15
import java.util.regex.Pattern;
15
16
31
32
32
	private static Map<String, String> modelPathMap = new HashMap<String, String>();
33
	private static Map<String, String> modelPathMap = new HashMap<String, String>();
33
	private static Map<String, String> flowPathMap = new HashMap<String, String>();
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
	public static void init() {
38
	public static void init() {
36
		initModel();
39
		initModel();
75
	public static void addFlowPathMap(String flowName, String flowXml) {
78
	public static void addFlowPathMap(String flowName, String flowXml) {
76
		flowPathMap.put(flowName, flowXml);
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
	public static String replaceBlank(String str) {
90
	public static String replaceBlank(String str) {
80
		String dest = "";
91
		String dest = "";
86
		return dest;
97
		return dest;
87
	}
98
	}
88
	
99
	
100
	//只有配置中心代码才会调用
89
	public static void registerLogicFlow(String flowConfig) throws Exception {
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
		if (!StringUtil.isEmpty(flowConfig)) {
104
		if (!StringUtil.isEmpty(flowConfig)) {
91
			String[] configs = flowConfig.split("\n");
105
			String[] configs = flowConfig.split("\n");
92
			int i=0;
106
			int i=0;
96
				{
110
				{
97
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
111
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
98
					logicService.registerFlow(config[1]);
112
					logicService.registerFlow(config[1]);
113
					addConfigCenterMap(FLOW_LOGIC, config[0]);
99
					LOG.debug("添加Flow配置成功:" + config[1]);
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
	public static void registerLogicModel(String modelConfig) throws Exception {
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
		if (!StringUtil.isEmpty(modelConfig)) {
141
		if (!StringUtil.isEmpty(modelConfig)) {
107
			String[] configs = modelConfig.split("\n");
142
			String[] configs = modelConfig.split("\n");
143
			
108
			int i=0;
144
			int i=0;
109
			for (;i<configs.length;i++) {
145
			for (;i<configs.length;i++) {
110
				String[] config = configs[i].split("==");
146
				String[] config = configs[i].split("==");
111
				if (!LogicFlowConfig.getFlowPathMap().containsKey(config[0]))
147
				if (!LogicFlowConfig.getModelPathMap().containsKey(config[0]))
112
				{
148
				{
113
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
149
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
114
					logicService.registerModel(config[1]);
150
					logicService.registerModel(config[1]);
151
					addConfigCenterMap(FLOW_MODEL, config[0]);
115
					LOG.debug("添加Model配置成功:" + config[1]);
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
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8"?>
2
<model id="sec_org_user_rel" name="用户组织信息模型">
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
</model>
69
</model>

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

53
            <param value="uppercase" type="string"/>
53
            <param value="uppercase" type="string"/>
54
        </function>
54
        </function>
55
    </behavior>
55
    </behavior>
56
    
57
56
</model>
58
</model>

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

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
        <import model="sec_org_user_rel"/>
7
        <import model="sec_org_user_rel"/>
8
    </declare>
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
    </start>
12
    </start>
13
13
14
    <action id="deletetOrgUserRel" name="删除组织下人员信息" next="end">
14
    <action id="deleteOrgUserRel" name="删除组织下人员信息" next="end">
15
        <input>
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
        </input>
17
        </input>
18
        <behavior model="sec_org_user_rel" id="deleteOrgUserRel"/>
18
        <behavior model="sec_org_user_rel" id="deleteOrgUserRel"/>
19
        <output>
19
        <output>

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

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

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

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
            Assert.assertTrue(false);
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
    @Test
90
    @Test
74
    public void testDeleteOrgUserRelByUserId(){
91
    public void testDeleteOrgUserRelByUserId(){
89
    
106
    
90
    @Test
107
    @Test
91
    public void testDeleteOrgUserRel(){
108
    public void testDeleteOrgUserRel(){
92
    	String org_user_rel_id = "2";
109
    	int org_user_rel_id = 3;
93
        JSONObject org_user_rel_cond = new JSONObject();
110
        JSONObject org_user_rel_cond = new JSONObject();
94
        org_user_rel_cond.put("org_user_rel_id", org_user_rel_id);
111
        org_user_rel_cond.put("org_user_rel_id", org_user_rel_id);
95
        JMap param = new JsonMap();
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
        JMap result = null;
114
        JMap result = null;
98
        try {
115
        try {
99
            
116
            
121
                "flow/org/org_user_rel_delete_by_cond.xml",
138
                "flow/org/org_user_rel_delete_by_cond.xml",
122
                "flow/org/org_user_rel_select.xml",
139
                "flow/org/org_user_rel_select.xml",
123
                "flow/org/org_user_rel_select_by_cond.xml",
140
                "flow/org/org_user_rel_select_by_cond.xml",
141
                "flow/org/org_user_rel_combine_select.xml",
124
                "flow/user/user_select_by_id.xml",
142
                "flow/user/user_select_by_id.xml",
125
                "flow/org/organize_select.xml"
143
                "flow/org/organize_select.xml"
126
        };
144
        };

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

2
2
3
import com.ai.ipu.data.JMap;
3
import com.ai.ipu.data.JMap;
4
import com.ai.ipu.data.impl.JsonMap;
4
import com.ai.ipu.data.impl.JsonMap;
5
import com.alibaba.fastjson.JSON;
5
import com.alibaba.fastjson.JSONObject;
6
import com.alibaba.fastjson.JSONObject;
6
import com.nuosi.flow.logic.LogicFlowEngine;
7
import com.nuosi.flow.logic.LogicFlowEngine;
7
import com.nuosi.flow.logic.inject.initial.InitialMethod;
8
import com.nuosi.flow.logic.inject.initial.InitialMethod;
52
            Assert.assertTrue(false);
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
    @Before
89
    @Before
57
    public void before() throws IOException {
90
    public void before() throws IOException {
62
95
63
        String[] flows = {
96
        String[] flows = {
64
                "flow/org/organize_insert.xml",
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
        LogicFlowUtil.loadLogicFlows(flows);
102
        LogicFlowUtil.loadLogicFlows(flows);
70
104
71
    private JMap createOrganize() throws Exception {
105
    private JMap createOrganize() throws Exception {
72
        String organize_id = String.valueOf(System.currentTimeMillis()).substring(7);
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
        param.put("user_cond", user_cond);
98
        param.put("user_cond", user_cond);
99
        param.put("user", user);
99
        param.put("user", user);
100
        try{
100
        try{
101
            JMap result = LogicFlowEngine.execute("user_update", param);
101
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
102
            System.out.println("执行结果:" + result);
102
            System.out.println("执行结果:" + result);
103
            Assert.assertTrue(true);
103
            Assert.assertTrue(true);
104
104
106
            user.put("enabled_flag", "1");
106
            user.put("enabled_flag", "1");
107
            user.put("op_id", user_id);
107
            user.put("op_id", user_id);
108
            param.put("user", user);
108
            param.put("user", user);
109
            LogicFlowEngine.execute("user_update", param);
109
            LogicFlowEngine.execute("user_update_by_cond", param);
110
        }catch (Exception e){
110
        }catch (Exception e){
111
            e.printStackTrace();
111
            e.printStackTrace();
112
            System.out.println("错误信息:" + e.getMessage());
112
            System.out.println("错误信息:" + e.getMessage());
134
            user_cond.put("user_id", user_id);
134
            user_cond.put("user_id", user_id);
135
            param.put("user_cond", user_cond);
135
            param.put("user_cond", user_cond);
136
136
137
            LogicFlowEngine.execute("user_update", param);
137
            LogicFlowEngine.execute("user_update_by_cond", param);
138
        }catch (Exception e){
138
        }catch (Exception e){
139
            e.printStackTrace();
139
            e.printStackTrace();
140
            System.out.println("错误信息:" + e.getMessage());
140
            System.out.println("错误信息:" + e.getMessage());
157
        param.put("user_cond", user_cond);
157
        param.put("user_cond", user_cond);
158
        param.put("user", user);
158
        param.put("user", user);
159
        try{
159
        try{
160
            JMap result = LogicFlowEngine.execute("user_update", param);
160
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
161
            System.out.println("执行结果:" + result);
161
            System.out.println("执行结果:" + result);
162
            Assert.assertTrue(true);
162
            Assert.assertTrue(true);
163
163
165
            user.put("enabled_flag", "0");
165
            user.put("enabled_flag", "0");
166
            user.put("op_id", user_id);
166
            user.put("op_id", user_id);
167
            param.put("user", user);
167
            param.put("user", user);
168
            LogicFlowEngine.execute("user_update", param);
168
            LogicFlowEngine.execute("user_update_by_cond", param);
169
        }catch (Exception e){
169
        }catch (Exception e){
170
            e.printStackTrace();
170
            e.printStackTrace();
171
            System.out.println("错误信息:" + e.getMessage());
171
            System.out.println("错误信息:" + e.getMessage());
174
    }
174
    }
175
    
175
    
176
    @Test
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
    public void testUpdateUser(){
212
    public void testUpdateUser(){
178
        String user_id = "308075";
213
        String user_id = "308075";
179
        JSONObject user_cond = new JSONObject();
214
        JSONObject user_cond = new JSONObject();
180
        user_cond.put("user_id", user_id);
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
        user.put("NICK_NAME", "嘉信立恒管理员");
219
        user.put("NICK_NAME", "嘉信立恒管理员");
184
        user.put("USER_ACCOUNT", "admin");
220
        user.put("USER_ACCOUNT", "admin");
185
        user.put("GENDER", "1");
221
        user.put("GENDER", "1");
222
        param.put("user_cond", user_cond);
258
        param.put("user_cond", user_cond);
223
        param.put("user", user);
259
        param.put("user", user);
224
        try{
260
        try{
225
            JMap result = LogicFlowEngine.execute("user_update", param);
261
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
226
            System.out.println("执行结果:" + result);
262
            System.out.println("执行结果:" + result);
227
            Assert.assertTrue(true);
263
            Assert.assertTrue(true);
228
264
230
            user.put("DATA_STATUS", "1");
266
            user.put("DATA_STATUS", "1");
231
            user.put("op_id", user_id);
267
            user.put("op_id", user_id);
232
            param.put("user", user);
268
            param.put("user", user);
233
            LogicFlowEngine.execute("user_update", param);
269
            LogicFlowEngine.execute("user_update_by_cond", param);
234
        }catch (Exception e){
270
        }catch (Exception e){
235
            e.printStackTrace();
271
            e.printStackTrace();
236
            System.out.println("错误信息:" + e.getMessage());
272
            System.out.println("错误信息:" + e.getMessage());
253
        param.put("user_cond", user_cond);
289
        param.put("user_cond", user_cond);
254
        param.put("user", user);
290
        param.put("user", user);
255
        try{
291
        try{
256
            JMap result = LogicFlowEngine.execute("user_update", param);
292
            JMap result = LogicFlowEngine.execute("user_update_by_cond", param);
257
            System.out.println("执行结果:" + result);
293
            System.out.println("执行结果:" + result);
258
            Assert.assertTrue(true);
294
            Assert.assertTrue(true);
259
295
276
                "flow/user/user_select.xml",
312
                "flow/user/user_select.xml",
277
                "flow/user/user_select_by_id.xml",
313
                "flow/user/user_select_by_id.xml",
278
                "flow/user/user_select_by_name.xml",
314
                "flow/user/user_select_by_name.xml",
315
                "flow/user/user_update_by_cond.xml",
279
                "flow/user/user_update.xml",
316
                "flow/user/user_update.xml",
280
                "flow/user/user_disable_with_aggregate.xml"
317
                "flow/user/user_disable_with_aggregate.xml"
281
        };
318
        };