zoukankan      html  css  js  c++  java
  • 关于web工作流引擎概述

    一、引言
    随着社会生产的流程化,工作流起着越来越重要的作业,工作流的核心是流程治理。对于企业来说,其生产经营活动就是由各种各样业务流程交织在一起组成的。然而,在企业治理中,许多流程在日常操作过程中已被习惯,而不被人们所重视,更不能被有效的治理起来。另外,客户的需求瞬息万变,而产品的生命周期也是在不断缩短,技术在不断创新。企业要在这样一个竞争和变换的外部环境中求得生存,就必须要有随需而变的能力,不断地调整和优化自身的各种业务流程,对流程进行重构和再造。为此,本文具体描述了工作流引擎的系统结构、接口设计、功能建模,以及工作流引擎在ERP系统中的应用。
    二、工作流技术概述
    相关概念
    工作流就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型进行表示并对其实施计算。工作流引擎的主要功能是通过计算机技术的支持去定义、执行和治理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流引擎来调度、实现。
    工作流引擎的主要功能
    工作流引擎是定义、创建、执行工作流的软件组元。作为工作流的核心应能提供以下几个方面的功能支持:解释过程定义;创建过程实例并控制其执行;调度各项活动;为用户工作表添加工作项;通过应用程序接口调用应用程序;提供监督和治理功能等。
    三、工作流引擎的分析及设计
    工作流引擎的功能结构
    工作流引擎需要支持两种业务流程,即确定型工作流和非确定工作流。确定型工作流是指人们可以事先给出运行路线的一类业务流程;非确定型工作流是指人们事先不能给出运行路线的一类业务流程。业务流程的流向应根据实际情况而定。工作流引擎的功能结构图应该如图一所示:

    图1工作流引擎的功能结构图
    工作流引擎控制器分析
    引擎控制器是工作流引擎在运行时的控制中心,引擎控制器的控制结构图如图二所示:

    图二引擎控制器的控制结构图
    1.调度中心。调度中心接受从外部接口发送过来有关流程控制的请求,然后根据不同的请求类型调用相应的处理模块完成与本次请求相关的操作并将结果返回。由于是在DBMS内部实现工作流引擎的控制模型,因此有关请求的并发处理等问题完全可以交给数据库治理系统来完成,也不需要诸如请求队列等形式的数据结构。
    2.任务治理。任务治理主要根据调度中心的指示完成诸如任务创建、任务状态的转换以及相关数据的维护等工作。每次“结束任务”的外部请求将触发调度中心调用“任务治理”为后继活动创建新的实例,其状态为“待定”;同时,其他不同的外部请求也将触发“任务治理”实施任务状态的切换。
    3.任务指派。任务指派处理只是针对常规交互活动,通常情况下,在任务状态由“待定”切换到“等待”过程中完成任务的指派工作,即处于就绪状态的任务在通常情况下都确定了其执行者。任务指派过程首先根据任务指派基准确定可以执行此任务的群体人员,通常情况下这是一个包含多个人员的集合;然后根据任务指派方法确定由这个群体中的哪些个体来执行任务,执行任务的个体标识记录在相应任务记录的字段中。
    4.依靠检查。在工作流引擎中,业务规则可以分解成活动的前依靠规则和活动的后转发规则。依靠检查指的是活动的前依靠规则的检查,调度中心在将任务切换到就绪状态之前将进行相关的前依靠规则检查,只有满足检查条件的任务才可以进行状态的切换。
    前依靠规则包含顺序、与汇聚、或汇聚和投票汇聚四种规则:
    第一,对于顺序前依靠规则,从前趋活动流转到当前活动跟其他前趋活动没有关系,当前活动的启动没有其他约束条件,相应任务可以立即由“待定”状态转换到“等待”状态。
    第二,对于与汇聚前依靠规则,相应记录要指明所有参与与汇聚的其他前趋活动,只有所有相关的前趋活动均到达各自指定的结束状态,当前活动方可启动。
    第三,对于或汇聚前依靠规则,前依靠活动集为空集,此规则的检查将涉及到业务活动表中的或汇集标志,其取值可以是所有相关的前趋活动的结束标记之一或者是一个非凡的标记。假如或汇集标志不是一个非凡标记,则将检查相应前趋活动的结束标记是否和或汇集标志相同,若相同,则启动当前活动,若不相同,则不作任何处理。假如或汇集标志是一个非凡标记,则首先结束的前趋活动将启动当前活动,后结束的活动将被丢弃。
    第四,对于投票汇聚活动,前依靠活动集同样为空集,当前活动要等到属于同一批次任务数目达到设置的要求方可启动。
    5.转发控制。当应用发出“结束任务”的外部请求时,该请求将触发调度中心启动“转发控制”。转发控制的主要依据在工作流数据模型中定义的后转发规则,后转发规则定义了当前活动与其后继活动之间的关系。
    6.启动控制。启动控制负责常规自动活动的所对应的自动执行体的启动并对其活动进行监控。
    三、工作流引擎实现
    任务表结构
    确定型任务表负责保存系统中所有确定型流程的任务实例待处理记录及任务实例处理的历史记录,工作流引擎定期扫描该任务表,将任务表中所有待处理的任务实例分发给相应流程中的相应节点。
    确定型任务表的结构为:TaskList(TasklnstanceID,TasklD,TaskStep,TaskHandleTime,ProceeID,DstNodelD,lsHandled,CommmitMan),分别为:
    TasklnstaneeID:同一个任务可以有多个不同的运行实例。该字段用于区别多个不同的运行实例;TasklD:用于区别不同的任务;TaskStep:记录任务运行实例在流程中的处理步骤;TaskHandeTime:任务运行实例在相应处理步骤中的处理时间;Processed:记录任务实例所在流程的ID;DstNodelD:处理任务运行实例的后续节点;IsHandled:任务实例在后续节点是否已经处理;CommitMan:任务的处理人。
    工作流的流向控制
    工作流引擎的一个核心功能就是要决定确定型任务表中各个任务运行实例的后续处理节点,使任务运行实例按照事先定义好的路线流动,也就是流程的流向控制。
    流向控制算法描述如下:
    /控制流程流向/
    functionHowControl(stringprocessid,stringnodeid){
    stringfollowIds=GetSueNodeld(processed,nodeid);
    for(inti=0;i<followIds的长度;i++){
    /后续节点同步控制/
    if(查询后续节点i所对应的条件中有无isprecondition为true的条件)
    对后续节点进行同步控制;
    /子流程的处理情况/
    if(后续节点i是子流程)
    将子流程的第一个节点作为后续节点;
    向任务表中加入一条待处理记录;
    }
    }
    四、结语
    本文介绍了一个基于Web的工作流引擎的具体实现,该工作流引擎已经在药业治理系统中得到了实际应用,基本上可以达到预期效果,说明基于Web的工作流引擎设计和实现都具有相对可行性,可以应用在具体的治理系统中。

  • 相关阅读:
    git add --all
    docker进入数据库
    类里面函数调用
    http状态码
    在 python 中,for … else
    类怎么传参数 初始化函数
    Jmeter安装配置环境---小白看图安装
    冒泡排序
    Fiddler抓包【7】_次要功能和第三方插件
    Fiddler抓包【6】_Fiddler Script
  • 原文地址:https://www.cnblogs.com/yts111/p/1783579.html
Copyright © 2011-2022 走看看