20201126-规则引擎策略导入导出工具设计
<h1><center>规则引擎策略导入导出工具设计文档_v1.0</center></h1>
<h2>修订记录</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">版本号</th>
<th style="text-align: center;">修订人</th>
<th style="text-align: left;"><div style="width: 85px;">修订日期</div></th>
<th style="text-align: left;"><div style="width: 380px;">修订内容</div></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">V1.0</td>
<td style="text-align: center;">Challenger</td>
<td style="text-align: left;">2020-11-26</td>
<td style="text-align: left;">init</td>
</tr>
</tbody>
</table>
<p>[TOC]</p>
<h2>1.引言</h2>
<h3>1.1 编写目的</h3>
<p> 为了解决固定风格交易策略的配置效率问题,减少策略配置风险,在保证目前规则引擎不做大的适配前提下,通过XML的方式进行策略的文本编辑,规则引擎在策略层面提供了导入导出XML功能。策略操作可以通过导出XML模板进行批量的规则及策略创建、复制及修改,然后通过导入功能导入致规则引擎,一方面解决了大量重复配置的交尾,另一方面也可以支持线上线下的策略同步,减少多次配置不一致影响交易结果的风险。
本文档给出规则引擎策略导入导出工具设计设计说明,包括最终实现的功能需求、技术架构方案、业务时序图、数据库模型设计、相关页面设计。
产品研发过程以本文档为基础,技术代码依照本文档方案执行。如过程中涉及需求、架构、方案设计调整都需要更新到本文档中。</p>
<h3>1.2 范围</h3>
<p><strong>范围说明:</strong></p>
<ol>
<li>规则引擎XML策略导入导出工具;</li>
<li>业务可读性强的文档或脑图工具配置的策略结果翻译成XML策略;</li>
</ol>
<h3>1.3 术语</h3>
<table>
<thead>
<tr>
<th style="text-align: center;">术语</th>
<th style="text-align: center;">术语定义</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">二方</td>
<td style="text-align: center;">本系统模块之外的所属本企业的内部系统模块,如:规则引擎、指标平台...</td>
</tr>
<tr>
<td style="text-align: center;">三方</td>
<td style="text-align: center;">除本企业内部所有系统之外的外部服务商,如:IB、FMP、英为财情...</td>
</tr>
<tr>
<td style="text-align: center;">量化交易平台</td>
<td style="text-align: center;">澈悟量化交易平台</td>
</tr>
<tr>
<td style="text-align: center;"></td>
<td style="text-align: center;"> </td>
</tr>
</tbody>
</table>
<h3>1.4 参考资料</h3>
<p>《重构:改善既有代码的设计》</p>
<h2>2.整体设计</h2>
<h3>2.1 整体架构图</h3>
<p><strong>业务逻辑架构图</strong>
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/00aa546485082a62a7c62b8a68ee4ca5" alt="" /></p>
<p><strong>运维部署架构图</strong>
暂无</p>
<p><strong>技术架构图</strong>
暂无</p>
<h3>2.2 关键子功能模块</h3>
<p>暂无</p>
<h3>2.3 关键业务时序图</h3>
<p>暂无</p>
<h2>3. 接口设计</h2>
<h3>3.1 三方接口</h3>
<p>暂无</p>
<h3>3.2 二方接口</h3>
<p>暂无</p>
<h2>4. 子模块设计</h2>
<h3>4.1 规则引擎XML策略导入导出【RuleLoader】</h3>
<h4>4.1.1 模块需求说明</h4>
<pre><code>支持规则引擎策略导入导出功能。</code></pre>
<h4>4.1.1 架构设计图</h4>
<p>暂无</p>
<h4>4.1.2 关键业务时序图</h4>
<p>暂无</p>
<h4>4.1.3 业务功能交互</h4>
<h5>规则引擎XML策略导入导出</h5>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/186c28fbfb81bf507187c570e857c0b5" alt="" /></p>
<h4>4.1.4 数据库结构设计</h4>
<p><strong>数据库结果及ER关系图</strong>
暂无</p>
<h4>4.1.5 XML结构设计</h4>
<p><strong>规则引擎XML格式</strong></p>
<pre><code class="language-xml"><strategy>
<rule>
<hitType type="number">0</hitType><!-- 命中模式[1:逻辑与、2:逻辑或] -->
<isDecision type="number">0</isDecision><!-- 是否作为策略结果输出[0:否、1:是] -->
<name type="string">规则名称</name><!-- 规则名称 -->
<state type="string">10</state><!-- 状态[10:启用、20:禁用、99:试运行] -->
<type type="string">10</type><!--规则类型[10:流程规则、20:结果规则、30:评分规则、40:区间规则、50:四则运算规则、60:函数规则] -->
<ruleConditionGroup>
<formula type="string">></formula><!-- 逻辑表达式 -->
<missScore type="number">0</missScore><!-- 缺失值结果 -->
<relation type="number">1</relation><!-- 命中模式[1:逻辑与、2:逻辑或] -->
<state type="string">10</state><!-- 状态[10:启用、20:禁用、99:试运行] -->
<ruleConditions class="array">
<ruleCondition class="object">
<ccolumn type="string">1</ccolumn><!-- 左变量关联规则ID -->
<ccolumnRight type="string">1</ccolumnRight><!-- 右变量关联规则ID -->
<columnComment type="string">1</columnComment><!-- 左变量说明 -->
<columnCommentRight type="string">1</columnCommentRight><!-- 右变量说明 -->
<cvalue type="string">1</cvalue><!-- 左变量常量值 -->
<cvalueRight type="string">1</cvalueRight><!-- 右变量常量值 -->
<formula type="string">1</formula><!-- 逻辑表达式 -->
<integral type="number">0</integral><!-- 得分 -->
<missResult type="string">0</missResult><!-- 缺失值结果 -->
<relation type="number">0</relation><!-- 命中模式[1:逻辑与、2:逻辑或] -->
<result type="string">1</result><!-- 结果 -->
<ruleIdLeft type="number">0</ruleIdLeft><!-- 左变量规则ID -->
<ruleIdRight type="number">0</ruleIdRight><!-- 右变量规则ID -->
<state type="string">10</state><!-- 状态[10:启用、20:禁用、99:试运行] -->
<type type="string">1</type><!-- 左变量数据类型[int,string] -->
<typeRight type="string">1</typeRight><!-- 右变量数据类型[int,string] -->
<varType type="number">1</varType><!-- 左变量类型[1:常量、2:环境数据、3:业务数据、4:用户数据、5:场景数据、6:规则结果] -->
<varTypeRight type="number">0</varTypeRight><!-- 右变量类型[1:常量、2:环境数据、3:业务数据、4:用户数据、5:场景数据、6:规则结果] -->
</ruleCondition>
</ruleConditions>
</ruleConditionGroup>
</rule>
</strategy></code></pre>
<hr />
<h3>4.2 业务配置策略结果翻译成XML策略【Translator】--TODO</h3>
<h4>4.2.1 模块需求说明</h4>
<p> </p>
<h4>4.2.1 架构设计图</h4>
<p>暂无</p>
<h4>4.2.2 关键业务时序图</h4>
<h4>4.2.3 程序设计</h4>
<p> </p>
<h4>4.2.4 数据库结构设计</h4>
<p><strong>数据库结果及ER关系图</strong>
暂无</p>
<h2>5. 性能</h2>
<h3>性能评估</h3>
<p>内部低频操作工具,性能要求可以降低,每次导入/导出的时间控制在5s以内即可</p>
<h2>6. 安全</h2>
<h3>操作安全</h3>
<p><span style="color:red"><strong>由于批量处理,回滚方案未考虑,特别是线上策略导入要谨慎操作。>由于批量处理,回滚方案未考虑,特别是线上策略导入要谨慎操作。>由于批量处理,回滚方案未考虑,特别是线上策略导入要谨慎操作。</strong></span></p>