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

一、前言

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

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

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

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

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

本课程实验的最终输出是业务流程数据生成的关键绩效指标(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等技术认证。

原文发布于微信公众号 - 大魏分享(david-share)

原文发表时间:2018-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

涨姿势 | 如何修复硬盘,以及如何避免硬盘损坏

1834
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(150)-WM-902仓库管理的库存物料采购

WM 902仓库管理的库存物料采购 采购是物料管理(MM)的组件。它支持物料管理的所有阶段:物料计划和控制、采购、收货、采购物料的质量检查、库存管理、仓库管理和...

2297
来自专栏顶级程序员

2018年4月份GitHub上最热门的Java项目

4 月份 GitHub 上最热门的Java项目排行已经出炉啦,在本月的名单中,也有新面孔出现,如蚂蚁金服开源的基于 Spring Boot 的研发框架 SOFA...

1094
来自专栏安恒信息

运维安全中的“福尔摩斯”

引 言 随着互联网技术的发展,信息的交互越来越频繁,随之而来信息的安全、运维操作的合规性等等问题越来越多,其对于企业内部管理来说要求越来越高。2015年某某网...

2787
来自专栏NetCore

对于大数据大流量情况下微软架构的水平扩展的遐想(瞎想)

最近回顾SAAS的书籍,书中的扩展架构都有点让我痴迷,但书中介绍的都是以Java,Apache,JBoss,Hadloop等技术实现负载均衡,大数据处理,对于微...

1938
来自专栏FreeBuf

极限黑客破解:低温环境下读取Android加密数据

背景 德国Erlangen大学研究人员找到了一种获取Android手机加密数据的新方法,利用“冷启动攻击”方式可以能从被锁定的Android手机中提取出信息。这...

1829
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合进阶篇(七)一次线上Mysql数据库崩溃事故的记录

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 文章简介 工作这几...

3374
来自专栏DevOps时代的专栏

istio 是啥?一文带你简单了解!

如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 istio,并且知道它和 service mesh 有着牵扯。这篇文章是我之前在公司内部做过的分享,可...

2051
来自专栏SAP最佳业务实践

SAP最佳业务实践:无变式配置按订单生产(148)-5产成品的技术变更

image.png 1、CSKB客户请求技术变更 客户请求作技术变更。步骤的目的是更改产品的配置(添加物料 R20)。 在BOM 浏览器中,用户参数设置是用来...

2604
来自专栏编程一生

JAVA日志的前世今生

直到今天,静儿为了写文章,把自己蒙在空调被里,额,竟然连不上网。于是掀起一个被角,“大象”的巡检结果哒哒哒的弹出来了。然后我感慨:自己当年何苦买那么贵一个“围裙...

522

扫码关注云+社区