本发明专利技术公开了一种柔性工作流的实现方法及其系统,该方法实现了在工作流的流程定义和实例运行两个阶段的柔性化支持;本发明专利技术基于jbpm可执行流程语言框架,使流程定义工具产生具有柔性特征的活动定义,然后使流程引擎对带有柔性特征的流程定义文件进行解析和部署,最后针对业务流程不同的柔性化修改点、执行点以及所需要的不同处理结果而实现对流程定义的修改、重新部署以及流程引擎对流程实例的挂起、保存上下文、修改、恢复等操作。本发明专利技术是将流程定义和流程实例执行两个阶段相结合的柔性化支持,具有能从更根本的层次上广泛、快速、有效地实现工作流管理系统对业务流程动态变化的支持等优点。
【技术实现步骤摘要】
本专利技术涉及一种柔性工作流技术,特别涉及一种柔性工作流的实现方法及其系统。
技术介绍
工作流的概念起源于生产组织和办公自动化领域。其目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务,通过对它们进行监控,以达到提高办事效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目的。然而随着市场竞争的日益激烈要求企业对其业务过程能够进行快速的重组,企业业务过程的不断变化要求信息系统能够快速重组,如何提高工作流系统的柔性,让工作流系统更好地支持企业业务流程的变化,成为了实现工作流系统的一大挑战。当期研究者提出许多柔性工作流的实现方法,例如:Chiu DKff,Li Q等人采用异常处理的方法,利用ECA(event-condition-action)规则,针对出现变化要求时的不同情况采用不同的处理策略,他们将活动分为如下几个类别:必须的、可选的、可重复的,一方面在出现异常情况时,可以根据活动的属性做出响应处理,另一方面使得一个流程的执行不再是死板地执行所定义的每个活动,但ECA规则的致命缺点是要求异常的处理必须是事先可以预知的。SADIQ S, ORLOffSKA M.通过引入Choice-Merge和XOR-Split等结构,将流程中所有可能路径定义到流程模型中,其缺点在于流程模型过于庞大而不易理解,并且这种方法只有在事先知道不确定因素的所有情况之后才能进行定义,这对于动态流程来说往往是不现实的。Jorg M.Haake, Weigang Wang将CSCW与工作流技术结合起来,用CSCW信息协同的观点来提高工作流系统的柔性。HEINL P, HORN S, JABLONSKI S孙瑞志、史美林提出了黑盒、口袋等方法,该方法在流程建模阶段引入新元素对流程中的不确定因素进行封装,该方法虽然避免了 SADIQ S等人提出的方法所带来的流程定义过于庞大复杂的问题,但没有指出在流程实例运行过程中新加入元素的具体执行方法。综合上述,当前针对柔性工作流的实现方法仍需进一步的研究和改善,需要从更基本的层次上广泛、快速、有效地实现工作流管理系统对业务流程变化的柔性化支持。
技术实现思路
本专利技术的首要目的在于克服现有技术的缺点与不足,提出一种柔性工作流的实现方法,该方法以开源工作流引擎jbpm的可执行流程语言框架为基础,有效减少了流程模型的复杂度。本专利技术的另一目的在于克服现有技术的缺点与不足,提出一种应用于柔性工作流实现方法的系统,对相同流程定义的不同流程实例的路由信息不进行单独的存储,减少了冗余数据,减少了操作的复杂度。本专利技术的首要目的通过以下技术方案实现,包括如下步骤:(I)根据有向图的工作流模型,设计出支持常用流程活动定义以及柔性活动定义的可视化流程定义工具;(2)工作流引擎部署并解析由(I)中流程定义工具产生的流程定义文件,并能准确识别出流程定义中的柔性活动定义;(3)流程运行时,根据流程定义形成流程实例,并根据从内部与从外部接收到流程变更请求的不同而做出以下不同响应。I)外部变更请求:当业务流程发生变化时,系统外部请求对流程进行修改。对此类请求的响应可以分为对流程定义下所有流程实例修改和对单一流程实例的修改:①对流程定义下的所有流程实例修改:查找并暂停该流程实例对应流程定义的所有流程实例,保存所有流程实例上下文运行环境,并分析每个流程实例的判断修改点与运行点的关系:a、修改点在运行点之前,有三种处理方法:方法一:恢复暂停的流程实例直至流程实例运行结束后退出,同时修改流程定义,新流程实例参照新流程定义执行;方法二:销毁流程实例,新的流程实例参照新流程定义执行;方法三:流程执行点回滚到修改点,同时修改流程定义、恢复上下文环境,流程继续运行,按修改后的流程执行。b、修改点在执行点之后:修改流程实例参考的流程定义,并恢复上下文环境,流程继续运行;C、修改点是当前执行点,针对三种不同的修改请求分别进行处理:第一种:在当前运行点之前增加一个任务,修改方法参照a;第二种:当前运行点之后增加一个任务,修改方法参照b;第三种:修改当前运行点的属性,回滚到上一活动,同时修改流程定义,恢复上下午环境,流程继续运行。②对单一流程实例修改:无需查找该流程定义下的所有流程实例,具体修改根据流程运行点和修改点在流程中位置不同参照方法①处理。2)内部变更请求:当流程实例执行到存在柔性活动节点时,系统内部工作流引擎自动要求转变为原子活动、子流程、块活动等才能继续执行。内部变更请求:当流程实例执行到存在柔性活动节点时,系统内部工作流引擎自动要求转变为原子活动、子流程、块活动等方能继续执行。上述柔性特征的活动是指在流程定义中关于该活动定义带有柔性属性标记。上述利用流程设计器产生的流程定义以xml文件形式保存到本地文件系统,流程定义部署后把流程定义文件以二进制数据形式保存到数据库中,并标识流程的版本和流程类型等。流程启动,产生流程实例,流程实例在数据库中保存其运行的状态信息、作业信息、办理人/[目息以及任务/[目息,但不包含流程路由/[目息,流程实例的路由/[目息需关联到对应流程定义数据库表中。节省数据空间,无需为每个流程实例保存一份流程路由信息。上述外部变更请求是指用户申请对正在执行的流程实例或流程定义进行修改,内部变更请求是正在执行的流程实例遇到带柔性属性标志的活动,要求对该活动进行去柔性标志处理,转变为原子活动、子流程(其中某些活动可带柔性标志)或块活动(其中某些活动可带柔性标志)。上述方法中,对流程定义下的所有流程实例修改,指对该流程定义修改并影响正在运行的流程实例和将要运行的流程实例。首先找到所有对应流程定义下所有流程实例,然后把所有流程实例设为挂起状态,再保存每个流程实例的运行上下文环境,包括整个流程实例对象和其对于数据参数,最后根据上述具体情况对流程定义相关数据库表和流程实例数据库表进行修改。上述方法中,由于相同流程定义的流程实例在流程定义中共享相同流程路由信息。对单一的流程实例进行修改,为了不影响其他无需修改的流程实例运行,不能对该流程实例对应的流程路由信息直接修改,首先复制一条原来关于该流程路由的信息,然后让该流程实例关联到新的流程路由信息,再对该流程路由进行修改。本专利技术的另一目的通过以下技术方案实现,一种应用于柔性工作流的实现方法的系统,包括以下装置:装置一:根据有向图的工作流模型,设计支持常用流程活动定义以及柔性活动定义的可视化流程定义工具;装置二:工作流引擎部署并解析由步骤I中流程定义工具产生的流程定义文件,并识别出流程定义中的柔性活动定义;装置三:流程运行时,根据流程定义形成流程实例,并根据从内部或外部接收到流程变更请求与当前执行点的位置关系,做出相应的响应处理。所述装置I中,所述的流程定义在兼容jpdl标准的基础上能描述柔性活动。所述装置2中,所述的工作流引擎是基于jbpm4的架构,部署流程定义是把流程定义以二进制大数据类型存储到数据库流程定义表中。所述装置3中,从内部接收到流程变更请求是指流程引擎执行到带柔性特征的活动时,其处理方法是将该流程实例转入挂起状态,待用户把该活动的柔性特征所对应的一般流程活动执行完毕,或者把该活动变成子流程、块活动流程后再恢复运行;子流程、块活动存在带柔性特本文档来自技高网...
【技术保护点】
一种柔性工作流的实现方法,其特征在于,包括如下步骤:步骤1、根据有向图的工作流模型,设计支持常用流程活动定义以及柔性活动定义的可视化流程定义工具;步骤2、工作流引擎部署并解析由步骤1中流程定义工具产生的流程定义文件,并识别出流程定义中的柔性活动定义;步骤3、流程运行时,根据流程定义形成流程实例,并根据从内部或外部接收到流程变更请求与当前执行点的位置关系,做出相应的响应处理。
【技术特征摘要】
【专利技术属性】
技术研发人员:黄敏,岑炬徽,
申请(专利权)人:华南理工大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。