# converter_javascript **Repository Path**: Midvale/converter_javascript ## Basic Information - **Project Name**: converter_javascript - **Description**: 通用JS转换器,把输入的JSON格式数据通过JS执行引擎转为标准格式数据 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-05-29 - **Last Updated**: 2021-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # converter_javascript #### 介绍 通用JS转换器,把输入的JSON格式数据通过JS执行引擎转为标准格式数据 ### 项目介绍 ```本项目中javascript运行时环境由hub converter sdk提供, 该运行时环境只支持es5 调用HubSDKRunner中提供的apply方法可直接运行JavaScript脚本 注意:apply方法的param参数以及返回结果都必须是标准json对象的字符串 ``` ### 项目结构介绍以及主要类作用 1. HubSDKRunner 提供JavaScript运行时环境 2. JavaScriptWrapper(工具类) 包装对应转换器所需的脚本,新增加的converter脚本结构需按以下规范 3. resource文件夹结构描述 common----------通用js
dict------------数据字典文件夹
javascript------规则执行脚本文件夹
test------------测试脚本文件夹
```resource/dict 文件夹结构 (/[brand]/[dict].json),JavaScriptWrapper会加载对应目录下的所有.json格式的文件 例如:sample品牌(或挂件)pacs-common转化的数据字典 /sample/pacs-common-sample.json /sample/pacs-common-sample2.json resource/javascript 文件夹结构 (/[brand]/[converterCode].js),JavaScriptWrapper会加载与converterCode相等的js文件 例如:sample品牌(或挂件)s1010101类目从common到ross转换 /sample/common-ross-s1010101.js 注意:该脚本文件的最后一个方法为js引擎最终执行的入口方法(如:resources/javascript/sample/pacs-common.js中的pacsCommon方法), 该方法每个converter可以根据的不同情况自行定义(比如数据的预处理)。 调用_CONVERT执行转换 resource/test文件夹结构 expression_test.js 用于测试表达式的js执行脚本 ``` ### 测试 * 测试单个js方法 可以参考SampleRuleTest类中的测试用例 * 测试整个converter 可以参考SampleFunctionalTest类中的测试用例 * 注意:每个品牌或挂件的测试用例应在测试目录新建品牌或挂件的文件夹 如 test/com/baozun/canonical/convertor/sample, * 测试目录中的resources文件夹结构同样需要按照品牌或挂件分文件夹存放 如 /test/resources/sample ### 规则描述 1. 规则包含
target:结果属性名
source:源数据
expression:表达式,此属性为一个function
type:规则类型
rule_desc:规则描述
dict_name:数据字典名
2. 规则类型目前只有以下几种类型,如需添加规则类型请一并更新此文件
COMPLEX: 复杂类型规则,需手写转换方法(expression 必填)
MAPPING_PROPERTIES: 从入参的properties中提取值映射(target source 必填)
MAPPING_DEFAULT: 从入参的根节点提取值映射(target source 必填)
DICT_TARGET: 从dict_name数据字典获取值映射到target(target source dict_name 必填)
FIX_VALUE: 固定值,将source的值赋到结果数据上(target source 必填)
PROPERTIES_CONSTRUCT: 从输入参数中提取值,设置到结果数据的properties属性中(target source 必填)
PS: 各种规则具体实现可查看common.js中_CONVERT方法