前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战:构建一个车险业务的规则引擎(上篇)

实战:构建一个车险业务的规则引擎(上篇)

作者头像
魏新宇
发布2018-06-25 15:27:33
2.1K0
发布2018-06-25 15:27:33
举报

一、前言

本文仅代表作者的个人观点;

本文的内容仅限于技术探讨,不能作为指导生产环境的素材;

本文素材是红帽公司产品技术和手册;

本文分为上篇和下篇两部分;

本文实验的业务用例是一个汽车保险公司的报价的业务流程。

本课程实验的最终输出是业务流程数据生成的关键绩效指标(KPI),如下所示:

KPI提供了可视化的指标,其中包括:车险(潜在)客户的跳出率、跳出原因、驾驶事故率等。

而这些关键绩效指标,来自保险公司的保单报价业务流程所产生的非规范化数据,如下所示:

上图的业务流程由JBoss BPM Suite的流程引擎管理。

在本文的实验中,我们使用JBoss BPM Suite设计,部署和执行此策略报价业务流程。

JBoss BPM的产品组成如下:

上图中:

  • Business Resource Planner:基于上游OptaPlanner产品的企业资源计划和优化引擎。
  • Business Rules Management:基于上游Drools项目的领先的开源规则引擎。
  • Complex Event Processing:基于上游Drools Fusion项目。
  • Business Process Management:基于上游jBPM项目。

除了这些运行时引擎之外,JBoss BPM Suite和JBoss BRMS基于KIE-Workbench社区项目提供基于Web的工作台,该项目允许管理和监控业务流程和规则项目以及决策服务器、以及基于KIE-Server项目的智能流程服务器,该项目为流程、规则和资源优化工作负载提供轻量级,云原生运行时引擎。

具体组件如下:

上图中:

  • 底层表示可以部署JBoss BPM Suite的各种运行时。BPM是一个非常灵活的平台,可以部署在包括但不限于JBoss EAP、JBoss Fuse和提供平台即服务的Red Hat OpenShift。 JBoss BPM Suite还支持第三方容器,如IBM WebSphere Application Server和Oracle WebLogic。
  • 在第二层:Intelligent Integrated Business Runtime组件提供规则(Drools),Business Events(CEP和Drools Fusion),流程(jBPM)和任务(jBPM)的运行时。
  • Business Modeling :业务建模提供基于网络的工具来编写,建模和实施数据,规则,流程和表单。
  • Business Execution:业务执行为流程和任务提供管理界面和API。
  • Process Simulation :流程模拟是业务分析组件的一部分。过程模拟在BPMN 2.0建模器中提供。
  • Business Activity Monitoring:业务活动监控组件包含仪表板,审计,KPI监控和报告子组件。所有这些组件都由上游的Dashbuilder项目提供。
  • BPM还提供:Developer Tools(JBoss Developer Studio Tooling),Development Repositories (Git and Maven)、System Administration

我们再看一下BPM内部的交互流程:

上图中:

  • 包含有外部开发客户端以及与JBoss BPM Suite组件交互的用户。
  • 企业所有者和开发人员通常使用Dashbuilder提供的功能参与关键绩效指标的创建。
  • 企业所有者和开发人员使用各种基于Web的工具甚至电子表格,参与创建业务规则和流程定义。
  • 遵循DevOps原则,开发人员参与持续集成和交付任务,使用JBoss BPM Suite自动化构建,测试和发布业务应用程序。
  • 开发客户端与Intelligent Process Server公开的REST,SOAP和JMS API集成。 Intelligent Process Server是KIE-Server组件的Red Hat版本的进程服务器部分。
  • 使用JBoss BPM Suite的业务应用程序还需要JBoss Fuse的集成功能以及Red Hat JBoss Data Virtualization的数据虚拟化功能。例如,在JBoss BPM Suite中运行的业务流程可能需要调用由JBoss Fuse公开的远程REST服务。

工作流程:

上图中:

  • 左下角是Business Central开发环境。它从Maven存储库环境中获取所需的Maven依赖关系,从source artifact repository获取更改和更新和代码,并将更改提交回源存储库。
  • 左上方的Git source artifact存储项目的source artifacts - 例如,BPMN 2.0流程定义和规则定义(DRL,决策表等)
  • 构建环境利用Jenkins和binary artifact repository(如Nexus)。它从Git获取更改、构建源代码,并将它们编译成KJAR。 KJAR部署到Maven Nexus存储库。
  • Nexus binary artifact repository 存储所有Mavenartifacts和依赖关系。
  • 此体系结构中的runtime environment建在带有Intelligent Process Server的JBoss EAP之上。部署命令会从构建环境推送到运行时环境(例如,在KieContainer上部署此构件),并从Maven存储库中获取KJAR和其他依赖项。
  • 进程使用JBoss BPM Suite的运行时数据库和审计数据库来存储进程运行时和审计数据。 JBoss BPM Suite需要一个数据库来存储会话、进程、工作项目和人工任务数据(运行时数据)、审计数据(存在审计数据库)。
  • Key performance indicators对确保业务目标得到满足非常有价值。 KPI中可以使用的大部分数据,来自JBoss BPM Suite流程引擎中执行的、每个长时间运行的、进程所生成的审计线索。
  • 从JBoss BPM Suite 6.3版开始,来自审计数据库的数据也在运行时使用,主要用于查询。

二、实验展示

在我们是实验中,JBoss BPM Suite给一个车险公司提供服务:包括政策报价流程、跟踪特定客户的地产保险政策以及要求保险公司作出回应的事件。

那么,到底什么指标可以衡量为保险公司运行是否健康呢?

为了跟踪新的保险单,可以测量从政策报价导出的销售额。 在政策报价过程之后,可以采用不同的方法来检测报价是否导对销售的结果产生积极的影响。

如果政策已售出,则会反映在期间的销售额中,但如果报价不会导致出售,则会反映在跳出率中。

在保险公司情景中,按原因跳出率提供了有关为什么一些报价不会导致政策销售的信息。

想想为什么有人会决定不购买保险单的原因。

客户购买保险后,可能会在保单生命周期中发生事故,例如汽车保险政策中的车祸。 衡量事件的“原因”和“谁”是保险公司的利益所在,因为这可以推动关于哪些客户有资格获得较低的续约价格,以及政策条款和报价流程变化的商业决策。

其他可以影响保险公司业务决策的事例,包括州或地区的气候、汽车特征和人口统计。

什么可以推动客户对报价流程和规则进行更改的决定?

在以下部分中,我们将了解仪表板及其配置,以更好地了解Dashbuilder如何用于监视和优化过程。

我在笔记本上通过virtulbox虚拟机搭建了一套BPM,

在cli中查看BPM的服务状态:

查看JVM:

实验的BPM是一个standalone方式的,内嵌了一个mysql数据库,我们登录并查看mysql的表:

通过浏览器8080端口可以访问:

输入用户名密码后,登录到界面中:

登录进以后,选择business dashboard:

选择qouta dashboard:

这些报价仪表板提供了:关于报价过程的结果的信息,包括关于策略报价是否导致销售或被反弹的信息、以及是否反弹、客户没有购买策略的原因。

我们选择2016年3月数据:

三、配置外部数据源

DASBu建器支持外部数据源的配置。在本节中,我们将探究允许策略引用仪表板访问其外部数据的配置。

选择data source:

数据源提供了对不同外部数据提供者的连接,这些外部提供者通常在JBOSS EAP的数据源中配置,并在本节中与JNDI一起使用。

编辑pquoteReportingDs

查看data providers:数据提供者使用数据源和SQL语句来获取仪表板中所需的信息。

我们修改这个数据源:

四、过程与规则执行

本小节的实验步骤是:

1.创建组织

2克隆Git储存库

3.将KJAR组件部署到KIE服务器容器中

4将进程实例和任务作为JBOSS和USER1用户执行

5.观察统计数据和日志

Task

Type

Description

Prepare Data

Script

Creates domain objects (Driver and Policy) from input process variables.

Set Price

User Task, assigned to agent group

Shows details of the domain objects and allows setting policy’s price.

Review, No review

Exclusive gateway

Criterion is the price of the policy process variable. If less than 500, no review is required.

Review Price

User Task, assigned to Administratorsgroup

Allows overriding the price set by the agent user in the Set Price User Task.

Log

Script

Outputs the state of the policy process variable to the server console.

五、BPM运行时

JBoss BPM Suite包含几个轻量级运行时引擎:

  • 过程(jBPM)
  • 规则和CEP(Drools)
  • 优化(Optaplanner)
  • 支持各种配置和平台
  • 灵活的运行时部署
  • 几个部署模型:
  • 嵌入式(CDI,Spring)
  • 商业中心

我们继续上面的案例,看一个kjar:kie-server-lab-kjar

选择org.specialtripsagency package.

接下来看一下流程建模,本流程是审核机票预订流程的定义。

选择构建和部署:

查看部署在KIE服务器上的容器:

[jboss@localhost ~]$ curl -X GET -H "Accept: application/json" --user jboss:bpms http://localhost:8080/ke-server/services/rest/server/containers

{

"type" : "SUCCESS",

"msg" : "List of created containers",

"result" : {

"kie-containers" : {

"kie-container" : [ {

"status" : "STARTED",

"scanner" : {

"status" : "DISPOSED",

"poll-interval" : null

},

"messages" : [ {

"severity" : "INFO",

"timestamp" : 1527778505502,

"content" : [ "Container flight-booking-1.0 successfully created with module com.redhat.gpte.bpms-advanced:kie-server-lab-kjar:1.0." ]

} ],

"container-id" : "flight-booking-1.0",

"release-id" : {

"version" : "1.0",

"group-id" : "com.redhat.gpte.bpms-advanced",

"artifact-id" : "kie-server-lab-kjar"

},

"resolved-release-id" : {

"version" : "1.0",

"group-id" : "com.redhat.gpte.bpms-advanced",

"artifact-id" : "kie-server-lab-kjar"

},

"config-items" : [ {

"itemName" : "KBase",

"itemValue" : "",

"itemType" : "BPM"

}, {

"itemName" : "KSession",

"itemValue" : "",

"itemType" : "BPM"

}, {

"itemName" : "MergeMode",

"itemValue" : "MERGE_COLLECTIONS",

"itemType" : "BPM"

}, {

"itemName" : "RuntimeStrategy",

"itemValue" : "SINGLETON",

"itemType" : "BPM"

} ]

} ]

}

}

}[jboss@localhost ~]$

查看flight-booking-1.0 容器中的不同过程定义:

}[jboss@localhost ~]$ curl -X GET -H "Accept: application/json" --user jboss:bpms http://localhost:8080/ke-server/services/rest/server/queries/containers/flight-booking-1.0/processes/definitions

{

"processes" : [ {

"process-id" : "org.specialtripsagency.flightbookingprocess",

"process-name" : "Flight Booking Process",

"process-version" : "1.0",

"package" : "org.specialtripsagency",

"container-id" : "flight-booking-1.0"

魏新宇

  • "大魏分享"运营者、红帽资深解决方案架构师
  • 专注开源云计算、容器及自动化运维在金融行业的推广
  • 拥有MBA、ITIL V3、Cobit5、C-STAR、TOGAF9.1(鉴定级)等管理认证。
  • 拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、AIX、HPUX等技术认证。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档