4.Java开发者手册
本文末尾提供 demo 项目,提供开发环境所必需的类等。
1,硬性规则
必须实现 implements JaninoCommonScriptBody 接口
必须重写 public Void body(ScriptExecuteWrap wrap) 方法
2,注意事项
不支持泛型,凡是调用的方法出现泛型返回,必须强制转型。
3,获取输入分组的数据
ParamsContext paramsContext = (ParamsContext) wrap.cmp.getFirstContextBean();
Map<String, List<Map<String, String>>> tableDetailMap = (Map) paramsContext.getTableDetailMap();
3.1, 使用场景
在开发脚本代码时,用于获取规则中输入分组的系统数据。
3.2, 接口说明
wrap 为 脚本类中实现的JaninoCommonScriptBody 接口中的 body 方法的参数。
(ParamsContext) wrap.cmp.getFirstContextBean(); 这是获取到系统预置的上下文对象。输入分组的数据便在其中。
(Map) paramsContext.getTableDetailMap(); 这是从上下文中获取的输入分组数据。
3.3, 输入分组数据格式
{
"员工信息表": [
{
"姓名": "张三",
"年龄": 30
},
{
"姓名": "李四",
"年龄": 53
},
{
"姓名": "王五",
"年龄": 41
}
]
}
3.4, 数据映射关系
4,设置结果分组数据
Map<String, List<Map<String, String>>> resultDataMap = new HashMap<>();
paramsContext.setResultDataMap(resultDataMap);
4.1, 使用场景
在开发脚本代码时,用于存放 规则中结果分组的系统数据。后续薪人薪事系统存储。
4.2,接口说明
paramsContext 这是获取到系统预置的上下文对象。结果分组的数据便在其中设置。
paramsContext.setResultDataMap(resultDataMap); 这是将脚本的计算结果设置到上下文,便于后续薪人薪事系统获取后存储。
4.3,结果分组数据格式
{
"员工工龄系数表": [
{
"姓名":"张三",
"工龄系数": 8
},
{
"姓名":"李四",
"工龄系数": 31
}
]
}
数据格式和输入数据格式一致。
5,example 项目概述
5.1,目录结构
/src/main/java
/bean 存放上下文参数
/controller 接口
/mock.data 假数据
/node 开发节点
/resources
/java 脚本运行文件
5.2,开发步骤
2.1)开发者下载文末的 example 项目,解压缩后导入开发工具。
2.2)在 com.xrxs.calculation.open.platform.mock.data.MockDataUtil 中修改 tableDetailTest 方法中的输入参数。mock 一个更符合自己系统所需要的数据--参考上文步骤 3 的“输入数据格式”。
2.3)在 com.xrxs.calculation.open.platform.node.javaDemo 类中开发所需业务。确保编译无误。
2.4)除了 第一行 "package com.xrxs.script.example.node;" 不粘贴之外,其余全部代码拷贝至 resources/java/javaDemo.java 文件中。
2.5) 启动项目,浏览器访问http://localhost:8080/观察输出是否和预期一致。也就是上文中步骤 4 的
“输出数据格式”一致的样式。
2.6)粘贴到主系统,等待审核。
5.3, 总结
开发者只需要改动 MockDataUtil 的 mock 输入数据、javaDemo 类的代码和 resources/java/javaDemo.java 的代码。测试通过后,粘贴 resources/java/javaDemo.java 全文到系统代码页面即可。