CN102566998A - 基于数据来源的流程引擎设计方法 - Google Patents

基于数据来源的流程引擎设计方法 Download PDF

Info

Publication number
CN102566998A
CN102566998A CN2010106141236A CN201010614123A CN102566998A CN 102566998 A CN102566998 A CN 102566998A CN 2010106141236 A CN2010106141236 A CN 2010106141236A CN 201010614123 A CN201010614123 A CN 201010614123A CN 102566998 A CN102566998 A CN 102566998A
Authority
CN
China
Prior art keywords
flow
flow process
engine
incident
processs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010106141236A
Other languages
English (en)
Other versions
CN102566998B (zh
Inventor
施伟
李伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhangmen Science and Technology Co Ltd
Original Assignee
Shengle Information Technolpogy Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shengle Information Technolpogy Shanghai Co Ltd filed Critical Shengle Information Technolpogy Shanghai Co Ltd
Priority to CN201010614123.6A priority Critical patent/CN102566998B/zh
Publication of CN102566998A publication Critical patent/CN102566998A/zh
Application granted granted Critical
Publication of CN102566998B publication Critical patent/CN102566998B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于数据来源的流程引擎设计方法,首先为每个流程提供与事件来源种类的数量相同的函数接口,每个函数接口对应于一种事件的来源;第2步,流程引擎调度流程、添加新流程、删除执行完毕的流程;第3步当一个事件发生时,流程引擎当前调度的流程通过该事件的来源所对应的函数接口,判断该事件是否为需要该流程执行;如果是则执行后进入第4步,如果否则直接进入第4步;第4步,流程引擎判断该事件所需操作的流程是否已经全部执行完毕,如果是则返回第3步;如果否则将该事件所需操作的尚未执行的流程放入流程引擎所调度的流程列表之中再返回的3步。本发明可以适用于简单或复杂的对象操作,也易于进行程序设计。

Description

基于数据来源的流程引擎设计方法
技术领域
本发明涉及一种软件系统的设计方法,特别是涉及一种流程引擎的设计方法。
背景技术
流程引擎是一种根据外来输入对一个或多个对象进行操作的软件系统。流程引擎通常基于有限状态机(Finite State Machine)进行设计。有限状态机又称有限状态自动机或简称状态机,是表示有限个状态以及在这些状态之间的转换和动作等行为的数学模型。
流程引擎通常是针对一个或多个对象进行操作的软件系统。每个对象具有一个或多个流程。每个流程包括至少两个状态(State)及状态之间进行转换(Transition)的条件。状态转换的条件是指各状态在遇到何种外来输入时转换为另一状态,此时的外来输入称为事件(Event)。某个对象的某个流程从一个状态转换到另一状态,称为一个动作(Action)。流程引擎在同一时刻或者不调度任何流程,或者只调用一个流程。
现有的流程引擎的设计方法有两种:
一种是基于线性调度的流程引擎设计方法,请参阅图1,即流程引擎总是线性地进行各个动作。图中对于事件,程序依次执行流程1、流程2、流程3,其中,每个流程中执行了状态的转换。这种方法需要穷举所有流程的所有状态和状态之间进行转换的条件,局限于非常简单的对象操作。
另一种是基于非线性调度的流程引擎设计方法,请参阅图2,与线性方式的区别在于,支持多事件的输入和流程非线性调度,当某一事件会引发一个或多个对象的状态发生改变时,各个对象的动作执行顺序并非事先设定,而是由流程引擎根据当时具体的上下文关系来动态选择的。例如当事件1发生时,流程引擎首先根据事件1对应的操作1,调用对象1的动作,对象状态变化之后,执行权交还流程引擎,流程引擎更新事件1的操作列表,并根据操作2,调用对象2的动作,同理,操作3,在每个操作完毕之后,流程引擎都会更新操作列表,并判断是否事件1执行完毕。。由此可见,这种方法不在限于流程的线性执行顺序,流程引擎决定了下一步调用的对象和它的动作。这种方法将流程调度操作分离出来,从而实现对象操作的非线性,可以实现复杂系统的对象操作,但是过多的对象操作会使程序设计也变得繁琐而复杂。
发明内容
本发明所要解决的技术问题提供一种基于数据来源的流程引擎设计方法,该方法可以适用于简单或复杂的对象操作,也易于进行程序设计。
为解决上述技术问题,本发明公开了一种基于数据来源的流程引擎设计方法,所述流程引擎操作一个或多个对象,每个对象具有一个或多个流程,每个流程包括至少两个状态及状态之间进行转换的条件;所述流程引擎设计方法包括如下步骤:
第1步,流程引擎归纳所有事件的来源为x种,并为每个流程提供x个函数接口,每个流程的一个函数接口对应于一种事件的来源;
流程引擎启动时,最先加载根流程;
所述事件指引起一个或多个对象的一个或多个流程中状态之间进行转换、或一个或多个对象的一个或多个流程的创建、或一个或多个对象的一个或多个流程的销毁的外部输入;
第2步,流程引擎维护当前调度的流程列表,调度该列表中的流程,添加新流程,删除执行完毕的流程;
第3步,当流程引擎接收到一个事件时,首先分析该事件的来源,并调用当前所调度流程中与该事件的来源相对应的函数接口,流程引擎判断该事件是否满足该流程中状态之间进行转换、或流程创建、或流程销毁的条件;如果是则执行流程中状态之间的转换、或流程创建、或流程销毁,执行完毕后进入第4步,如果否则直接进入第4步;
第4步,流程引擎判断该事件所需操作的一个或多个流程是否已经全部执行完毕,如果是则返回第3步;如果否则将该事件所需操作的一个或多个流程中尚未执行的流程放入流程引擎所调度的流程列表之中再返回的3步。
本发明基于数据来源的流程引擎设计方法可以适用于简单或复杂的对象操作,也易于进行程序设计。
附图说明
图1是现有的一种流程引擎的设计方法的示意图;
图2是现有的另一种流程引擎的设计方法的示意图;
图3是本发明基于数据来源的流程引擎的设计方法的流程图。
具体实施方式
请参阅图3,本发明公开了一种基于数据来源的流程引擎设计方法,所述流程引擎操作一个或多个对象,每个对象具有一个或多个流程,每个流程包括至少两个状态及状态之间进行转换的条件;所述流程引擎设计方法包括如下步骤:
第1步,流程引擎归纳所有事件的来源为x种,并为每个流程提供x个函数接口,每个流程的一个函数接口对应于一种事件的来源;
流程引擎启动时,最先加载根流程;
所述事件指引起一个或多个对象的一个或多个流程中状态之间进行转换、或一个或多个对象的一个或多个流程的创建、或一个或多个对象的一个或多个流程的销毁的外部输入;
我们定义起始流程为根流程,它是流程引擎启动时最先加载的流程,根流程的作用就是分析事件,并生成新流程。
第2步,流程引擎维护当前调度的流程列表,调度该列表中的流程,添加新流程,删除执行完毕的流程;
第3步,当流程引擎接收到一个事件时,首先分析该事件的来源,并调用当前所调度流程中与该事件的来源相对应的函数接口,流程引擎判断该事件是否满足该流程中状态之间进行转换、或流程创建、或流程销毁的条件;如果是则执行流程中状态之间的转换、或流程创建、或流程销毁,执行完毕后进入第4步,如果否则直接进入第4步;
第4步,流程引擎判断该事件所需操作的一个或多个流程是否已经全部执行完毕,如果是则返回第3步;如果否则将该事件所需操作的一个或多个流程中尚未执行的流程放入流程引擎所调度的流程列表之中再返回的3步。
采用本发明的基于数据来源的流程引擎设计方法,具有如下优点:
其一、系统简单、高效。流程引擎只需要将当前事件提交到当前调度的流程相应的函数接口即可。流程引擎在流程执行完毕后将其从流程调度的列表中移除。这样的操作方法,简单而且高效,利于开发调试,杜绝流程非法串调和混淆的现象发生。
其二、实现容易,扩展性好。依据事件来源的种类来为各流程预留对应数量的函数接口,使得流程间调用不容易混淆,流程独立性强,与事件的来源种类一一对应,当新的来源的事件发生时,直接为每个流程引入新的函数接口即可,扩展性好,采用分布式开发效率高。
其三、适用于复杂的业务流程。本发明能在流程调度过程中引入流程自身的业务逻辑,并能实现流程间的调用与回溯,因此适用于各种复杂的业务流程,例如桌游系统、工作流程系统等。

Claims (1)

1.一种基于数据来源的流程引擎设计方法,所述流程引擎操作一个或多个对象,每个对象具有一个或多个流程,每个流程包括至少两个状态及状态之间进行转换的条件;其特征是,所述流程引擎设计方法包括如下步骤:
第1步,流程引擎归纳所有事件的来源为x种,并为每个流程提供x个函数接口,每个流程的一个函数接口对应于一种事件的来源;
流程引擎启动时,最先加载根流程;
所述事件指引起一个或多个对象的一个或多个流程中状态之间进行转换、或一个或多个对象的一个或多个流程的创建、或一个或多个对象的一个或多个流程的销毁的外部输入;
第2步,流程引擎维护当前调度的流程列表,调度该列表中的流程,添加新流程,删除执行完毕的流程;
第3步,当流程引擎接收到一个事件时,首先分析该事件的来源,并调用当前所调度流程中与该事件的来源相对应的函数接口,流程引擎判断该事件是否满足该流程中状态之间进行转换、或流程创建、或流程销毁的条件;如果是则执行流程中状态之间的转换、或流程创建、或流程销毁,执行完毕后进入第4步,如果否则直接进入第4步;
第4步,流程引擎判断该事件所需操作的一个或多个流程是否已经全部执行完毕,如果是则返回第3步;如果否则将该事件所需操作的一个或多个流程中尚未执行的流程放入流程引擎所调度的流程列表之中再返回的3步。
CN201010614123.6A 2010-12-30 2010-12-30 基于数据来源的流程引擎设计方法 Active CN102566998B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010614123.6A CN102566998B (zh) 2010-12-30 2010-12-30 基于数据来源的流程引擎设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010614123.6A CN102566998B (zh) 2010-12-30 2010-12-30 基于数据来源的流程引擎设计方法

Publications (2)

Publication Number Publication Date
CN102566998A true CN102566998A (zh) 2012-07-11
CN102566998B CN102566998B (zh) 2016-08-17

Family

ID=46412512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010614123.6A Active CN102566998B (zh) 2010-12-30 2010-12-30 基于数据来源的流程引擎设计方法

Country Status (1)

Country Link
CN (1) CN102566998B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528157A (zh) * 2016-11-17 2017-03-22 中山大学 一种基于scxml标准的状态机工作流引擎
CN110968408A (zh) * 2019-11-13 2020-04-07 泰康保险集团股份有限公司 一种执行流移除方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174206A (zh) * 2007-11-27 2008-05-07 深圳国人通信有限公司 基于有限状态机的流程引擎调度方法
CN101201753A (zh) * 2007-12-13 2008-06-18 浪潮通信信息系统有限公司 一种多状态机管理引擎的配置管理方法
CN101714230A (zh) * 2009-11-20 2010-05-26 广东金宇恒科技有限公司 一种用户自定义的工作流管理方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174206A (zh) * 2007-11-27 2008-05-07 深圳国人通信有限公司 基于有限状态机的流程引擎调度方法
CN101201753A (zh) * 2007-12-13 2008-06-18 浪潮通信信息系统有限公司 一种多状态机管理引擎的配置管理方法
CN101714230A (zh) * 2009-11-20 2010-05-26 广东金宇恒科技有限公司 一种用户自定义的工作流管理方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528157A (zh) * 2016-11-17 2017-03-22 中山大学 一种基于scxml标准的状态机工作流引擎
CN106528157B (zh) * 2016-11-17 2019-07-16 中山大学 一种基于scxml标准的状态机工作流引擎
CN110968408A (zh) * 2019-11-13 2020-04-07 泰康保险集团股份有限公司 一种执行流移除方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN102566998B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
US11061956B2 (en) Enhanced processing and communication of file content for analysis
CN102520899B (zh) 通用座舱显示管理系统
CN102467448A (zh) 一种测试用例的测试方法及系统
CN101025698A (zh) 强制性地终止输入/输出操作阻止的线程的设备和方法
CN111124392A (zh) 一种提高物联网平台规则引擎高并发能力的方法
CN102023881A (zh) 一种软件升级方法、装置及嵌入式设备
US10540150B2 (en) Composable context menus
CN102007495B (zh) 用于转换对于修改关于发布/订阅主题串的订阅的集合的自然语言请求的方法、装置和软件
EP1652072A2 (en) Method and apparatus for parallel action processing
CN102566998A (zh) 基于数据来源的流程引擎设计方法
CN103838564A (zh) 一种属性加载方法及系统
US8539468B2 (en) System and methods for replacing software application classes using transparent object adapters
KR101216916B1 (ko) Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템
CN111274667A (zh) 一种跨尺度材料计算软件集成计算系统及方法
CN104050030A (zh) 一种操作系统进程调度方法
US20090164879A1 (en) Method and system for controlling the re-execution of a rule branch
US8352055B2 (en) Method for implementing production processes and system for executing the method
CN103902268A (zh) 一种etl流程执行系统及方法
CN101799793A (zh) 闪存控制方法及装置
Van der Steen Issues in computational frameworks
Le Goaer et al. Android executable modeling: Beyond android programming
CN112860334A (zh) 一种并行仿真方法及存储介质
Xu et al. Supporting flexibility of the CMMI process framework with a multi-layered process model
CN111596923A (zh) Haxe静态链接库构建方法、装置和电子设备
CN108415692A (zh) 一键生成前端ui脚本框架插件的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20190222

Address after: 201203 7, 1 Lane 666 lane, Zhang Heng Road, Pudong New Area, Shanghai.

Patentee after: SHANGHAI ZHANGMEN TECHNOLOGY CO., LTD.

Address before: 201203 No. 356 GuoShoujing Road, Pudong New Area, Shanghai

Patentee before: Shengle Information Technology (Shanghai) Co., Ltd.

TR01 Transfer of patent right