《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 一种针对事件处置的工作流系统设计
一种针对事件处置的工作流系统设计
2015年微型机与应用第17期
李 磊,施卫峰
(中国电子科技集团公司第二十八研究所,江苏 南京 210007)
摘要: 针对自然灾害处置对时效性要求高、情况变化快的特点,提出一种基于工作流计算的处置方法。首先依据处置过程的知识模型和处置经验,将相关软件功能和数据相互关联起来,形成标准化处置流程,并进行统一协调控制,使得各系统单元与需要处置的要素相互配合,协调工作,提高应急处置效率。然后建立告警事件与流程匹配模型,根据事件类型自动启动应急处置流程,提高响应速度。流程化应急情况处置技术,将被动系统转变为主动系统,并最终达到标准化、规划化、智能化、高效化的目的。
Abstract:
Key words :

  摘  要: 针对自然灾害处置对时效性要求高、情况变化快的特点,提出一种基于工作流计算的处置方法。首先依据处置过程的知识模型和处置经验,将相关软件功能和数据相互关联起来,形成标准化处置流程,并进行统一协调控制,使得各系统单元与需要处置的要素相互配合,协调工作,提高应急处置效率。然后建立告警事件与流程匹配模型,根据事件类型自动启动应急处置流程,提高响应速度。流程化应急情况处置技术,将被动系统转变为主动系统,并最终达到标准化、规划化、智能化、高效化的目的。

  关键词: 流程化;应急情况处置;事件告警

0 引言

  近几年自然灾害频频发生,如汶川地震、玉树地震等,这些自然灾害给人民群众财产造成了巨大的损失,导致大量人员伤亡。为快速有效处置这些突发事件,必须制定相应的处置预案,同时将处置预案模块化、节点化、流程化,以利于抢险救灾指挥部内多要素协同处置。在抢险救灾中,快速完成对突发事件的有效响应和处置极为重要,而流程化协同处置[1-2]能有效将指挥部内各单位及保障要素系统组织起来,通过工作流引擎技术[3-4]将处置预案中每个处置节点快速下达到指定处理人员,通过协同处置有效完成对救灾资源的组织和安排,快速完成对灾情的掌握和人员的救护。

1 系统设计

001.jpg

  流程化应急处置软件系统[5-7]如图1所示,其中应用层软件主要包括流程编排工具、关键事件告警、预案匹配、流程通用客户端,服务层主要包括关键事件告警服务、工作流引擎、消息分发服务以及数据传输服务,数据支撑层主要包括流程数据库、预案数据库及资料数据库。本系统基于Web开发,通过用户登录和权限控制实现。

  基于流程化的突发事件处置方法包括以下步骤:

  (1)利用可视化流程编排工具,指挥员将梳理总结出的应急情况处置程序内容、方法步骤,通过流程工具进行编排、固化,形成程序化、标准化的指挥作业流程。

  (2)指挥员建立突发事件与处置流程的关联关系。

  (3)监测到突发事件后,生成告警信息,系统根据告警事件类型及事件信息匹配启动相应处置流程。

  (4)流程引擎负责流程启动及流程跳转,流程启动后,流程引擎把下一流程处置环节信息发送给指挥部流程管控服务,如果当前处置环节与后台服务关联,则直接根据服务名称和地址调用后台服务实现相关功能。

  (5)指挥部流程管控服务接收到流程分发数据后,会根据流程节点关联的人员信息,把流程待办任务发送到指定处理人员。

  (6)各处理人员接收到流程分发消息后进行提示,指挥员进入流程处置客户端,查看自己的任务,根据任务内容显示业务处理界面,完成对任务的处理。

  (7)指挥员处理完当前任务后将完成消息发送给流程管控服务,管控服务收到后将消息转发给工作流引擎,流程跳转到下一节点,然后重复步骤(4)。

  (8)最后一个节点处理完成后发送流程结束消息到工作流引擎,引擎结束流程,并将流程处置过程中所有处理信息记录下来,形成历史记录以便后续查看。

2 关键模块

  2.1 流程建模工具

  流程建模工具实现突发事件处置过程编排,利用指挥人员在处置突发事件中积累的经验将过程按照功能模块、处置人员、处置内容等具体化为若干个节点,按照先后顺序将节点以流程图的方式连接起来,形成处置预案。处置过程流程化提高了某些共用模块的重用率,有效降低了系统开发工作量,同时将处置经验知识化,有利于知识积累和存储。

  具体来说,流程建模工具主要实现了以下功能:

  (1)流程节点模块化封装,流程节点数据主要包括节点输入/输出参数、关联席位及节点分支逻辑处理规则。

  (2)流程节点与业务功能模块的关联,包括流程节点与后台服务的直接关联、流程节点与相关特定业务功能的关联。

  (3)用户能够通过拖拽事先定义的流程节点,实现流程的自主及可视化编排,支持以特定语言对流程要素进行描述。

  (4)实现处置流程与威胁告警事件的关联,能够根据告警事件自动启动相应处置流程。

  (5)用户通过可视化流程编排工具对流程进行编辑管理,包括新建、修改、保存流程。

002.jpg

  图2是保存流程信息的数据库模型图。流程节点和节点连接线构成了流程的基本信息。流程属性表用于突发事件与处置流程的匹配,由突发事件的受灾人数、事件类型等到流程库中进行匹配,如果找到匹配流程则直接启动,提高响应速度。流程的每个节点都关联具体的处置业务,用户收到待办任务后根据节点任务关联表可直接定位到要处理的业务内容。为保证绘制出正确的流程,在流程绘制和保存阶段需要对流程进行合法性检查。在绘制阶段的检查内容包括:

  (1)流程开始和结束节点唯一性检查;

  (2)两个流程节点之间只可以有一条连接线;

  (3)连接线的指向性检查,包括连接线不能指向开始节点、连接线的起始节点不能是结束节点、连接线不能有环路、开始节点的后继只能有一个任务节点。

  流程保存时的检查内容包括:

  (1)流程是否存在开始和结束节点;

  (2)除流程开始和结束节点,其他任务节点都必须有前驱和后继节点。

  2.2 告警事件与预案匹配

  当有突发事件发生时,关键事件告警服务被触发,并同时记录突发事件的属性信息,包括产生事件类型、主体目标位置、目标类型等,告警服务启动预案匹配机制,利用事件信息和匹配规则在预案库中寻找符合要求的预案,如果找到,则启动处置流程,否则提醒指挥人员制定新的预案。主要步骤包括以下方面:

  (1)关键事件告警服务监测到当前有突发事件发生时,推送告警信息到告警事件应用客户端。

  (2)指挥人员根据事件等级选择是否对突发事件进行处置,若选择处置,则启动相应的处置流程,并获取当前告警事件关键信息,包括事件类型以及事件关联的关键信息。

  (3)系统根据告警事件类型获取与该突发事件关联的预案匹配规则项(如位置、关键词等),并根据这些匹配规则进行预案匹配。

  (4)若成功匹配到预案,则从预案库中加载并动态调整预案,否则制定相应的应急处置预案。

  2.3 工作流引擎

  工作流引擎[8]是流程化应急处置的核心组成模块,负责实现处置流程自动跳转、流程状态机维护等核心功能。本文实现的工作流引擎主要包含流程解析、流程管控、流程任务处理及流程历史数据管理四个模块。

  (1)流程解析模块:负责解析流程要素,包括流程节点信息及节点与节点之间的关联信息;实现流程逻辑分支的判断,如流程路径选择等。

  (2)流程管控模块:负责实现流程启动和终结,流程启动时,可把整个流程的输入参数传递给流程管控模块;根据流程节点的逻辑组织,自动实现流程节点自动跳转和状态维护。

  (3)任务处理模块:根据流程唯一标识查询当前待办任务;将当前待办任务相关数据发送到流程管控服务,通知相关人员处理;查询当前流程的办理记录。

  (4)历史数据管理模块:当流程处置完成后,可把流程处置相关数据保存到流程历史库中;支持流程历史数据的查询、调阅等。

003.jpg

  本文根据流程跳转过程设计了自己的工作流引擎系统,实现了流程的启动、状态记录和待办任务生成。引擎算法利用图3所示的数据结构记录流程运转状态和用户待办任务,其中流程编号为编排好的流程的序号,节点编号为编排好的流程中任务节点的编号,流程实体编号和节点实体编号为流程运行中生成的编号,即由编排好的流程经启动后实例化一个运行流程。流程引擎包含三个主要算法模块,分别是流程启动、选择后续环节处置人和任务节点发送。

  2.3.1 流程启动

  流程的启动过程比较简单,根据要启动的流程编号找到流程第一个节点,在流程编排中第一个节点的处置人默认为流程启动人,所以由第一个节点信息创建一条流程节点状态数据,其中节点状态为“到达”,并根据启动人创建用户任务数据,处置人和发送人都为流程启动人。

  2.3.2 选择后续环节处置人

  用户登录后根据用户编号到用户任务表中查找处置人为自己的任务,并进入相应的处置内容。用户完成节点任务后需选择当前节点的后续节点处置人。在查询后续节点前首先需要判断当前节点是否已经被他人处置结束,防止因待办任务未刷新导致的错误处置,判断方法是到流程节点状态表中查询节点状态。如当前节点未被结束,则根据流程编排信息查询后续节点,如果当前节点是分支节点,即其后续节点有多个,还需根据当前环节的输出参数和分支规则判断正确流向的节点。

  对已正确查找出的每一个后续节点,需确定供用户选择的节点备选处置人,备选处置人获取需考虑多种情况。如果当前节点是协同处置且已有其他用户处置结束,则该节点后续节点的备选处置人已被确定,另外如果后续节点是汇聚节点,即有其他节点流向该节点,则此后续节点的备选处置人还需参考其他前驱节点的选取。确定完后续节点的备选处置人后,还需查询节点的处置人规则,即此节点是单人处置还是多人处置,根据此处置规则限制用户从备选处置人中选择的处置人个数。选择后续处置人流程图如图4所示。

004.jpg

  2.3.3 任务节点发送

005.jpg

  任务节点发送流程如图5所示。在获取后续节点和每个节点的备选处置人后,用户选择合适的处置人,保存当前任务的处置信息,将流程发送到下一环节,流程引擎根据整个流程节点的状态决定是否推进到下一状态。

  首先更新用户任务表,写入任务处置时间,表示用户任务处置结束。获取当前节点的协同处置规则,协同处置规则有“多人接收任务但仅需一人处置”、“多人接收任务且所有接收人处置”、“多人接收任务且需要超过一定数量的人处理”,根据协同处置规则和用户任务表判断当前任务是否处置结束。

  如果当前任务节点处置结束,先判断后续节点是否有未完成的前驱节点,如有则不做其他处理。如果没有则表示后续节点可达,如果此后续节点是流程结束节点,则流程处置结束,备份流程流转信息形成历史数据,当后续节点为普通节点时,根据后续节点信息新建流程节点状态数据,节点状态为到达,根据选择的处置人信息创建用户任务数据,插入表中。

  如果当前任务节点还有其他处置人未处置,则当前节点无法结束,此时根据后续节点创建用户任务数据,但用户任务名称为挂起任务,流程不往前推进,而后续节点的处置人信息也保存在用户任务表中,供选择后续节点处置人时使用。用户在获取待办任务时舍弃挂起任务。

  工作流引擎在运转过程中保存下来的数据可实现流程监控功能,以不同颜色表示处置结束和未结束的节点,同时显示每个节点的处置结束时间、审批意见等信息,方便用户掌握流程处置进度。同时为提醒用户按时完成任务,实现时限管理服务,采用循环触发机制,每隔一段时间对流程任务进行扫描,如发现超时未完成的任务,则在用户登录时进行警告提醒。

  2.4 工作流客户端

  工作流客户端主要辅助指挥员实现流程任务的处置,客户端以插件的方式集成到各系统软件内,主要功能包括流程状态监视、待办工作显示、任务处理及流程记录显示四个方面。

006.jpg

  工作流客户端处置流程如图6所示,处置过程为:

  (1)工作流客户端接收到流程管控服务推送到本系统的待办任务提示,显示本系统需要处理的流程任务,并展现当前流程已办理任务的处置记录,从而辅助指挥员进行处置决策。

  (2)流程节点通过与软件业务功能模板的绑定,自动实现任务提示到任务处理的跳转。

  (3)用户完成任务处理后,调用流程处置相关接口提交处置结果数据到工作流引擎,进而实现任务数据的保存及流程的下一步跳转。

3 结论

  针对当前自然灾害日益频繁的问题,本文提出了一种基于流程化的事件处置方法。首先对常见突发事件进行处置过程编排,建立流程处置节点与业务功能以及指挥所人员的关联关系,然后利用告警事件与流程匹配模型,根据事件类型等信息快速启动应急预案,使处理过程在指挥部内快速流转,有效地收集信息,充分利用指挥部内各要素系统的处理能力,完成对突发事件的快速处置,同时提供能统一查询已处理任务、待办任务和进行任务处置的客户端,方便用户查看处置过程。本文提出的方法能有效地组织多用户协同处置突发事件,充分组织和利用救灾资源,快速完成对突发事件的响应和处置。

  参考文献

  [1] LEYMANN F, ROLLER D. Workflow-based applications[J]. IBM Systems Journal, 1997, 36(1):102-123.

  [2] VAN DER AALST T W M P. Workflow Modeling using Proclets[J]. In Proceedings of CoopIS′00, 2003:1129-1134.

  [3] 罗海滨,范玉顺,吴澄.工作流技术综述[J].软件学报,2000(7):899-907.

  [4] 李红臣,史美林.工作流模型及其形式化描述[J].计算机学报,2003(11):1456-1463.

  [5] 李海波,战德臣,徐晓飞.基于工作流引擎的构件组装体系结构[J].软件学报,2006(6):1404-1410.

  [6] 张晓刚,李明树.基于工作流的知识流建模与控制[J].软件学报,2005(2):184-193.

  [7] BASU A, BLANNING R W. A formal approach to workflow analysis.[J]. Information Systems Research, 2000, 11(1):17-36.

  [8] OKADA K, HAYAMI H, SAGEHASHI K. From workflow to interworkflow[J]. Wuhan University Journal of Natural Sciences, 2001(6):198-203.


此内容为AET网站原创,未经授权禁止转载。