You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							108 lines
						
					
					
						
							4.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							108 lines
						
					
					
						
							4.3 KiB
						
					
					
				| = 客户端集成示例 | |
| == 需要的客户端 jar 包 | |
| 
 | |
| == 示例代码 | |
| [source%nowrap,java] | |
| ---- | |
| package org.wsp.engine.rule.client.test; | |
| 
 | |
| import java.util.HashMap; | |
| import java.util.List; | |
| import java.util.Map; | |
| 
 | |
| import org.wsp.engine.rule.client.Executor; | |
| import org.wsp.engine.rule.client.ExecutorBuilder; | |
| import org.wsp.engine.rule.client.ExecutorFactory; | |
| import org.wsp.engine.rule.client.enums.ExecutorMode; | |
| import org.wsp.engine.rule.client.enums.LoaderMode; | |
| import org.wsp.engine.rule.core.classes.Rule; | |
| import org.wsp.engine.rule.core.classes.RuleResult; | |
| import org.wsp.engine.rule.core.code.impl.support.ParameterResult; | |
| import org.wsp.engine.rule.core.code.impl.support.ResourceResult; | |
| import org.wsp.engine.rule.core.enums.ParameterType; | |
| import org.wsp.engine.rule.core.util.TimeTracer; | |
| 
 | |
| public class ResourceCallTest { | |
| 	private static final String MODEL_API_URL ="http://localhost:8080/re/resource";	//远程模型引擎 API URL 地址 | |
| 	private static final String EXECUTOR_NAME ="executor";							//执行器名称 | |
| 	private static final String MODEL_CODE ="M116762018316101";						//需要执行的模型代码 | |
| 	private static final Integer MODEL_VERSION =null;								//需要执行的模型版本 | |
| 	private static final int COUNT =1;												//需要执行的次数 | |
| 	 | |
| 	private static TimeTracer tracer =TimeTracer.getInstance("tracer");				//创建一个时间跟踪器,用于跟踪执行时间,在生产环境中不要这样做 | |
| 	 | |
| 	public static void main(String[] args) throws Exception{ | |
| 		init(); | |
| 		testLocalExecutorRemoteLoader_map(); | |
| 	} | |
| 	 | |
| 	public static void init() throws Exception{ | |
| 		//创建执行器(本地执行,远程获取模型定义) | |
| 		Executor executor =new ExecutorBuilder().build(ExecutorMode.LOCAL, LoaderMode.REMOTE, MODEL_API_URL); | |
| 		 | |
| 		//注册执行器,便于之后获取,如果每次都构建一个新的执行器,将显著影响性能 | |
| 		ExecutorFactory.register(EXECUTOR_NAME, executor); | |
| 		 | |
| 		//第一次执行,消除缓存对性能对比测试的影响 | |
| 		//executor.executeByCode(MODEL_CODE, MODEL_VERSION,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(prepareData())); | |
| 		ResourceResult result =executor.executeByCode(MODEL_CODE, MODEL_VERSION,prepareData()); | |
| 		List<ParameterResult> parameters =result.getData(); | |
| 		for(ParameterResult parameter : parameters) { | |
| 			if(ParameterType.RULE_RESULT.equals(parameter.getType())) { | |
| 				RuleResult ruleResult =parameter.getRuleResult(); | |
| 				ruleResult.isTriggered();//规则是否触发 | |
| 				ruleResult.getLevel();//规则触发的子规则最大等级 | |
| 				List<Rule> rules =ruleResult.getRules(); | |
| 				for(Rule rule : rules) { | |
| 					rule.getCode(); | |
| 					rule.getName(); | |
| 					rule.getValue(); | |
| 					rule.getLevel(); | |
| 					rule.getMessage(); | |
| 				} | |
| 			} | |
| 		} | |
| 		//tracer.log("初始化完毕===================================="); | |
| 	 | |
| 	} | |
| 
 | |
| 	/** | |
| 	 * 测试本地执行器,远程模型定义加载器,输入参数为 map 对象 | |
| 	 * @throws Exception 违例 | |
| 	 */ | |
| 	public static void testLocalExecutorRemoteLoader_map() throws Exception{ | |
| 		//从注册器中获取执行器 | |
| 		Executor executor =ExecutorFactory.getExecutor(EXECUTOR_NAME); | |
| 		tracer.log("开始执行(采用 map 对象作为参数)===================================="); | |
| 		for(int i=0;i<COUNT;i++) { | |
| 			//准备执行的数据(输入参数) | |
| 			Map<String,Object> data =prepareData(); | |
| 			//executor.getLoader().getResourceByCode(MODEL_CODE, MODEL_VERSION); | |
| 			executor.executeByCode(MODEL_CODE, MODEL_VERSION,data); | |
| 		} | |
| 		tracer.log("执行完毕(采用 map 对象作为参数)"); | |
| 		tracer.log("采用 map 对象作为输入参数将执行效率提高 20+ 倍!!!"); | |
| 	} | |
| 	 | |
| 	 | |
| 	private static Map<String,Object> prepareData() throws Exception{ | |
| 		//上期 | |
| 		Map<String,Object> preReport =new HashMap<String,Object>(); | |
| 		preReport.put("F1573645395675", 1.0);//收入 | |
| 		preReport.put("F1573645418335", 1.0);//毛利 | |
| 		 | |
| 		//本期 | |
| 		Map<String,Object> report =new HashMap<String,Object>(); | |
| 		report.put("F1573645395675", 2.0);//收入 | |
| 		report.put("F1573645418335", 1.0);//毛利 | |
| 		 | |
| 		Map<String,Object> map =new HashMap<String,Object>(); | |
| 		//map.put("current_1_issue_report", JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(preReport)); | |
| 		//map.put("current_issue_report", JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(report)); | |
| 		map.put("current_1_issue_report", preReport); | |
| 		map.put("current_issue_report", report); | |
| 		return map; | |
| 	} | |
| } | |
| 
 | |
| ---- |