本发明属于计算机,具体涉及一种前端页面可叠加分层展示的工单运行方法及系统。
背景技术:
1、工作流是一种用于管理和协调多个任务和活动的过程,通过定义一系列步骤、角色、规则和条件,来确保任务能够按照预定的顺序和规则执行。基于工作流的传统的工单系统,工作流定义数据及工作流流程实例运行数据均存储在关系型数据库中,工单业务在后台往往由一个工作流实例来完成,在前端页面往往也仅能展示一个流程图的数据。对于一张工单需要执行同一工单流程定义的多个流程实例来实现业务闭环的复杂工单管理场景,传统的工单系统无论在性能上还是在前端页面细粒度展示流程图方面上均无法做到。因此,基于工作流的传统的工单系统,虽然在多个行业和领域得到广泛应用,但已有技术在面对复杂的业务工单时存在如下缺陷:
2、①存在性能瓶颈:流程定义数据与流程实例运行数据均存储在关系型数据库中,一方面,流程实例运行数据的数据量非常大,会导致数据查询缓慢,从而影响在页面上呈现流程图的响应速度;另一方面,关系型数据库中的并发读写操作性能受限于io性能及并发锁机制,不能有效处理大量工单并发执行的场景。
3、②灵活性差:基于工作流的传统的工单系统中,一个工单往往由一个工作流实例来实现业务。对于一个工单流程定义中需要包含多个“message start event”(消息启动事件)、且一个工单需要同一工单流程定义的多个流程实例来共同完成的复杂业务场景方面,传统的工单系统也不能灵活地适应。
4、③页面流程图不支持叠加和分层展示:传统的工单系统在页面展示工单流程图时,往往只支持单个流程图数据的展示,对于同一个工单的同一工单流程定义的多个流程实例的运行数据无法做到叠加和分层展示,无法做到复杂工单对执行轨迹有细粒度查看和呈现的要求。
技术实现思路
1、本发明的目的在于提供一种前端页面可叠加分层展示的工单运行方法及系统,旨在解决上述的问题。
2、本发明主要通过以下技术方案实现:
3、一种前端页面可叠加分层展示的工单运行方法,包括以下步骤:
4、步骤s1:将工单流程实例运行数据和历史工单数据存储在elasticsearch中;将工单流程定义数据和在途工单数据存储在关系型数据库postgressql中;
5、步骤s2:新建工作流定义,设计工单的业务执行流程,进而生成工作流实例,通过启动工作流实例驱动工单业务的执行;在工作流定义中,通过引入多个消息启动事件适配工单业务的执行,通过不同的消息触发启动不同的工单流程实例来执行工单业务逻辑;
6、步骤s3:通过接口获取工单记录数据,然后,基于工单id分别获取流程定义的xml报文以及流程实例运行数据集合,并将流程实例运行数据集合按照流程定义的xml报文构建前端流程图报文格式;在页面构建叠加的流程图组件,并经过渲染后呈现。
7、为了更好地实现本发明,进一步地,所述步骤s2包括以下步骤:
8、步骤s21:新建工作流定义,设计工单的业务执行流程,并存储在postgressql数据库中;
9、步骤s22:外部系统通过调用工单创建接口生成工单记录,将工单记录与工作流定义进行绑定;
10、步骤s23:调用工作流引擎,基于工作流定义生成工作流实例;通过运行工作流实例来驱动工单业务的执行,且工作流实例运行过程中的数据写入elasticsearch。
11、为了更好地实现本发明,进一步地,所述步骤s2还包括以下步骤:
12、步骤s24:从消息接收接口的报文参数中解析出工单编号、消息类型编码;
13、步骤s25:然后,通过工单编号关联至工单记录,再通过工单记录关联至工单绑定的工作流定义;
14、步骤s25:最后通过解析出的消息类型编码触发消息启动事件,从而启动当前工单的新的工作流实例来驱动工单业务的执行。
15、为了更好地实现本发明,进一步地,步骤s3包括以下步骤:
16、步骤s31:调用工单流程页面数据查询接口,并查询流程图数据;从工单流程页面数据查询接口的接口参数中获取工单id,然后分别或者依次执行步骤s32和步骤s33;
17、步骤s32:通过工单id从数据库postgressql中查询工单记录;通过工单记录中的工单流程定义id查询流程定义记录;从流程定义记录中获取流程定义的xml报文;
18、步骤s33:通过工单id从数据库postgressql中查询工单关联的工作流实例key数据集合;通过工作流实例key从elasticsearch索引中查询工作流实例运行数据集合;以流程实例为维度构建流程实例运行数据集合;
19、步骤s34:将流程实例运行数据集合按照流程定义的xml报文构建前端流程图报文格式;
20、步骤s35:封装工单流程页面数据查询接口结果响应对象报文并返回至页面;
21、步骤s36:页面接收接口结果响应对象后解析报文,基于div布局构建多层的前端容器组件,每一层再基于bpmn.js+div构建流程图组件并位于多层容器组件内,从而形成了叠加的流程图组件;最后,渲染流程图组件并进行呈现。
22、本发明主要通过以下技术方案实现:
23、一种前端页面可叠加分层展示的工单运行系统,基于上述的方法进行,包括消息接收接口、工单创建接口、工单执行模块、工单流程展示模块、关系型数据库postgressql以及elasticsearch;
24、所述关系型数据库postgressql用于存储工单流程定义数据和在途工单数据,elasticsearch用于存储工单流程实例运行数据和历史工单数据;所述elasticsearch的索引以天为单位,索引名称以日期当做后缀;
25、外部系统分别通过消息接收接口、工单创建接口与工单执行模块连接,所述工单执行模块用于生成工单记录并绑定工单流程定义以及调用工作流引擎生成工作流实例,实现启动工作流实例来驱动工单业务的执行;
26、所述工单流程展示模块用于调用工单流程页面数据查询接口查询流程图数据,并形成并展示渲染的叠加的流程图组件,在前端叠加显示流程图。
27、优选地,还包括工单流程管理模块,所述工单流程管理模块用于工单工作流的定义及管理。
28、为了更好地实现本发明,进一步地,所述在途工单数据以在途工单表进行存储;所述在途工单表包括工单id、工单类型id、工单名称、工单编号和流程定义id,其中工单编号是全局唯一的。
29、为了更好地实现本发明,进一步地,所述工单流程定义数据以xml格式存储,所述工单流程定义数据包括流程定义表以及流程消息类型定义表和工单与流程实例关系表;所述流程定义表包括流程定义id、流程定义key、流程名称、xml流程定义文本,其中流程定义key是全局唯一的;所述流程消息类型定义表包括消息类型id、流程定义id、消息类型编码、消息类型名称,其中消息类型编码是全局唯一的;所述消息类型编码代表消息事件,用于启动流程实例完成业务逻辑;所述工单与流程实例关系表包括关系id、工单id、流程定义id、流程实例key、消息类型编码。
30、为了更好地实现本发明,进一步地,所述工单流程实例运行数据包括流程实例模型、流程实例变量模型和流程作业模型,所述流程实例对象模型包括流程实例key,流程定义id、bpmn元素id、bpmn元素类型,其中流程实例key是全局唯一的;所述流程实例变量模型包括变量实例id、流程实例key、变量编码、变量值,其中变量实例id是全局唯一的;所述流程作业模型包括作业id、流程实例key、bpmn元素实例key、bpmn元素id、变量集合、重试次数,其中作业id是全局唯一的。
31、本发明的有益效果如下:
32、(1)本发明解决了同一工单需要多次执行同一工作流定义的流程实例后才能实现业务闭环处理的问题,以及实现了在页面上可叠加和可分层展示流程图来真实完整展示工单业务的场景。本发明通过引入“message start event”(消息启动事件)方式,使复杂业务的工单可以执行工单流程定义的多个流程实例。本发明基于工作流定义xml报文再结合elasticsearch中存储的工作流实例数据实现了可叠加的多个流程图的构建和展示,相较于传统的单一流程图展示,叠加展示能够更全面地真实地反映流程执行情况。本发明在数据存储、查询效率、复杂流程支撑、可视化效果、系统灵活性等方面均具有显著优势。
33、(2)本发明将工作流流程定义数据与流程实例运行数据进行分离存储,对于数据量较大的流程实例运行数据分离存储至elasticsearch中,系统性能瓶颈得以解决。其中业务工单编号和elasticsearch索引名称中包含“yyyymmdd”格式日期,对于查询工单流程实例运行数据时,能快速定位elasticsearch中的索引并快速完成数据检索。
34、(3)本发明实现的流程图的动态叠加展示,使得流程图中的节点和路径保持不变,执行路径可以通过不同的颜色或样式进行区分展示。用户能够清晰地看到哪些路径执行较多,哪些路径执行较少,提升了流程的可视化效果。这更利于复杂工单流程的直观呈现,更利于指导优化生产流程或治理业务数据质量。