首页> 中国专利> 决策配置方法、业务决策方法和决策引擎系统

决策配置方法、业务决策方法和决策引擎系统

摘要

本申请实施例提供一种决策配置方法、业务决策方法和决策引擎系统,该决策配置方法包括:响应对于目标业务的决策流配置操作,为目标业务创建包含至少一个决策分支的决策流,至少一个决策分支中的每个分支中包括至少一个决策事件;响应对于决策流中的目标事件的第一配置操作,根据第一配置操作确定目标参数项以及目标规则运算符,目标事件是决策流中的任意一个决策事件,目标规则运算符包括数值运算符、逻辑运算符或文本运算符中的至少一种;响应对于目标参数项和目标规则运算符的拖拉拽配置操作,为目标事件生成条件决策规则;其中,决策流用于在被触发执行时,根据决策流中配置的各个决策事件的条件决策规则输出决策结果。

著录项

  • 公开/公告号CN112394922A

    专利类型发明专利

  • 公开/公告日2021-02-23

    原文格式PDF

  • 申请/专利权人 成都新希望金融信息有限公司;

    申请/专利号CN202011413107.0

  • 发明设计人 周智杰;王小东;廖浩;

    申请日2020-12-02

  • 分类号G06F8/34(20180101);G06F8/38(20180101);G06F8/41(20180101);

  • 代理机构11463 北京超凡宏宇专利代理事务所(特殊普通合伙);

  • 代理人钟扬飞

  • 地址 610000 四川省成都市高新区仁和街39号6栋2层3号

  • 入库时间 2023-06-19 10:00:31

说明书

技术领域

本申请涉及决策引擎技术领域,具体而言,涉及一种决策配置方法、业务决策方法和决策引擎系统。

背景技术

在互联网时代背景下,很多行业的信息量和业务量都在快速增长,需要进行快速判断和快速决策的场景越来越多,因此,有必要提出智能化的决策引擎。

决策引擎是一种通用工具,适用于所有需要进行快速决策的场景,可以将各个领域的内容梳理成一系列规则,从而为相应领域的决策事件判断过程提供处理策略和处理结果。其中,使用者可以根据实际需求对具体的事件进行配置,然后由决策引擎根据实际得到的数据以及实际配置的内容对相应的事件进行判断。

但是,目前的决策引擎需要用户耗费大量的学习成本来学习决策引擎对应的脚本知识,对于使用者的要求较高,配置过程较为繁琐。

发明内容

本申请的目的在于提供一种决策配置方法、业务决策方法和决策引擎系统,能够改善现有技术中的决策引擎对于使用者的要求较高、配置过程较为繁琐的问题。

第一方面,本申请提供一种决策配置方法,所述方法包括:

响应对于目标业务的决策流配置操作,为所述目标业务创建包含至少一个决策分支的决策流,所述至少一个决策分支中的每个分支中包括至少一个决策事件;

响应对于所述决策流中的目标事件的第一配置操作,根据所述第一配置操作确定目标参数项以及目标规则运算符,所述目标事件是所述决策流中的任意一个决策事件,所述目标规则运算符包括数值运算符、逻辑运算符或文本运算符中的至少一种;

响应对于所述目标参数项和所述目标规则运算符的拖拉拽配置操作,为所述目标事件生成条件决策规则;

其中,所述决策流用于在被触发执行时,根据所述决策流中配置的各个决策事件的条件决策规则输出决策结果。

在上述方法中,用户可通过拖拉拽操作方式对决策流进行快速配置,上述方法可基于拖拉拽配置的方式为决策流中的各个决策事件快速生成相应的条件决策规则,在上述方法应用于决策引擎的决策配置过程时,可降低对于使用者的要求,无需用户刻意为了配置过程学习大量的编程知识和脚本知识,降低了配置难度。在面临稍微复杂的规则配置场景时,通过上述方法可利用元编程的思想进行配置,通过对目标参数项和目标规则运算符的拖拉拽配置操作就可为决策事件生成条件决策规则,相较于用户根据业务内容先自行拆分出很多子表达式然后对各个子表达式自行进行嵌套组装配置的方式,通过上述方法可减少用户对于配置过程中的中间变量的使用数量,降低配置难度。

在可选的实施方式中,所述方法还包括:

响应对于所述决策流的可视化测试操作,获取测试参数;

将所述测试参数输入到所述决策流中,并通过所述决策流中的各个条件决策规则对所述测试参数进行决策仿真;

在进行决策仿真的过程中,根据所述决策流中的各个决策事件的仿真的顺序或仿真的状态,进行仿真标记,并将仿真标记结果显示在所述决策流上。

通过上述实现方式,可以将决策流的测试仿真过程可视化,便于用户快速得知测试状态,有利于为决策流的仿真执行过程进行追踪。

在可选的实施方式中,所述方法还包括:

响应对于所述目标事件的第二配置操作,显示在线编程界面;

根据从所述在线编程界面中获取到的代码内容,为所述目标事件生成条件决策规则。

通过上述实现方式,可以在面临复杂业务逻辑的场景下,例如在缺乏目标规则运算符或目标参数项时,或,在难以仅通过一行表达式完成一个决策事件的条件决策规则配置过程时,或,业务逻辑比较复杂时,用户可以通过在线编程的方式进行配置操作,上述实施方式可基于在线编程得到的内容为相应的决策事件生成条件决策规则,无需用户另外下载并安装代码编辑器,因此,可降低用户操作难度。

在可选的实施方式中,在显示在线编程界面之后,所述方法还包括:

为所述目标事件生成事件文件;

根据所述事件文件的类型,或,根据从所述在线编程界面中获取到的代码内容,对所述在线编程界面中的代码内容进行在线检测。

通过上述实现方式,可以对在线编程的内容进行在线检测,相较于写完所有代码后由用户自检或采用线下的代码处理工具对完整的代码文档进行编译的处理方式,上述实现方式可以支持边写代码边检测,无需用户另外执行编译触发操作。

在可选的实施方式中,所述根据所述事件文件的类型,或,根据从所述在线编程界面中获取到的代码内容,对所述在线编程界面中的代码内容进行在线检测,包括:

响应对于所述在线编程界面的代码编写操作,在代码编写过程中根据所述事件文件的类型或从所述在线编程界面中获取到的代码内容,调用预设的语言服务中间件;

通过所述语言服务中间件调用语言服务模块,并通过所述语言服务模块对所述在线编程界面中的代码内容进行代码检测;

在所述在线编程界面中显示代码检测结果。

通过上述实现方式,可自动根据事件文件的类型或在线编程得到的代码内容,调用相应的语言服务中间件和语言服务模块,从而根据调用的中间件和模块进行代码在线检测,并且代码检测结果可以及时显示于在线编程界面中,对于用户而言,无需刻意学习多种编程语言,有利于用户及时通过在线编程界面中显示的代码检测结果进行代码纠正。

在可选的实施方式中,所述代码检测结果包括:关键字提示标记、代码补全提示和异常代码提示中的至少一种。

通过上述实现方式,可以支持在线编程的关键字提示、代码自动补全或异常代码检测。

在可选的实施方式中,所述语言服务模块包括词法分析器和语法分析器,所述语言服务模块支持Java语言、Python语言、Jcc语言、C++语言和Groovy语言中的至少一种。

通过上述实现方式,可以提升兼容性,上述实施方式可自动根据用户在进行在线编程时所使用的编程语言类型,调用相应的语言服务模块,从而对在线编码过程进行代码语言自适应检测,对于用户而言,无需学习多种编程语言,可降低对于用户的要求。

在可选的实施方式中,响应对于所述决策流中的目标事件的第一配置操作,根据所述第一配置操作确定目标参数项以及目标规则运算符,包括:

根据所述第一配置操作选中的参数类型,从参数池中获取所述目标参数项;

根据所述第一配置操作选中的表达式类型,从运算规则池中获取所述目标规则运算符。

通过上述实现方式,可基于第一配置操作选中的内容来获取目标参数项和目标规则运算符,可减少传统配置过程中需要用户完成的数据定义工作量,可减少用户对于复杂运算功能的代码函数学习成本,上述实现方式可支持用户基于自定义的领域建模语言进行拖拉拽配置,从而进行决策配置。

第二方面,本申请提供一种业务决策方法,所述方法包括:

通过预设的数据接口获取目标业务对应的待处理参数;

对所述待处理参数进行预处理,得到待决策参数,所述预处理包括数据清洗;

将所述待决策参数输入至通过前述第一方面所述的方法配置得到的决策流中,并按照所述决策流中配置的各个决策事件的条件决策规则对所述待决策参数进行决策运算,得到所述待决策参数对应的决策结果。

通过上述方法,可以基于前述第一方面的方法配置得到的决策流,为目标业务对应的待处理参数快速提供决策结果。

第三方面,本申请提供一种决策引擎系统,包括:

存储器;

处理器;

所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时执行前述第一方面或第二方面所述的方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种决策引擎系统的架构示意图。

图2为本申请实施例提供的一种决策配置方法的流程图。

图3为本申请实施例提供的一个实例中的决策流的示意图。

图4为本申请实施例提供的一个实例中的一个决策事件的配置示意图。

图5为本申请实施例提供的一种决策配置方法的部分流程图。

图6为本申请实施例提供的一种决策配置方法的另一部分流程图。

图7为本申请实施例提供的一种业务决策方法的流程图。

图8为本申请实施例提供的一种决策引擎系统的功能实施结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

在现有技术中,需要采用决策引擎提供快速决策的场景有很多,例如,对于互联网金融机构而言,获取指定专业机构(例如人民银行)的征信报告的难度较大,经常需要依赖大量且类型复杂的其他征信数据来开发风控体系,从而对抗各种欺诈风险、信用风险,在搭建风控体系时需要针对多种复杂的业务场景进行快速给出决策方案。目前有一些企业的风险管控方案需要使用十几家甚至更多家企业的外部数据,这些外部数据需要经过对接、清洗、衍生和转化,然后被送入到决策引擎中的特定决策模型中进行分析,最终得到决策结果。决策结果通常是:合格、不合格、通过、不通过、待定等。

实际上,如何配置决策引擎中的核心决策模型或规则、如何将模型和规则落实到实际的产品使用人员处,以使产品使用人员能够对后台研发人员提供的模型和规则进行高效运用,对于产品使用人员、后台研发人员而言都是较为棘手的事情。以金融领域的风控产品为例,一个产品通常需要产品设计人员部署几十条甚至上百条规则,需要使用几个、十几个甚至上百个模型,如果每次要部署一条规则或使用一个模型时,都临时询问相应的后台研发人员或临时查询研发资料,沟通成本、学习成本高。尤其是在一些场景下,如果采用一成不变的规则很容易被识破,需要不断的对风控体系进行优化迭代,而不断的切换规则、模型、决策逻辑对于开发部门带来了更大的困难。

因此,如何为业务或者产品使用者提供便于实际使用的工具,降低用户的学习成本,降低决策引擎配置、使用难度,对于研发部门或者业务部门而言是有必要的。可以理解的是,这种需要进行高效决策的场景不仅在金融行业较为常见,在金融以外的其他行业也是较为常见的。只要是需要进行高效决策,需要以多种条件来判断是否执行某一功能的决策场景,都可以采用决策引擎提供决策结果。

目前,市场常见的开源决策引擎系统,例如JBoss Drools、Mandarax、OpenRules、JEOPS、InfoSapient、Roolie、Apache CamelIBM、URule、radar、drools等决策引擎系统,存在产品学习成本高、使用方式繁琐的缺陷,在面临复杂的业务处理逻辑时可能不支持用户自行编写代码,配置过程、使用过程对于产品使用者而言较为困难。而市场上的ODM、OracleBusiness Rules、旗正规则引擎、Jess、TopRules、明策智能决策、益博睿决策引擎、神州融大数据风控平台、Sparkling Logic、ILOG等商用的决策引擎产品的配置过程也是较为繁琐,需要用户自行完成复杂的规则拆分和重组过程,需要用户为拆分的小规则分别设计大量的中间变量,并且有一些决策引擎不支持Java、Python语言,需要产品使用者额外学习特定决策引擎所使用的较为小众的编程语言。因此,目前的决策引擎系统对于使用者的要求较高,决策流的配置过程较为繁琐。

有鉴于此,发明人提出以下实施例予以改善,提供了一种可基于集成开发环境(Integrated Development Environment,IDE)实现的云端通用决策引擎系统,该系统可执行本申请实施例提供的方法,对于较为简单的业务,可以通过拖拉拽的简单配置方式快速完成配置过程,在以拖拉拽配置方式进行配置时,采用了元编程思想来简化用户的配置操作难度。对于稍微复杂一点的业务,除了支持拖拉拽配置方式以外,还支持以云端在线编程的方式实现配置,无需用户额外下载、安装并学习编程所需的代码编辑器,在浏览器上即可进行在线代码编辑、调试、测试,代码的编译执行在云端(服务器一侧)完成,可以支持边写代码边进行代码检测,在用户进行代码编写的过程中可显示代码检测结果。整个决策流的配置方式较为简便,用户可基于图形编辑、流程拖拽编排的操作随意创建或更新决策流,决策流的仿真/执行结果是可视化的,仿真执行过程可追踪。

请参阅图1,图1为本申请实施例提供的一种决策引擎系统的架构示意图。该决策引擎系统是一种基于集成开发环境(Integrated Development Environment,IDE)实现的云端通用决策引擎系统。

如图1所示,该决策引擎系统包括数据接入层、数据计算层、决策引擎层、应用层。

其中,数据接入层可提供一些数据交互接口和API(Application ProgrammingInterface,应用程序接口),用以调用需要从外部调用或接入的数据,这些数据可以是经过授权同意后可以获取的征信数据、消费数据、三方数据等。

数据计算层,用于对从数据接入层得到的多种数据进行加工分析。数据计算层可支持分布式的离线数据计算和实时数据计算,可通过Spark、Impala、Hive等技术对海量的离线数据进行计算、抽取(例如,ETL抽取,ETL的全称是Extract-Transform-Load,即数据抽取-转换-装载的过程,是将业务系统的数据经过抽取、清洗转换之后加载(Load)到数据仓库的过程,目的是将的分散、零乱、标准不统一的数据整合到一起)、特征加工,可通过Flink,Storm等工具对海量的实时数据进行ETL、特征加工、指标计算。加工分析出来的数据或者特征可输入到一些业务模型中或者决策逻辑中,在本申请实施例中,这些业务模型或决策逻辑可以是本申请实施例中的决策流。

决策引擎层,用以提供决策流的编辑配置、仿真测试和执行功能,决策流的仿真、执行结果可视化,还可用于实现业务决策逻辑的流程编排,流程编排可以视为决策流的宏观配置,而对于决策流中的具体结点、具体事件的配置可视为对于决策流的微观配置。

可选地,决策引擎层还可以用于监控预警,可用于对决策引擎系统中的多个模块进行监控预警,例如可监控决策流的决策执行情况、决策结果、输入到决策流中的数据源的数据质量(可从决策流的中断次数、数据计算层对于数据的加工分析时间、数据源的稳定性等方面评估数据质量)、决策流的执行时间等。其中,可通过Flink工具对需要进行监控的数据进行数据清洗,清洗成符合监控需求的指标,利用可托拉拽配置的网页配置监控规则、配置监控业务所需的逻辑表达式,利用领域建模语言进行逻辑表达式的解析计算,把满足监控预警条件的指标数据以图文组合的方式进行推送(可采用电话、企业微信、钉钉等方式进行推送)。

应用层,用以根据决策引擎层的决策结果,执行具体的业务功能。在应用层中可以设置当决策结果指示为“通过”、“合格”时,调用什么接口、生成什么数据、执行什么操作等。根据不同的业务需求,可以在应用层中设置不同的功能,例如可以针对贷前、贷中、贷后、准入或其他非金融场景,在应用层中设置不同的业务功能。应用层中的业务功能包括但不限于:信息识别、合规校验、资格审查、自动审批等。

在本申请实施例中,不同用户之间的数据相互隔离,即,对于决策引擎的使用者而言,每个使用者只能看到自己配置的决策流和自己配置的条件决策规则。

可以理解的是,图1所示架构仅作为决策引擎系统的一种软件功能架构示意图,在实际应用中,可以有更多或更少的功能层或具有不同于图1所示的架构。在一些应用场景下,部分功能层的功能可以合并。

请参阅图2,图2为本申请实施例提供的一种决策配置方法的示意图。该方法可应用于本申请实施例提供的决策引擎系统。

如图2所示,该方法可包括步骤S21-S23。

S21:响应对于目标业务的决策流配置操作,为目标业务创建包含至少一个决策分支的决策流,该至少一个决策分支中的每个分支中包括至少一个决策事件。

其中,本申请实施例中的业务可以是金融行业或非金融行业的业务。示例性的,本申请实施例的决策场景适用的业务除了可以是金融行业的反欺诈、信贷风控、保险核保、自动理赔等业务场景以外,还可以是其他行业的应用场景,例如,可以是自动驾驶场景(例如,在需要根据多种环境数据、自检数据来判断当前是否适合进行模式切换)、设备维修场景(例如,根据多种参数来判断是否有必要立刻对某个设备进行维修)、监控预警(例如,在面临多种复杂参数的情况下判断什么条件下需要进行预警)等业务场景。

关于S21中的决策流配置操作,可以是但不限于:决策流新建操作、事件新建操作、分支新建操作、事件配置操作、分支配置操作等。本实施中的每个决策分支可用于指向一个结点。通过S21可得到包含多个结点、多个决策分支的决策流。

其中,本申请实施例中的任一结点可以对应一个决策事件(简称为事件)。通过事件配置操作可为该事件配置操作对应的目标事件配置该事件对应的决策规则(在仿真或执行阶段,如果该目标事件对应的决策规则被执行,则可根据该目标事件对应的分支执行下一个事件的决策规则)。根据分支配置操作可配置各决策事件的关系,通过分支配置操作可指示各决策事件之间的处理顺序。

图3示出了一个实例中的决策流的示意图。在图3中的“A”、“B”、“C”、“D”、“E”、“F”、“G”对应的结点表示决策事件。用户可自行配置各个事件之间的执行优先级和权重。每个事件可对应一种条件决策规则。

可选的,对于为决策流新建的结点或已经建立并配置过的结点,在被选中时均可成为本申请实施例中的目标结点。目标结点对应的事件记为目标事件,在确定目标事件时可执行S22。在一些实施例中,可以先进行结点配置,再基于结点配置结果生成相应的决策流(即,在一些实施例中可先执行S22和S23再执行S21)。

S22:响应对于决策流中的目标事件的第一配置操作,根据第一配置操作确定目标参数项以及目标规则运算符,该目标事件是决策流中的任意一个决策事件,该目标规则运算符包括数值运算符、逻辑运算符或文本运算符中的至少一种。

其中,第一配置操作可以是但不限于:双击、选中、拖拉拽操作。可根据第一配置操作选中的参数类型,从参数池中获取目标参数项。可根据第一配置操作选中的表达式类型,从运算规则池中获取目标规则运算符。

以此可基于第一配置操作选中的内容来获取目标参数项和目标规则运算符,可减少传统配置过程中需要用户完成的数据定义工作量,可减少用户对于复杂运算功能的代码函数学习成本,上述实现方式可支持用户基于自定义的领域建模语言进行拖拉拽配置,从而进行决策配置。本申请实施例提供的运算规则池支持的运算符、参数池支持的参数项均很丰富。

在选中目标参数项或目标规则运算符时,可执行S23。

S23:响应对于目标参数项和目标规则运算符的拖拉拽配置操作,为目标事件生成条件决策规则。

其中,决策流用于在被触发执行时,根据决策流中配置的各个决策事件的条件决策规则输出决策结果。

其中,运算规则池中的表达式类型为“数值运算符”的规则运算符包括但不限于:“加(+)”、“减(-)”、“乘(*)”、“除(/)”、“平方根(sqrt)”、“绝对值(abs)”、“2为底的对数(log)”、“e为底的对数(ln)”、“10为底的对数(lnTen)”、“阶乘(nPower)”、“e为底的指数函数(xExp)”、“向下取整(floor)”、“向上取整(ceil)”、“最大值(max)”、“最小值(min)”、“平均值(avg)”、“求和(sum)”、“x的y次幂(xPowerY)”、“余数(mod)”等。

运算规则池中的表达式类型为“逻辑运算符”的规则运算符包括但不限于:“与(and)”、“或(or)”、“非(not)”、“真(true)”、“假(false)”、“大于(>)”、“大于等于(>=)”、“小于(<)”、“小于等于(<=)”、“等于(==)”、“不等于(!=)”等。

运算规则池中的表达式类型为“文本运算符”的规则运算符包括但不限于:“在……内(funcIn)”、“不在……内(funcNotIn)”,“以……开始(funcWithStart)”、“不以……开始(funcNotWithStart)”、“以……结束(funcWithEnd)”、“不以……结束(funcWithNotEnd)”、“包含……(funcContain)”、“不包含……(funcNotContain)”、“在集合内(funcInSet)”、“不在集合内(funcNotInSet)”、“正则包含(funcRegex)”、“正则不包含(funcNotRegex)”、“为空(funcIsEmpty)”、“不为空(funcIsNotEmpty)”等。其中,这些规则运算符中的省略号表示需要由用户配置的内容。

本申请实施例中,运算规则池中的各个规则运算符可称为计算算子或元运算符,每个规则运算符通过DSL(Domain Specified Language,领域建模语言)实现,可视为一个函数。

如图4所示,示出了一个实例中的一个决策事件的拖拉拽配置示意图。

以“年龄判断”这一决策事件作为目标事件(该目标事件可以是图3中的任一事件)为例,当从参数池中选中参数类型为“用户信息”且选中“年龄”这一目标参数项时,可基于拖拉拽操作,将该目标参数项添加到规则表达式的配置区域中,同理,在运算规则池中的“大于”这一表达式类型为“逻辑运算符”的目标规则运算符被选中时,基于拖拉拽操作,将该目标规则运算符添加到规则表达式的配置区域中,对于被添加到规则表达式的配置区域中的内容,用户仍然可以通过拖拉拽的方式进行配置。基于该原理,可在规则表达式的配置区域中基于拖拉拽配置操作得到,由一行表达式条件生成的条件决策规则(如图4所示),其含义是如果输入数据类型包括用户信息中的“年龄”,并且年龄大于22,并且输入数据类型包括用户信息中的“姓名”,且姓名是“A1”、“A2”中的其中一个,当这一条件成立时,输出“赋值:0”的结果,而在该条件不成立时,输出“赋值:1”的结果,其实质含义是用于判断用户年龄是否大于22,并且判断用户姓名是否为A1,A2中的其中一个,如果判断结果都为是,那么就为该目标事件输出一个赋值结果,否则输出另一个赋值结果,不同的赋值结果用于表示不同的处理方式(例如,赋值0可表示拒绝,赋值1可表示通过),以此得到条件决策规则。

在为目标决策事件进行配置的过程中,还可以配置中断条件,中断条件可以用于指示在什么条件下决策流将停止仿真、停止执行。

在上述方法中,对于决策引擎的使用者而言,无需关注底层代码,仅需通过对运算规则池中的规则运算符、参数池中的参数项进行选中、拖拽,执行上述方法的设备或系统可自动基于用户的拖拉拽配置操作,进行表达式的嵌套组装,理论上可以实现一行写完一个条件决策规则组的表达式,从而进行计算。上述方法中基于拖拽的规则运算符生成条件决策规则的方式,实现了基于DSL的表达式计算引擎,对于用户而言,无需用户先自行对规则进行拆分,然后自行对拆分后的多个小规则进行分别配置以及规则组装,即,无需用户自行把一个复杂表达式拆分成很多个原子表达式参与计算。

其中,对于已经建立的决策流,可响应对于决策流的更新操作,对决策流中的各个决策分支进行更新,更新内容包括但不限于对决策分支或决策分支中的决策事件进行增加、删除、修改。该更新过程也可以通过托拉拽配置方式实现。

在上述S21-S23的方法中,用户可通过拖拉拽操作方式对决策流进行快速配置,上述方法可基于拖拉拽配置的方式为决策流中的各个决策事件快速生成相应的条件决策规则,在上述方法应用于决策引擎的决策配置过程时,可降低对于使用者的要求,无需用户刻意为了配置过程学习大量的编程知识和脚本知识,降低了配置难度。在面临稍微复杂的规则配置场景时,通过上述方法可利用元编程的思想进行配置,通过对目标参数项和目标规则运算符的拖拉拽配置操作就可为决策事件生成条件决策规则,无需用户根据业务内容先自行拆分出很多子表达式然后对各个子表达式自行进行嵌套组装配置,通过上述方法可减少用户对于配置过程中的中间变量的使用数量,可以降低配置难度。

可选的,在面临复杂业务需求时,例如当上述运算规则池中的规则运算符、参数池中的参数项无法满足用户配置需求时,或者难以通过简单的拖拉拽配置满足业务需求时,本申请实施例提供的方法可支持以在线编程的方式对目标事件进行配置。该实现过程可包括步骤S24-S25(见图5)。当然,本申请实施例的方法也支持导入脚本的线下编程方式进行代码编写,从而对目标事件进行配置。

S24:响应对于目标事件的第二配置操作,显示在线编程界面。

第二配置操作可以是对于目标事件的在线编程触发操作,具体触发方式不应理解为对本申请的限制。

用户可基于在线编程界面输入代码内容和注释内容。

其中,在需要以在线编程的方式对目标事件进行配置时,可响应该第二配置操作,为目标事件生成事件文件。用户可以根据实际掌握的编程语言自行为事件文件选择文件保存类型,通过文件保存类型可区分当前的事件文件中的代码内容是以哪种编程语言写的。

示例性的,事件文件的后缀名可以是但不限于“.java”、“.py”,通过事件文件的文件后缀名可区分事件文件的类型。

S25:根据从在线编程界面中获取到的代码内容,为目标事件生成条件决策规则。

其中,当在线编程界面中的代码内容经过检测、编译时,可为目标事件生成条件决策规则。

通过上述S24-S25的实现方式,可以在面临复杂业务逻辑的场景下,例如在缺乏目标规则运算符或目标参数项时,或,在难以仅通过表达式完成一个决策事件的条件决策规则配置过程时,用户可以通过在线编程的方式进行配置操作,上述实施方式可基于在线编程得到的内容为相应的决策事件生成条件决策规则,无需用户另外下载并安装代码编辑器,因此,可降低用户操作难度。

可选的,可以在显示在线编程界面之后,为目标事件生成事件文件,也可以先为目标事件生成事件文件,再显示在线编程界面。

当在线编程界面中存在代码内容时,可根据事件文件的类型,或,根据从在线编程界面中获取到的代码内容,对在线编程界面中的代码内容进行在线检测。

其中,可以在用户向在线编程界面中输入代码的过程中,实时检测在线编程界面中的代码内容,当检测到在线编程界面中的内容发生变更时,可以将在线编程界面中的代码内容打包为一个待检测文件(该待检测文件的类型与事件文件的类型相同,该前述的事件文件可以成为待检测文件),对待检测文件中的代码内容进行在线检测。

通过上述的实现方式,可以对在线编程的内容进行在线检测,相较于写完所有代码后由用户自检或采用线下的代码处理工具对完整的代码文档进行编译的处理方式,上述实现方式可以支持边写代码边检测,无需用户另外执行编译触发操作。

其中,如图6所示,在线检测的过程可包括步骤:S26-S28。

S26:响应对于在线编程界面的代码编写操作,在代码编写过程中根据事件文件的类型或从在线编程界面中获取到的代码内容,调用预设的语言服务中间件。

S27:通过语言服务中间件调用语言服务模块,并通过语言服务模块对在线编程界面中的代码内容进行代码检测。

S28:在该在线编程界面中显示代码检测结果。

作为一种实现方式,可根据文件的后缀名确定文件的类型,从而确定出该文件中的代码内容对应的语言类型,在确定出语言类型后,可调用预设的语言服务中间件。

作为另一种实现方式,可根据在线编程界面中获取到的代码内容,例如代码内容中的一些关键词进行识别,这些关键词可以是一些特定的编程语言下会使用的函数名,通过关键词识别的方式也可以确定代码内容对应的语言类型。

示例性地,预设的语言服务中间件可以包括API(Application ProgrammingInterface,应用程序接口)、http协议和WebSocket通信工具。

其中,语言服务模块包括词法分析器和语法分析器。通过词法分析器可对当前的在线编程界面中的代码内容进行词法检测,通过语法分析器可对当前的在线编程界面中的代码内容进行语法检测。

语言服务模块支持Java语言、Python语言、Jcc语言、C++语言和Groovy语言中的至少一种。

对于已经确定的目标事件,由于同一份文件要求同一种语言进行代码编写,因此在同一次在线编程过程中仅调用一种语言的语言服务模块。

其中,词法分析器和语法分析器可视为现有的代码编辑器中被封装的子模块,在现有技术中,通常未将这些子模块进行拆分使用,而是将整个代码编辑器的相关组件都下载并安装到本地终端后进行使用的。但在本申请实施例中,预先在决策引擎系统中为不同的编程语言提供了不同语言对应的词法分析器和语法分析器,提供了可支持多种语言的集成语言环境(即,本申请实施例提供了在线的IDE)。对于用户而言,无需自行下载并安装复杂的代码编辑器,仅需关注在线编程界面中的代码内容,上述方法可自动根据在线编程界面中的代码内容调用相应编程语言的词法分析器和语法分析器。

调用词法分析器和语法分析器的过程,可以视为将在线编辑界面中的代码内容分发到了系统后台的执行环境中进行编译、检测。

可选的,代码检测结果可包括:关键字提示标记、代码补全提示和异常代码提示中的至少一种。

关键字提示标记的标记方式可以是以设定颜色(例如黄色、红色、绿色等)进行高亮标记,示例性地,关键字可以是首次出现的未经定义的参数。

代码补全提示的提示内容可基于词法分析器和语法分析器的检测结果确定,通过代码补全功能可以根据用户已经输入的代码内容,推荐可选用的代码字段或语法,推荐的代码字段或语法通常是经过统计得到的高频使用词,或一些特定语法下的专用表达内容,或编程语法约定的内置函数。在一些实施例中,如果考虑交互效率,可以省略代码补全功能。

异常代码提示的提示内容可基于词法分析器和语法分析器的检测结果确定,可以是经过词法分析器和语法分析器确定出的存在字符缺失、字符错误,语法错误等内容。

以此可以支持在线编程的关键字提示、代码自动补全或异常代码检测。

在一个应用场景下,用户仅需打开浏览器即可进行在线编程,无需下载、安装复杂的代码编辑器,可随时随地进行代码编写,直接进入开发状态。示例性地,用户可以打开网页版本的在线编辑器,该在线编辑器用以提供在线编程界面,基于该在线编辑器中的代码内容可实时生成待检测文件,也可以按照设定的检测周期,为该在线编辑器中的代码内容实时生成待检测文件。然后基于待检测文件的文件类型或代码内容调用后端的语言服务中间件,由语言服务中间件根据识别编程语言,根据识别到的编程语言调用相应的语言服务模块,通过语言服务模块对待检测文件的代码内容进行在线编译、语言检查、词法分析、语法分析,得到在线检测结果,并基于在线检测结果生成高亮关键字提示内容、代码补全提示内容和错误代码提示内容。其中,语言服务模块得到的在线检测结果通过语言服务中间件反馈到前端的在线编辑器,由前端的在线编辑器对在线检测结果进行显示。在其他应用场景下,在线编辑器、语言服务中间件、语言服务模块之间的交互过程可视为本地终端与云主机之间的交互过程,用户可将用于录入代码内容的本地终端连接到云主机,通过管理云主机中的资源进行在线编程和代码在线检测。

通过上述的实现方式,可自动根据事件文件的类型或在线编程得到的代码内容,调用相应的语言服务中间件和语言服务模块,从而根据调用的中间件和模块进行代码在线检测,并且代码检测结果可以及时显示于在线编程界面中,对于用户而言,无需刻意学习多种编程语言,有利于用户及时通过在线编程界面中显示的代码检测结果进行代码纠正。上述方式具有较强的兼容性,可自动根据用户在进行在线编程时所使用的编程语言类型,调用相应的语言服务模块,从而对在线编码过程进行代码语言自适应检测,对于用户而言,无需学习多种编程语言,可降低对于用户的要求。

可选的,上述的方法还可包括:S301-S303。

S301:响应对于决策流的可视化测试操作,获取测试参数。

其中,当决策流的配置操作界面中的测试按钮被触发时,视为发起了对于决策流的可视化测试操作。测试参数可以是预先导入的参数,也可以是临时录入的参数。测试参数中可包括多种数据类型的参数,测试参数可以包括但不限于用户年龄值、用户姓名内容、身份证号码中的部分字段、籍贯、还款次数等。具体的测试参数可根据实际业务进行设置。

S302:将测试参数输入到决策流中,并通过决策流中的各个条件决策规则对测试参数进行决策仿真。

S303:在进行决策仿真的过程中,根据决策流中的各个决策事件的仿真的顺序或仿真的状态,进行仿真标记,并将仿真标记结果显示在决策流上。

可选的,可以为决策仿真过程生成决策处理日志。

示例性地,可以在决策流上显示各个决策事件的仿真执行顺序,可以在决策流上显示各个决策事件对应的输入参数和输出参数。可以采用不同的标记方式(例如采用不同的颜色)对已经经过仿真、未经过仿真和正在进行仿真的决策事件进行标记。

通过上述的实现方式,可以将决策流的测试仿真过程可视化,便于用户快速得知测试状态,有利于为决策流的仿真执行过程进行追踪,可将测试过程透明化。

可选地,上述方法还可以包括:在配置的决策流上显示各个决策事件的规则摘要。规则摘要内容可以是条件决策规则中的部分字段、变量。

基于同一发明构思,本申请实施例还提供一种业务决策方法。该方法可应用于本申请实施例的决策引擎系统。

如图7所示,该方法可包括:步骤S31-S33。

S31:通过预设的数据接口获取目标业务对应的待处理参数。

其中,可通过决策引擎系统的数据接入层中设置的数据接口获取待处理参数。其中,待处理参数的数据类型与实际的业务类型有关,可以与前述的测试参数的数据类型相同。待处理参数可以包括企业内部数据接口得到的数据(例如,理财资产、用户姓名等),还可以包括企业外部的外部系统提供的数据(例如,三方征信金融数据、银联提供的交易数据、工商机构或税务机构提供的行政数据等)。

S32:对待处理参数进行预处理,得到待决策参数,预处理包括数据清洗。

其中,可通过决策引擎系统中的数据计算层对待处理参数进行预处理,例如可对来自异构系统的多种数据源进行离线计算或实时计算,以此对待处理参数进行特征提取、数据清洗和指标转化计算。示例性地,指标转化计算可以是将数据内容转换为符合决策流的参数类型需求的待决策参数。

S33:将待决策参数输入至通过前述的决策配置方法配置得到的决策流中,并按照决策流中配置的各个决策事件的条件决策规则对待决策参数进行决策运算,得到待决策参数对应的决策结果。

其中,可通过决策引擎系统中的决策引擎层执行S33。

通过上述的方法,可以基于前述决策配置方法配置得到的决策流,为目标业务对应的待处理参数快速提供决策结果。

在一个应用场景下,用户可基于决策引擎系统中的决策引擎层进行决策流的编辑配置、仿真或执行,可对决策流中的单个决策事件配置条件决策规则,可基于图编辑的配置方式实现对于决策流的多种配置,配置内容包括但不限于增加事件、增加变量、变量赋值、增加分支(增加边,实现结点连接,连接是指单向连接,即只能从前往后,不能从后往前连接)、配置各个事件的输入数据和输出数据类型、格式等。

当用户在决策流的配置操作界面中新建一个决策流时,决策流的初始位置默认生成一个开始结点。基于该开始结点,用户可根据实际的业务决策逻辑,在操作界面上以拖拉拽配置的方式创建新的结点(对应新的事件,每个结点可视为一个决策事件)、创建新的边(对应新的分支)、构建各个节点的规则表达式。

每个规则表达式可视为一个条件决策规则,这些表达式支持数值计算、逻辑计算、文本计算。用户可在操作界面上配置多个结点,用户可自行决定配置几个结点,例如,可以选择一个结点配置完所有规则,也可以选择将一个结点的规则分拆配置为很多结点的规则,对于复杂的业务逻辑,如果拖拉拽配置方式不足以满足配置需求,可以使用在线IDE来编写代码实现灵活配置,也可以采用导入脚本的简单文本编辑方式(可视为线下编程)来进行配置。

其中,每一个决策流都有独立的输出结果,每个决策流中的分支可以有独立的输出结果,整个决策流的输出结果即为决策结果。决策流的输入参数来源于数据接入层、数据计算层。

在决策流配置完成后,可基于决策引擎层进行仿真、执行,仿真过程与执行过程原理相同,区别仅在于采用的数据源不同。

仿真、执行的过程可以包括:获取决策流的快照(该快照是完成决策流配置后生成的),基于决策流的快照恢复决策流中的每一个结点的配置数据(这些配置数据用于描述决策流中的各个决策事件的条件决策规则)。根据为决策流中的各个结点配置的条件决策规则,组装得到完整的决策流。然后可读取决策流中实际用到的输入数据(作为数据源),从决策流的开始结点开始,将其子结点依次加入到结点执行队列,判断该队列中的每一个结点的所有父结点是不是都被执行过。以决策流中的目标结点为例(该目标结点对应决策流中的目标事件),如果目标结点的所有父结点都被执行过,则执行该目标结点中的规则,表达式,变量赋值等运算(即,执行目标事件对应的条件决策规则),并把该目标结点的所有子结点依次加入到执行结点队列,依次递归执行,直到执行完与该目标结点关联的所有父结点和子结点(即,直至未执行的结点队列为空)。目标结点可以是决策流中的任一个结点。

其中,可根据决策流的每个分支的末端子节点的输出内容(例如字段格式、字段值),组装输出最终的决策引擎输出结果,作为决策结果,即,可根据多个子节点的决策结果组合得到整个决策流的整体决策结果。

在进行仿真时,对于选中或调用的决策流,可录入或导入用于进行仿真测试的参数,用户可点击操作界面上的测试按钮,从而触发测试启动过程,根据决策流中实际为各个结点配置的条件决策规则,计算每个结点是否被通过。其中,即使根据实际的条件决策规则确定出相应的输入数据对应的结果是“未通过”,也视为已经执行过。

其中,可对每个结点的计算结果(是否被执行过、是否通过)、计算规则、中间变量进行保存,基于此生成决策处理日志。每个结点分别对应的输入数据、输出结果可以在仿真测试过程中进行显示,以便用户及时得知每个结点的仿真情况。

基于同一发明构思,本申请还提供一种决策引擎系统。

该决策引擎系统具有运算处理能力,如图8所示,该决策引擎系统的实施结构可包括存储器801、处理器802和通信总线803。

该决策引擎系统可用于实现前述的决策配置方法或业务决策方法。该决策引擎系统中可部署前述的决策引擎层中的功能模块。

通信总线803用于实现决策引擎系统中的各个组件之间的直接或间接连接。

存储器801是一种存储介质,可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory)。

处理器802具有运算处理能力,可以是但不限于中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等通用处理器;还可以是专用处理器或者其他可编程逻辑器件搭建的处理器。处理器802可以实现本申请实施例提供的方法、步骤及逻辑框图。

存储器801上存储有处理器802可执行的计算机程序,处理器802用于执行存储器801中存储的计算机程序,从而实现前述实施例提供的方法中的部分或全部步骤。

需要说明的是,图8所示结构仅作为示意,具体应用时可以有更多的组件,或具有不同于图8所示的其他配置方式。

综上所述,通过本申请实施例提供的方法和系统,可以在云端实现决策引擎的规则配置,提供了一种通用、兼容性较强的决策引擎解决方案,以拖拉拽配置的方式降低了配置难度,决策流的配置过程更加灵活,且计算规则丰富,在决策流配置过程中,支持复杂的逻辑表达式的快速编写,决策流的计算过程可在云端执行,无需用户在本地终端进行复杂的环境部署。本申请实施例提供的方案支持云函数计算,可实现跨平台、跨设备的在线编程,还可对编写的代码进行检测。整个决策流的处理过程、处理结果的可以实现可视化,可将整个决策流的决策结果,中间结果,计算规则动态显示在相应事件对应的流程结点上,对于不满足决策规则的结点(即,不满足条件决策规则的事件)可进行特殊标记,以便于用户及时定位问题。对于复杂的业务逻辑,支持根据业务在线写代码,实现了一套在线版的IDE,用户可以打开浏览器编写代码、写脚本,并且为用户编写的代码内容提供代码检测结果,可实现代码标记提示、代码自动补全等功能。

在本申请实施例提供的决策配置方法中,可实现基于DSL的表达式计算引擎功能,支持常见的数值计算、逻辑计算和文本计算以及组合使用的逻辑运算,支持表达式嵌套组合,有利于用户一行写完表达式,并进行规则计算,降低了用户的处理难度。

当在决策引擎系统中嵌入在线IDE功能时,可实现在线编辑、编译执行代码,不仅支持语法高亮,还有实时的错误提示,以及代码的自动补全提示,并且支持多种编程语言,对实际编写的代码文件可支持云函数执行,通过调用语言服务模块对在线编写的代码进行处理,用户仅需采用自己熟悉的语言写代码。

本申请实施例还提供了云函数功能,可对用户编写的复杂逻辑代码自动识别其编写语言,把编写的代码内容打包成文件,将文件分发到云函数执行器(该云函数执行器中包括支持多种编程语言的语言服务模块和函数)中,自动根据代码对应的编程语言类型动态执行相应的函数,从而对代码进行在线执行、编译。云函数里可调用实际需要的变量、特征、模型、算法、指标等。

在本申请所提供的实施例中,应该理解到,所揭露实施例,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能模块可以根据实际需要进行集成。

需要说明的是,上述方法对应的功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以用软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本申请各个实施例方法的全部或部分步骤。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

以上仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号