浏览代码

@IPU_REQ_2022@保存Model到nacos;从nacos拉取Model和服务流配置到本地,并注册到服务流引擎中。

weihf 3 年之前
父节点
当前提交
fde736f109

+ 22 - 3
qb-auth-server/src/main/java/com/ipu/logicflow/server/LogicflowServerStart.java

@ -25,9 +25,10 @@ public class LogicflowServerStart {
25 25
        registerExceptionCode();
26 26
        // 启动服务
27 27
        IpuRestApplication.start(args);
28
        //注册nacos监听
28
        //注册nacos配置中心的监听
29 29
        registerNacosListener();
30
30
        //从nacos配置中心拉取已有配置到本地
31
        pullConfigFromNacos();
31 32
    }
32 33
33 34
    private static void registerExceptionCode(){
@ -39,11 +40,29 @@ public class LogicflowServerStart {
39 40
    private static void registerNacosListener(){
40 41
    	try {
41 42
    		INacosService service = SpringBeanUtil.getBean(INacosService.class);
42
			service.addListener(LogicFlowConfig.FLOW_LOGIC,"DEFAULT_GROUP",new FlowLogicListener());
43
			//服务逻辑流配置的监听
44
    		service.addListener(LogicFlowConfig.FLOW_LOGIC,"DEFAULT_GROUP",new FlowLogicListener());
45
    		//Model配置的监听
43 46
			service.addListener(LogicFlowConfig.FLOW_MODEL,"DEFAULT_GROUP",new FlowModelListener());
44 47
		} catch (Exception e) {
45 48
			// TODO Auto-generated catch block
46 49
			e.printStackTrace();
47 50
		}
48 51
    }
52
    
53
    private static void pullConfigFromNacos(){
54
    	try {
55
    		INacosService service = SpringBeanUtil.getBean(INacosService.class);
56
			//拉取服务逻辑流配置
57
    		String flowConfig = service.pullFromServer(LogicFlowConfig.FLOW_LOGIC,"DEFAULT_GROUP",0);
58
    		LogicFlowConfig.registerLogicFlow(flowConfig);
59
    		
60
    		//拉取Model配置
61
    		String modelConfig = service.pullFromServer(LogicFlowConfig.FLOW_MODEL,"DEFAULT_GROUP",0);
62
			LogicFlowConfig.registerLogicModel(modelConfig);
63
		} catch (Exception e) {
64
			// TODO Auto-generated catch block
65
			e.printStackTrace();
66
		}
67
    }
49 68
}

+ 8 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/control/LogicController.java

@ -62,5 +62,13 @@ public class LogicController {
62 62
        logicService.saveFlowToConfigCenter(flowName, flowXml);
63 63
        return "ok";
64 64
    }
65
    
66
    @ResponseBody
67
    @RequestMapping("/saveModelToConfigCenter/{modelName}")
68
    public Object saveModelToConfigCenter(@PathVariable("modelName") String modelName,@RequestBody String modelXml) throws Exception {
69
        System.out.println("input="+modelXml);    
70
        logicService.saveModelToConfigCenter(modelName, modelXml);
71
        return "ok";
72
    }
65 73
66 74
}

+ 2 - 2
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/control/LogicQueryController.java

@ -17,7 +17,7 @@ public class LogicQueryController {
17 17
	
18 18
	@ResponseBody
19 19
    @RequestMapping("/getFlow")
20
    public Object getFlow(@RequestBody String flowName) throws Exception {
20
    public Object getFlow(@RequestBody(required=false) String flowName) throws Exception {
21 21
        System.out.println("input="+flowName);    
22 22
        Object result = queryService.getFlowMap(flowName);
23 23
        return result;
@ -25,7 +25,7 @@ public class LogicQueryController {
25 25
	
26 26
	@ResponseBody
27 27
    @RequestMapping("/getModel")
28
    public Object getModel(@RequestBody String ModelName) throws Exception {
28
    public Object getModel(@RequestBody(required=false) String ModelName) throws Exception {
29 29
        System.out.println("input="+ModelName);    
30 30
        Object result = queryService.getModelMap(ModelName);
31 31
        return result;

+ 1 - 16
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/listener/FlowLogicListener.java

@ -3,10 +3,7 @@ package com.ipu.logicflow.server.biz.logic.listener;
3 3
4 4
import com.ai.ipu.basic.log.ILogger;
5 5
import com.ai.ipu.basic.log.IpuLoggerFactory;
6
import com.ai.ipu.basic.string.StringUtil;
7
import com.ai.ipu.restful.spring.SpringBeanUtil;
8 6
import com.alibaba.nacos.api.config.listener.AbstractListener;
9
import com.ipu.logicflow.server.biz.logic.service.LogicService;
10 7
import com.ipu.logicflow.server.util.LogicFlowConfig;
11 8
12 9
public class FlowLogicListener extends AbstractListener {
@ -16,19 +13,7 @@ public class FlowLogicListener extends AbstractListener {
16 13
	public void receiveConfigInfo(String configInfo) {
17 14
		try {
18 15
			LOG.debug(">>>>>>>>>>>>>>>>>>>new config from nacos:" + configInfo);
19
			if (!StringUtil.isEmpty(configInfo)) {
20
				String[] configs = configInfo.split("\n");
21
				int i=0;
22
				for (;i<configs.length;i++) {
23
					String[] config = configs[i].split("==");
24
					if (!LogicFlowConfig.getFlowPathMap().containsKey(config[0]))
25
					{
26
						LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
27
						logicService.registerFlow(config[1]);
28
						LOG.debug("添加Flow配置成功:" + config[1]);
29
					}
30
				}	
31
			}
16
			LogicFlowConfig.registerLogicFlow(configInfo);
32 17
		} catch (Exception e) {
33 18
			e.printStackTrace();
34 19
			LOG.error("receiveConfigInfo error:", e);

+ 2 - 5
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/listener/FlowModelListener.java

@ -4,9 +4,8 @@ package com.ipu.logicflow.server.biz.logic.listener;
4 4
5 5
import com.ai.ipu.basic.log.ILogger;
6 6
import com.ai.ipu.basic.log.IpuLoggerFactory;
7
import com.ai.ipu.restful.spring.SpringBeanUtil;
8 7
import com.alibaba.nacos.api.config.listener.AbstractListener;
9
import com.ipu.logicflow.server.biz.logic.service.LogicService;
8
import com.ipu.logicflow.server.util.LogicFlowConfig;
10 9
11 10
public class FlowModelListener extends AbstractListener {
12 11
	private static final ILogger LOG = IpuLoggerFactory.createLogger(FlowModelListener.class);
@ -15,9 +14,7 @@ public class FlowModelListener extends AbstractListener {
15 14
	public void receiveConfigInfo(String configInfo) {
16 15
		try {
17 16
			LOG.debug(">>>>>>>>>>>>>>>>>>>new config from nacos:" + configInfo);
18
			LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
19
			logicService.registerModel(configInfo);
20
			LOG.debug("添加Model配置成功");
17
			LogicFlowConfig.registerLogicModel(configInfo);
21 18
22 19
		} catch (Exception e) {
23 20
			LOG.error("receiveConfigInfo error:", e);

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

@ -117,6 +117,6 @@ public class LogicServiceImpl implements LogicService {
117 117
		if (!StringUtil.isEmpty(strConfigInfo))
118 118
		    newConfigInfo.append(strConfigInfo).append("\n");
119 119
		newConfigInfo.append(modelName).append("==").append(LogicFlowConfig.replaceBlank(modelXml));
120
		service.pushConfigToServer(LogicFlowConfig.FLOW_LOGIC, "DEFAULT_GROUP", newConfigInfo.toString());
120
		service.pushConfigToServer(LogicFlowConfig.FLOW_MODEL, "DEFAULT_GROUP", newConfigInfo.toString());
121 121
	}
122 122
}

+ 39 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/util/LogicFlowConfig.java

@ -1,5 +1,10 @@
1 1
package com.ipu.logicflow.server.util;
2 2
3
import com.ai.ipu.basic.log.ILogger;
4
import com.ai.ipu.basic.log.IpuLoggerFactory;
5
import com.ai.ipu.basic.string.StringUtil;
6
import com.ai.ipu.restful.spring.SpringBeanUtil;
7
import com.ipu.logicflow.server.biz.logic.service.LogicService;
3 8
import com.nuosi.flow.util.LogicFlowUtil;
4 9
5 10
import java.util.HashMap;
@ -20,6 +25,7 @@ import java.util.regex.Pattern;
20 25
 * @version v1.0.0
21 26
 */
22 27
public class LogicFlowConfig {
28
	private static final ILogger LOG = IpuLoggerFactory.createLogger(LogicFlowConfig.class);
23 29
	public static final String FLOW_LOGIC = "flowLogic.xml";
24 30
	public static final String FLOW_MODEL = "flowModel.xml";
25 31
@ -34,6 +40,7 @@ public class LogicFlowConfig {
34 40
	public static void initModel() {
35 41
		modelPathMap.put("sec_user", "flow/user/model/sec_user.xml");
36 42
		modelPathMap.put("sec_organize", "flow/org/model/sec_organize.xml");
43
		//modelPathMap.put("sec_org_user_rel", "flow/org/model/sec_org_user_rel.xml");
37 44
		Iterator<String> it = modelPathMap.values().iterator();
38 45
		while (it.hasNext()) {
39 46
			LogicFlowUtil.loadLogicModel(it.next());
@ -78,4 +85,36 @@ public class LogicFlowConfig {
78 85
		}
79 86
		return dest;
80 87
	}
88
	
89
	public static void registerLogicFlow(String flowConfig) throws Exception {
90
		if (!StringUtil.isEmpty(flowConfig)) {
91
			String[] configs = flowConfig.split("\n");
92
			int i=0;
93
			for (;i<configs.length;i++) {
94
				String[] config = configs[i].split("==");
95
				if (!LogicFlowConfig.getFlowPathMap().containsKey(config[0]))
96
				{
97
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
98
					logicService.registerFlow(config[1]);
99
					LOG.debug("添加Flow配置成功:" + config[1]);
100
				}
101
			}	
102
		}
103
	}
104
	
105
	public static void registerLogicModel(String modelConfig) throws Exception {
106
		if (!StringUtil.isEmpty(modelConfig)) {
107
			String[] configs = modelConfig.split("\n");
108
			int i=0;
109
			for (;i<configs.length;i++) {
110
				String[] config = configs[i].split("==");
111
				if (!LogicFlowConfig.getFlowPathMap().containsKey(config[0]))
112
				{
113
					LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
114
					logicService.registerModel(config[1]);
115
					LOG.debug("添加Model配置成功:" + config[1]);
116
				}
117
			}	
118
		}
119
	}
81 120
}

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

@ -3,20 +3,20 @@
3 3
    <attr id="org_user_rel_id" type="int" name="角色关联用户标识"/>
4 4
    <attr id="user_id" type="int" name="用户标识"/>
5 5
    <attr id="organize_id" type="int" name="角色标识"/>
6
    <attr id="valid_date" type="datetime" name="生效日期"/>
7
    <attr id="expire_date" type="datetime" name="失效日期"/>
6
    <attr id="valid_date" type="datetime" name="生效日期" exists="false"/>
7
    <attr id="expire_date" type="datetime" name="失效日期" exists="false"/>
8 8
    <attr id="data_status" type="string" name="数据状态"/>
9 9
    <attr id="create_date" type="datetime" name="创建日期"/>
10
    <attr id="create_op_id" type="string" name="创建人员"/>
11
    <attr id="create_org_id" type="string" name="创建组织"/>
12
    <attr id="done_code" type="datetime" name="事务编号"/>
13
    <attr id="done_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 14
    <attr id="op_id" type="string" name="操作人员"/>
15
    <attr id="org_id" type="string" name="操作组织"/>
16
    <attr id="mgmt_district" type="string" name="管理地区"/>
17
    <attr id="mgmt_county" type="string" name="管理国家"/>
18
    <attr id="region_id" type="string" name="区域ID"/>
19
    <attr id="tenant_code" 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 20
21 21
    <behavior id="insertOrgUserRel" name="新增用户组织信息">
22 22
        <function domain="DB" name="insert">

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

@ -0,0 +1,27 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_delete"
3
            name="删除组织下人员信息"
4
            desc="删除组织下人员信息">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_org_user_rel"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="deletetOrgUserRel">
11
        <var key="org_user_rel_cond" model="sec_org_user_rel" attrExists="false"/>
12
    </start>
13
14
    <action id="deletetOrgUserRel" name="删除组织下人员信息" next="end">
15
        <input>
16
            <var key="org_user_rel_cond" model="sec_org_user_rel"/>
17
        </input>
18
        <behavior model="sec_org_user_rel" id="deleteOrgUserRel"/>
19
        <output>
20
            <var key="result"/>
21
        </output>
22
    </action>
23
24
    <end id="end" name="结束节点">
25
        <var key="result"/>
26
    </end>
27
</logic-flow>

+ 3 - 3
qb-auth-server/src/main/resources/flow/org/org_user_rel_delete_by_cond.xml

@ -1,5 +1,5 @@
1 1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_delete"
2
<logic-flow id="org_user_rel_delete_by_cond"
3 3
            name="删除组织下人员信息"
4 4
            desc="删除组织下人员信息">
5 5
    <declare>
@ -7,12 +7,12 @@
7 7
        <import model="sec_org_user_rel"/>
8 8
    </declare>
9 9
10
    <start id="start" name="开始节点" next="deletetOrgUserRel">
10
    <start id="start" name="开始节点" next="deleteOrgUserRelByUserId">
11 11
        <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
12 12
            <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
13 13
    </start>
14 14
15
    <action id="deletetOrgUserRel" name="删除组织下人员信息" next="end">
15
    <action id="deleteOrgUserRelByUserId" name="删除组织下人员信息" next="end">
16 16
        <input>
17 17
            <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
18 18
            <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>

+ 21 - 0
qb-auth-server/src/test/java/com/ipu/logicflow/server/OrgUserRelTest.java

@ -78,6 +78,25 @@ public class OrgUserRelTest {
78 78
        JMap result = null;
79 79
        try {
80 80
            
81
            result = LogicFlowEngine.execute("org_user_rel_delete_by_cond", param);
82
            System.out.println("执行结果:" + result);
83
            Assert.assertTrue(true);
84
        } catch (Exception e) {
85
            System.out.println("错误信息:" + e.getMessage());
86
            Assert.assertTrue(false);
87
        }
88
    }
89
    
90
    @Test
91
    public void testDeleteOrgUserRel(){
92
    	String org_user_rel_id = "2";
93
        JSONObject org_user_rel_cond = new JSONObject();
94
        org_user_rel_cond.put("org_user_rel_id", org_user_rel_id);
95
        JMap param = new JsonMap();
96
        param.put("org_user_rel_cond", org_user_rel_cond);
97
        JMap result = null;
98
        try {
99
            
81 100
            result = LogicFlowEngine.execute("org_user_rel_delete", param);
82 101
            System.out.println("执行结果:" + result);
83 102
            Assert.assertTrue(true);
@ -86,6 +105,7 @@ public class OrgUserRelTest {
86 105
            Assert.assertTrue(false);
87 106
        }
88 107
    }
108
    
89 109
    @Before
90 110
    public void before() throws IOException {
91 111
        String[] models = {
@ -97,6 +117,7 @@ public class OrgUserRelTest {
97 117
98 118
        String[] flows = {
99 119
                "flow/org/org_user_rel_insert.xml",
120
                "flow/org/org_user_rel_delete.xml",
100 121
                "flow/org/org_user_rel_delete_by_cond.xml",
101 122
                "flow/org/org_user_rel_select.xml",
102 123
                "flow/org/org_user_rel_select_by_cond.xml",