基于Activiti流程引擎的网络业务开通实现方法及装置技术领域
本发明涉及一种网络业务开通实现的方法及装置,尤其涉及一种基于Activiti流
程引擎的网络业务开通实现方法及装置。
背景技术
网络业务开通任务包括工单派配、资源派配和业务受理等任务流程。针对业务流
程,现有技术的解决方案为利用Activiti流程引擎,开发人员对已知业务流程进行流程配
置,然后对特定业务逻辑进行开发。但随着网络业务和业务执行复杂性的增加,对业务流程
可视化配置提出了越来越高的要求。例如业务流程的变更,对于UserTask,则需用户利用
Activiti Designer重新部署流程,但如果集成Activiti modeler,不仅需要用户具备
Activiti的专业知识,还需要考虑到浏览器的兼容性问题(IE不兼容);面对于Activiti的
ServiceTask的变更,还需要开发人员对ServiceTask业务的重新开发。
如果通过提供一个全面的流程配置视角,可以让用户自定义流程,则面对网络业
务的变更或者是开发人员未充分考虑的流程步骤,用户可进行自行配置,而不需要再额外
开发。这不仅能降低开发量,还能降低运维成本。
目前市场上的流程引擎系统都只涉及OA领域且无法让用户自定义流程,基于
Activiti流程引擎的网络业务开通实现尚未有一个很好的方法。
发明内容
本发明所要解决的技术问题是提供一种基于Activiti流程引擎的网络业务开通
实现方法及装置,使得用户可以在浏览器上自由拖动配置执行流程,实现可视化配置,而不
需要再额外开发;不仅能降低开发量,还能降低运维成本。
本发明为解决上述技术问题而采用的技术方案是提供一种基于Activiti流程引
擎的网络业务开通实现的方法,包括以下步骤:首先,自定义流程节点,包括设置流程节点
的实现方式、出参和入参;其次,定义流程流转,在Activiti的可视化编辑器中通过拖曳流
程节点进行连线完成业务流程定义,获得自定义的可视化流程流转图;最后,保存流程定
义,将所述自定义的可视化流程流转图以JSON数据格式存储,并将存储后的JSON数据格式
转化为BPMN文件,完成流程定义和流程部署。
优选地,所述流程节点的实现方式通过选择不同的预置函数来实现,所述预置函
数包括替换函数、VPN互访函数、定位ZONE函数、定义源目的IP名称函数以及查询VLAN规划
表获得对应端口函数。
优选地,所述自定义的可视化流程流转图按如下JSON格式进行存储:标签<
startEvent>表示自定义的可视化流程的Start事件,标签<endEvent>表示End事件,标签<
exclusiveGateway>表示并行分支,标签<sequenceFlow>表示连线,标签<serviceTask>表
示是自定义流程节点。
优选地,所述BPMN文件包括流程元素,所述流程元素包括流程的流转序列、步骤节
点、各个节点上相关的用户、变量信息以及显示位置。
优选地,所述自定义流程节点,包括把流程节点的ID作为主键ID存储数据库中,所
述自定义流程节点中包含JavaDelegate接口,在启动流程实例时,,当执行到某个节点时,
获取当前活动节点的ID,根据所述当前活动节点的ID查询数据库获取流程执行步骤,从而
获得该步骤的实现方式、出参和入参。
本发明为解决上述技术问题还提供一种基于Activiti流程引擎的网络业务开通
实现的装置,包括以下模块:自定义流程节点模块,其用于设置流程节点的实现方式、出参
和入参;定义流程流转模块,其用于在Activiti的可视化编辑器中通过拖曳流程节点进行
连线完成业务流程定义,获得自定义的可视化流程流转图;保存流程定义模块,其用于将所
述自定义的可视化流程流转图以JSON数据格式进行存储,并将存储后的JSON数据格式转化
为BPMN文件,完成流程定义和流程部署。
优选地,所述流程节点的实现方式通过选择不同的预置函数来实现,所述预置函
数包括替换函数、VPN互访函数、定位ZONE函数、定义源目的IP名称函数以及查询VLAN规划
表获得对应端口函数。
优选地,所述自定义的可视化流程流转图按如下JSON格式进行存储:标签<
startEvent>表示自定义的可视化流程的Start事件,标签<endEvent>表示End事件,标签<
exclusiveGateway>表示并行分支,标签<sequenceFlow>表示连线,标签<serviceTask>表
示是自定义流程节点。
优选地,所述BPMN文件包括流程元素,所述流程元素包括流程的流转序列、步骤节
点、各个节点上相关的用户、变量信息以及显示位置。
优选地,所述自定义流程节点模块,还用于把流程节点的ID作为主键ID存储在数
据库中,所述自定义流程节点中包含JavaDelegate接口,在启动流程实例时,当执行到某个
节点时,获取当前活动节点的ID,根据所述当前活动节点的ID查询数据库获取流程执行步
骤,从而获得该步骤的实现方式、出参和入参。
本发明对比现有技术有如下的有益效果:本发明通过自定义流程节点,开发人员
不需要配置流程定义,只需关注业务逻辑本身;通过步骤设置,即可达到流程自动化流程,
从而可快速拓展各个业务以及兼容各种业务流程变更。此外,本发明通过定义流程流转以
及保存流程定义,用户可在浏览器端通过拖曳定义流程定义,无需具备Activiti专业知识,
无需安装第三方插件,且兼容各个浏览器并可快速进行扩展,节省时间。
附图说明
图1是本发明实施例中的基于Activiti流程引擎的网络业务开通实现流程图;
图2是本发明实施例中的基于Activiti流程引擎的网络业务开通实现装置模块
图。
具体实施方式
本发明实施例中,通过自定义流程节点,开发人员不需要配置流程定义,只需关注
业务逻辑本身。通过步骤设置,即可达到流程自动化流程,从而可快速拓展各个业务以及兼
容各种业务流程变更。进一步地,通过定义流程流转以及保存流程定义,用户可在浏览器端
通过拖曳定义流程定义,无需具备Activiti专业知识,无需安装第三方插件,且兼容各个浏
览器并可快速进行扩展,节省时间。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本
发明的具体实施例做详细的说明。
图1是本发明实施例中的基于Activiti流程引擎的网络业务开通实现流程图。
步骤101自定义流程节点,包括设置流程节点的实现方式、出参和入参;流程节点
的实现方式主要有脚本和内置函数。脚本实现方式为配置一段脚本,当执行到该流程节点
的时候,会自动执行这一段脚本,脚本返回的结果会作为出参向下传递或者是返回;如
tranceroute获取两台设备之间的防火墙等;内置函数为程序内部定义的方法,通过传递不
同的入参,会输出不同的出参;客户在节点上配置内置函数的方法名,当程序执行到该节点
的时候,通过java反射机制,执行该内置函数,从而实现某业务逻辑。
入参的来源主要有三种:工单、session和宏。工单来源于其他系统,传递了网络业
务开通的基本信息,如源IP和目的IP等;session为前面节点的出参,每个节点生成的结果,
可往下传递,作为下一个节点的入参,如分支节点,通过session获取前一个节点的结果作
为判断条件,进行程序控制;而宏相当于全局变量,如设置一个宏“${工单类型}”,当它作为
一个入参传递到流程节点时,则会自动根据工单类型获取不同的值,如普通防火墙、4A防火
墙等。
出参为流程节点处理的结果;若节点配置了脚本实现方式,则出参为脚本在控制
台的输出结果;若节点配置了替换函数,则出参则为通过入参替换脚本模板后的脚本;若节
点配置了其他内置函数,则出参则为改函数返回的结果;
无论是入参还是出参,都提供了后置处理方法;目前实现的后置处理方法有正则
表达式、条件判断、第一个参数。通过后置处理方法,可对出参或者是入参进行格式化处理,
如对tranceroute返回的结果中,只需要用到结果中的IP,则可以配置IP的正则表达式,只
获取返回结果中的IP。
步骤102定义流程流转,通过拖曳流程节点进行连线完成定义,获得自定义的可视
化流程流转图。
步骤103保存流程定义,将所述自定义的可视化流程流转图以JSON数据格式存储,
并将存储后的JSON数据格式转化为BPMN(Business Process Modeling Notation,业务流
程建模标注)文件,完成流程定义和流程部署。因为本发明提供用户可自定义流程图的功
能,后端为了更好的与前端进行交互,所以这里用到JSON数据格式进行中转。前端只需要解
析JSON数据,即可对流程图进行编辑和展示,无需考虑BPMN内部复杂的文件结构以及了解
activiti相关的知识,从而达到前端和后端的协同合作。
在具体实施中,用户通过表单方式定义流程的节点,并且设置每个流程节点的入
参和出参,所述入参和出参设置包括设置参数名、参数描述、参数值、参数来源以及参数处
理。
在具体实施中,用户选择每个步骤的实现方式,开发人员把实现方式写成一个个
的函数,用户可选择不同的函数来实现不同的程序流转,所述不同的函数包括替换函数、
VPN互访函数、定位ZONE函数、定义源目的IP名称函数、查询VLAN规划表获得对应端口函数。
在具体实施中,用户可以自由拖曳流程节点进行连线完成流程定义,按确定后,把
画布上的数据以JSON格式转到后台,通过解析JSON数据转化成BPMN文件,完成流程定义和
流程部署。
在具体实施中,Activiti使用标准的BPMN2.0流程定义文件来描述工作流的定义。
BPMN2.0流程定义文件是一个符合行业标准的XML格式的文件。所述BPMN文件包括流程元
素,所述流程元素包括流程的流转序列、步骤节点、各个节点上相关的用户、变量信息。在
BPMN2.0XML文件中还包含了各个流程元素在定义中的显示位置等信息,从而可以以图形化
的方式来显示或编辑流程定义文件。
Activiti中提供了两种定义文件的可视化编辑器:Web Application形式的
Activiti Modeler和Eclips插件形式的流程编辑器。Activiti Modeler必须部署在Web应
用服务器中才能通过Web浏览器来使用,而Eclipse插件形式的编辑器可以在Eclipse中直
接使用。
在具体实施中,标签<startEvent>表示Start事件,流程的开始节点;标签<
endEvent>表示End事件,流程的结束节点;标签<exclusiveGateway>表示并行分支;标签<
sequenceFlow>表示连线;标签<serviceTask>表示是服务任务,流程的节点。除此之外,
Activiti还支持脚本任务、用户任务、服务任务、邮件任务、手工任务。
在具体实施中,所述自定义流程节点固定了一个代理类,这个代理类
processHandler实现了JavaDelegate接口,当启动流程实例后,流程节点为serviceTask服
务的会自动执行该代理类的excute方法。在自定义流程图的时候,把流程节点的ID作为主
键ID存储在数据库中,根据数据库主键的唯一约束,使得执行步骤能和流程节点的ID达到
一一对应的关系;在启动流程实例时,把流程信息作为流程变量传递下去,这个流程信息包
括流程定义和流程变量。通过JavaDelegate接口,本发明可获取前面传递下来的流程变量,
也可通过JavaDelegate接口获取当前节点的流程定义信息(入线、出线、任务ID、受理人等)
以及获取当前节点所属的流程实例等信息。当执行到某个节点时,获取当前活动节点的ID,
根据所述当前活动节点的ID查询数据库获取流程执行步骤,从而获得该步骤的实现方式、
出参、和入参。获得实现方式之后,根据java反射机制动态执行这个方法,从而实现了流程
和业务分离的可配置化流程引擎编程。开发人员只需负责各个业务功能的实现,然后把方
法名存至数据库。用户通过查询数据库,获得方法名,然后排列组合至不同的步骤节点,从
而实现流程的多样化配置。
本发明实施例中,通过自定义流程节点,开发人员不需要配置流程定义,只需关注
业务逻辑本身。通过步骤设置,即可达到流程自动化流程,从而可快速拓展各个业务以及兼
容各种业务流程变更。进一步地,通过定义流程流转以及保存流程定义,用户可在浏览器端
通过拖曳定义流程定义,无需具备Activiti专业知识,无需安装第三方插件,且兼容各个浏
览器并可快速进行扩展,节省时间。
图2是本发明实施例中的基于Activiti流程引擎的网络业务开通实现装置模块
图。
如图2所示,本发明提供的基于Activiti流程引擎的网络业务开通实现的装置,包
括以下模块:自定义流程节点模块201,其用于设置流程节点的实现方式、出参和入参;定义
流程流转模块202,其用于通过拖曳流程节点进行连线完成定义,获得自定义的可视化流程
流转图;保存流程定义模块203,其用于将自定义的可视化流程流转图以JSON数据格式存
储,并将存储后的JSON数据格式转化为BPMN文件,完成流程定义和流程部署。
在具体实施中,所述节点的实现方式通过不同的函数来实现,所述不同的函数包
括替换函数、VPN互访函数、定位ZONE函数、定义源目的IP名称函数、查询VLAN规划表获得对
应端口函数。
在具体实施中,所述自定义的数据格式是JSON格式。
在具体实施中,所述BPMN文件包括流程元素,所述流程元素包括流程的流转序列、
步骤节点、各个节点上相关的用户、变量信息、显示位置。
在具体实施中,所述自定义流程节点模块,还用于把流程节点的ID作为主键ID存
储在数据库中,在启动流程实例时,把流程信息作为流程变量传递下去,当执行到某个节点
时,获取当前活动节点的ID,根据所述当前活动节点的ID查询数据库获取流程执行步骤,从
而获得该步骤的实现方式、出参、和入参。
本发明实施例中,通过自定义流程节点,开发人员不需要配置流程定义,只需关注
业务逻辑本身。通过步骤设置,即可达到流程自动化流程,从而可快速拓展各个业务以及兼
容各种业务流程变更。进一步地,通过定义流程流转以及保存流程定义,用户可在浏览器端
通过拖曳定义流程定义,无需具备Activiti专业知识,无需安装第三方插件,且兼容各个浏
览器并可快速进行扩展,节省时间。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可
以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介
质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技
术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范
围当以权利要求书所界定的为准。