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

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

Info

Publication number
CN102566998B
CN102566998B CN201010614123.6A CN201010614123A CN102566998B CN 102566998 B CN102566998 B CN 102566998B CN 201010614123 A CN201010614123 A CN 201010614123A CN 102566998 B CN102566998 B CN 102566998B
Authority
CN
China
Prior art keywords
flow
flow process
event
engine
flow engine
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.)
Active
Application number
CN201010614123.6A
Other languages
English (en)
Other versions
CN102566998A (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

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 CN102566998A (zh) 2012-07-11
CN102566998B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528157B (zh) * 2016-11-17 2019-07-16 中山大学 一种基于scxml标准的状态机工作流引擎
CN110968408B (zh) * 2019-11-13 2023-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 广东金宇恒科技有限公司 一种用户自定义的工作流管理方法及系统

Also Published As

Publication number Publication date
CN102566998A (zh) 2012-07-11

Similar Documents

Publication Publication Date Title
Uzam et al. An iterative synthesis approach to Petri net-based deadlock prevention policy for flexible manufacturing systems
CN106844190B (zh) 测试脚本自动生成方法及装置
CN106737676B (zh) 一种基于脚本可二次开发的工业机器人编程系统
CN102520925B (zh) Aadl2tasm模型转换方法
CN102103497A (zh) 有限状态机执行装置和方法、在应用中的建立和使用方法
JP2003518694A (ja) ソフトウェア・コンポーネント作成に使用するn層ソフトウェア・アーキテクチャのデザイン方法及びシステム
CN104778124A (zh) 一种软件应用自动化测试方法
CN102332125A (zh) 基于后继任务的工作流挖掘方法
WO2008126221A1 (ja) ソフトウェア修正管理プログラム、ソフトウェア修正管理装置、およびソフトウェア修正管理方法
CN101859244A (zh) 多工具链工程构建方法及系统
CN101702126A (zh) 一种图形界面编辑方法及装置
CN103513966A (zh) 基于组件的php开发框架
US20180253313A1 (en) Operation instruction response control method and terminal for human-machine interface
CN102566998B (zh) 基于数据来源的流程引擎设计方法
CN102929853A (zh) 基于Excel表单关联的DCS项目数据生成系统和方法
CN101110022A (zh) 一种工作流模型的软件实现方法
KR101216916B1 (ko) Fbn 기반의 plc 코드를 범용 프로그램 코드로 변환하는 방법 및 시스템
US8341596B2 (en) Method and system for controlling the re-execution of a rule branch
CN104050030A (zh) 一种操作系统进程调度方法
CN104834513B (zh) 一种综采工作面液压支架控制器软件自动生成的方法和系统
CN113723931B (zh) 一种适用于多尺度高通量材料计算的工作流建模方法
CN111274667A (zh) 一种跨尺度材料计算软件集成计算系统及方法
US8352055B2 (en) Method for implementing production processes and system for executing the method
CN102779036B (zh) 用于自动化技术的软件工具
CN102508694B (zh) 一种虚拟机文件运行方法及系统

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