CN108256716A - 基于表来配置/执行流程和/或原子流程的方法和设备 - Google Patents
基于表来配置/执行流程和/或原子流程的方法和设备 Download PDFInfo
- Publication number
- CN108256716A CN108256716A CN201611270506.XA CN201611270506A CN108256716A CN 108256716 A CN108256716 A CN 108256716A CN 201611270506 A CN201611270506 A CN 201611270506A CN 108256716 A CN108256716 A CN 108256716A
- Authority
- CN
- China
- Prior art keywords
- flow
- atom
- node
- atom flow
- inspection
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Educational Administration (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开的实施例提出了一种基于表来配置和/或执行原子流程和/或流程的方法和设备。该基于表来配置原子流程的方法包括:根据与所述原子流程相关联的原子流程表来确定所述原子流程的一个或多个节点;以及至少部分基于所确定的一个或多个节点来配置所述原子流程。该基于表来配置流程的方法包括:根据与所述流程相关联的流程表来确定所述流程的至少一个原子流程;根据与每个原子流程相关联的原子流程表来配置相应原子流程;以及基于经配置的所述至少一个原子流程来配置所述流程。该基于表来执行原子流程的方法包括:按照使用本公开实施例的方法来配置的原子流程来执行所述原子流程。
Description
技术领域
本公开总体上涉及工作流程管理领域,且具体地涉及基于表来配置和/或执行流程和/或原子流程的方法和设备。
背景技术
在计算机环境下,为了实现某个业务目标,可以利用计算机在多个参与方之间按某种预定规则来自动传递文档、信息或者任务,这通常也被称为“工作流”或“工作流程”(以下简称为“流程”)。工作流节点是流程中的一个步骤或环节,其一般与硬件或对象的某个行为相对应。通过流程管理技术,可以将一个或多个工作流节点连接起来形成完整的流程。
传统的流程控制方法一般是在程序内部定义一个工作流,其包括多个节点指令,每个节点相互关联。上一个节点的工作结束标志着下一个工作流节点的开始,通常是依次执行,形成一个传统的工作流结构。
在此基础上也有通过服务器进行分布式工作流程处理的,如中国专利“分布式工作流程处理方法及装置”(专利公开号为CN101789102A,以下简称为专利文献1)。此外,在另一中国专利“一种流程控制方法及一种流程引擎”(专利公开号为CN101216906A,以下简称为专利文献2)中提出了一种使用XML和DTD文件配合进行流程定制的方法。该方法通过服务前映射、服务执行成功映射、服务执行错误映射、和服务执行结果返回映射的不同组合进行流程定制。
发明内容
然而,本申请的发明人发现专利文献1中的方法并不适用于单机的硬件部件的流程控制。此外,本申请的发明人还发现专利文献2中的流程定制方法有很大的局限性。首先这两种格式的文件(XML和DTD)都有严格的格式要求,必须严格按照标准进行编写,并且非常繁琐,很容易编写错误。换言之,其对于新用户是非常不友好的。其次,这两种文件的读取虽然没有技术难点,但是过程较为繁琐。
为了至少部分解决或减轻上述问题,提供了根据本公开实施例的基于表来配置和/或执行流程和/或原子流程的方法和设备。
根据本公开的第一方面,提供了一种基于表来配置原子流程的方法。该方法包括:根据与所述原子流程相关联的原子流程表来确定所述原子流程的一个或多个节点;以及至少部分基于所确定的一个或多个节点来配置所述原子流程。
在一些实施例中,所述原子流程表包括表示所述原子流程的节点的一条或多条记录。在一些实施例中,每条记录包括一个或多个单元格,每个单元格表示以下各项之一:与所述节点相关联的至少一个前置检查;与所述节点相关联的至少一个执行动作;与所述节点相关联的至少一个后置检查;与所述节点相关联的错误处理;以及与所述节点相关联的一个或多个语种的提示信息。在一些实施例中,如果同一单元格包含至少两个动作和/或检查,则所述至少两个动作和/或检查是并行执行的。在一些实施例中,每个动作和/或检查包括用于指示该动作和/或检查所针对的对象的信息、以及如何动作/检查的信息。在一些实施例中,每个动作和/或检查还包括用于指示动作和/或检查的程度和/或参数的信息。在一些实施例中,各种信息的组合能够映射到具体的执行指令。在一些实施例中,所述前置检查用于确定是否执行当前节点的以下各项:执行动作;后置检查;错误处理;以及显示预定语种的提示信息。在一些实施例中,所述错误处理用于在当前节点的执行中出现错误和/或超时时确定是否继续所述原子流程中后续节点的执行。在一些实施例中,所述后置检查用于在执行当前节点的执行动作之后检查执行结果是否正确。
根据本公开的第二方面,提供了一种基于表来配置流程的方法。该方法包括:根据与所述流程相关联的流程表来确定所述流程的至少一个原子流程;根据与每个原子流程相关联的原子流程表来配置相应原子流程;以及基于经配置的所述至少一个原子流程来配置所述流程。
在一些实施例中,所述流程表包括表示所述流程的至少一个原子流程的单元格。在一些实施例中,针对表示所述流程的至少一个原子流程的单元格,所述流程表还包括分别表示以下各项之一的一个或多个单元格:与所述流程相关联的流程标识符、或与所述流程相关联的一个或多个语种的提示信息。在一些实施例中,如果表示所述流程的至少一个原子流程的单元格表示至少两个原子流程,则所述至少两个原子流程是顺序执行的。
根据本公开的第三方面,提供了一种基于表来执行原子流程的方法。该方法包括:按照使用本公开第一方面的方法来配置的原子流程来执行所述原子流程。
在一些实施例中,执行所述原子流程还包括:针对所述原子流程的至少一个节点设置执行时限,如果所述至少一个节点的执行时间超过所述执行时限,则确定所述至少一个节点的执行发生超时错误,并基于所述至少一个节点的错误处理来确定是否执行所述原子流程中的下一节点。
根据本公开的第四方面,提供了一种基于表来执行流程的方法。该方法包括:按照使用本公开第二方面所述的方法来配置的流程来执行所述流程。
在一些实施例中,执行所述流程还包括:针对所述流程的至少一个原子流程设置执行时限,如果所述至少一个原子流程的执行时间超过所述执行时限,则确定所述至少一个原子流程的执行发生超时错误,并基于与所述至少一个原子流程相关联的错误处理来确定是否执行所述流程中的下一节点。
根据本公开的第五方面,提供了一种基于表来配置原子流程的设备。该设备包括:节点确定单元,用于根据与所述原子流程相关联的原子流程表来确定所述原子流程的一个或多个节点;以及原子流程配置单元,用于至少部分基于所确定的一个或多个节点来配置所述原子流程。
根据本公开的第六方面,提供了一种基于表来配置流程的设备。该设备包括:原子流程确定单元,用于根据与所述流程相关联的流程表来确定所述流程的至少一个原子流程;原子流程配置单元,用于根据与每个原子流程相关联的原子流程表来配置相应原子流程;以及流程配置单元,用于基于经配置的所述至少一个原子流程来配置所述流程。
根据本公开的第七方面,提供了一种基于表来执行原子流程的设备。该设备包括:原子流程执行单元,用于按照由本公开第五方面所述的设备配置的原子流程来执行所述原子流程。
根据本公开的第八方面,提供了一种基于表来执行流程的设备。该设备包括:流程执行单元,用于按照由本公开第六方面所述的设备配置的流程来执行所述流程。
根据本公开的第九方面,提供了一种存储指令的非瞬时计算机可读存储介质,该指令在由处理器执行时,使得处理器执行根据本公开第一方面~第四方面所述的方法的全部和/或部分步骤,或者使得通用计算机变为根据本公开第五方面~第八方面所述的设备的全部和/或部分单元。
通过使用根据本公开实施例的基于表来配置和/或执行流程和/或原子流程的方法和设备,可以(1)采用广泛使用的excel表格来编写流程配置文件,相比于其他的基于XML/DTD的配置文件或专用配置文件,上手更快、编写更方便;(2)提供多语言提示,方便流程控制的国际化;(3)节点可以用主+谓(+宾)的格式来灵活配置,且同一格中的节点可以并行执行。
附图说明
通过下面结合附图说明本公开的优选实施例,将使本公开的上述及其它目的、特征和优点更加清楚,其中:
图1是示出了根据本公开实施例的示例流程表。
图2A和2B是示出了根据本公开实施例的示例原子流程表。
图3是示出了根据本公开实施例的另一示例原子流程表。
图4是示出了根据本公开实施例的基于表来配置流程和原子流程的示例方法的流程图。
图5是示出了根据本公开实施例的基于表来执行流程和原子流程的示例方法的流程图。
图6是示出了根据本公开实施例的基于表来执行流程的示例方法的流程图。
图7是示出了根据本公开实施例的基于表来配置/执行流程和/或原子流程的示例设备的框图。
具体实施方式
下面参照附图对本公开的优选实施例进行详细说明,在描述过程中省略了对于本公开来说是不必要的细节和功能,以防止对本公开的理解造成混淆。在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不脱离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同的附图标记用于相同或相似的功能和操作。
在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
对于诸如主动式毫米波人体安检设备、背散射人体安检设备之类的大型设备的系统软件,或者更一般地对于任何需要进行工作流程管理的系统软件,本公开的实施例可以通过解析本地配置文件,生成软件可识别的控制指令,对设备的各个部件进行控制,来形成工作流,使得设备能够正常操作运行。
更具体地,这些大型设备的系统软件的一个重要的功能就是对其各个硬件/软件组件进行控制,例如扫描、初始化、校正、复位等等。这些操作都不是一个简单的指令,而是需要软件与硬件部件相互配合的一个个工作流。本公开实施例可以通过本地配置文件来设置设备操作流程和每个流程的对应指令,解析该配置文件并存储,加载获取的流程名称和对应指令信息。此外,当需要调用某个工作流时,可以正常读取并且执行当前工作流。从而实现对设备硬件的协调控制,并且方便流程的变更和控制。
如前面介绍的,在诸如专利文献1和2之类的相关技术中,采用了复杂的流程配置文件。相对地,在本公开实施例中,可以采用基于电子表格的配置文件的形式进行流程控制。例如,本公开实施例采用的流程定制方法可以使用诸如EXCEL之类的电子表格文件,并可以通过EXCEL本身的属性进行配置。例如,具有表格形式的配置文件中的一张表可以代表一个原子流程,而每一条记录(包括一个或多个单元格)可以代表一个或多个节点等等。这样,可以一目了然的看到各个流程和每个流程的详细节点信息,还可以避免很多书写格式的问题。请注意:在本文中,术语“原子流程”一般可以用于表示粒度最小的流程,或换言之是流程中不可再拆分的子流程。然而,在另外一些实施例中,也可以将原子流程视为一般的子流程,且可以对其进行进一步细分。
以下将结合图1~3来详细描述根据本公开实施例的基于表的流程配置文件的一些实施例。请注意:尽管在下文中结合了诸如主动式毫米波人体安检设备、背散射人体安检设备之类的安检设备来描述本公开实施例,然而本领域技术人员将意识到:本文所披露的发明构思可以不限于这些技术领域,而是可以适用于任何需要配置/执行工作流的设备和/或系统,不管它们是硬件的、软件的、固件的、还是其任意组合。此外,尽管本文中以EXCEL表格为示例来详细说明各实施例,然而本公开不限于此。事实上,可以采用任何其他表形式。例如,纯文本文件,其中,对应列可以用间隔符(例如,逗号、分号、TAB等)来间隔开,或者可以采用MySQL数据库中的数据表、或者任何现有的或将来开发出的电子表格或甚至手写表格(例如,通过使用OCR识别的方式来读取等)。
图1示出了根据本公开实施例的示例流程表,图2A、图2B和图3分别示出了图1所示流程表中所涉及的两个原子流程的原子流程表。如图1所示,除了表头之外,图1的示例流程表包括3条记录,每一记录可以对应一个工作流程。每条记录可以包括用于区别于其它记录的“流程名称”(或FlowName)字段或单元格。原则上,流程表中不应当出现具有相同“流程名称”的不同记录。然而,本公开不限于此,可以采用任何恰当的方式来处理具有相同“流程名称”的不同记录,例如用在后的记录来覆盖在先的记录,或反之等等。因此,每条记录可以对应于一个工作流程。此外,流程表中的记录数目也不限于图1所示的3条,而是可以包括任意数目的记录。
此外,每条记录还可以包括用于指明相应流程中的具体“原子流程”(也可称为子流程)的“表名称”(或SheetName)字段或单元格。在该“表名称”单元格中,可以列出相应流程所包括的一个或多个具体原子流程,其中,每个原子流程可以对应于该EXCEL文件中的一个其它工作表(或Sheet)。例如,如图1所示,流程名称“Reset”所对应的表名称(即,原子流程)为“Reset”,因此在该EXCEL配置文件中还应当包括一个工作表“Reset”,例如如图2A和2B所示的工作表。此外,如图1所示,流程名称“AirCalibrate”所对应的表名称(即,原子流程)为“AirCalibrate”,因此在该EXCEL配置文件中还应当包括一个工作表“AirCalibrate”,例如如图3所示的工作表。此外,如图1所示,流程名称“Init”所对应的表名称(即,原子流程)为用符号“+”连接的多个(在本示例中,2个)表名称“Reset”和“AirCalibrate”,因此在该EXCEL配置文件中也应当包括2个工作表(即,原子流程)“Reset”和“AirCalibrate”,例如如图2A/2B和图3所示的两个工作表。
在流程名称“Init”所示的示例中,可以将两个或更多个原子流程放在“表名称”单元格中,以表示该流程具有两个或更多个原子流程。为了方便系统处理,使用连接符“+”将两个或更多个原子流程相连,以表明其为顺序执行。然而,事实上本公开实施例不限于此。例如,可以用符号“/”来连接两个或更多个原子流程,以表明其为并行执行,或者可以用符号“#”来连接两个或更多个原子流程,以表明其为分支执行,即选择多个原子流程之一执行。例如,还可以用符号“()”来改变前述原子流程的连接关系,以实现更复杂的流程设计。如本领域技术人员所能意识到的:本公开实施例不限于上述各种连接符和/或上述各种连接关系,而是可以使用任何恰当的连接符和/或恰当的连接关系,或者甚至不适用任何可见的连接符而仅通过制表符来将其区分。此外,在图1所示实施例中,不同的流程可以共享相同的原子流程。例如,图1所示的流程“Reset”和“Init”可共享原子流程“Reset”。
此外,如图1所示,每条记录还可以包括一个或多个语种的提示信息。例如,图1所示的流程表中包括三个语种的提示信息:“zh-CN”(大陆简体中文)、“en-US”(美式英语)、和“pt-BR”(巴西葡萄牙语)。在调用相应流程时,系统可以根据例如当前系统的语言设置或其他用户设置来显示相应语种的提示信息。例如,在例如操作系统的语言设置为“zh-CN”的情况下,当启动Reset流程时,系统可以向用户显示中文的提示信息“设备复位”,以使得用户能够了解流程的工作状态。这样的多语种设置使得根据本公开实施例的系统能够方便地进行国际化,降低了编程人员的工作量。
接下来,将结合图2A、2B和3来详细描述示例原子流程表。为了方便读者阅读以及满足专利文件的附图要求,因此将图1所示的“Reset”表拆分成两个附图,即图2A和图2B。尽管其在附图中是两张表,但是请理解其实际上应当是二者顺序相连的一张表,且在连接时应当忽略图2B的表头部分。此外,出于排版方便以及美观的原因,图2A和图2B的各列的宽度并不对应,然而请理解:在图2A和2B中具有对应表头字段的列应当是同一列。
如图2A和2B所示,原子流程表“Reset”可以包括一条或多条记录。以图2A为例,每条记录可以包括一个或多个单元格,分别为“前置检查”(Pre-Check)、“执行动作”(ExecAction)、“后置检查”(PostCheck)、“错误处理”(OnError)、以及一个或多个语种的提示信息(例如,zh-CN、en-US和/或pt-BR)中的一项或多项。然而请注意:这些字段中的每一个都不是必选项,换言之,每条记录可以包括这些字段中的任意一个或多个。
如图2A、2B和3所示,各“前置检查”、“执行动作”和“后置检查”单元格中的内容可以采用“主+谓(+宾)”的形式来表达。在一些实施例中,主语可以用于指示本单元格和/或本表达式所涉及的操作对象,而谓语可以用于指示该操作对象所应当执行的操作动作。例如,如图2A中第三条记录的“执行动作”单元格所示,该单元格的内容为“capture.card stop”,其用于向操作对象“采集卡”(主语capture.card)发出“停止”(谓语stop)命令。在一些实施例中,取决于“操作对象”和/或“操作动作”,还可能存在宾语,宾语可以用于指示操作动作的程度和/或参数。例如,如图2A的第一条记录的“前置检查”单元格所示,该单元格的内容为“plc is connected”,其表示确定(谓语is)PLC模块(主语plc)是否连接正常(宾语connected)。又例如,如图2B的第五条记录的“执行动作”单元格的第一行所示,“shuttlegoto r0”表示将滑块(主语shuttle)移动(谓语goto)到零位(宾语r0)。此外,针对一个操作对象,可以存在一个或多个宾语。例如,如图2B的第二条记录的“执行动作”单元格的第一行所示,“capture.cardl set mode 5”表示将采集卡1(主语capture.cardl)设置(谓语set)为模式5(两个宾语mode和5)。此外,针对“主+谓+宾”形式的内容,还可以使用逻辑“非”(not)来限定宾语。例如,单元格的内容可以为“shuttle is not moving”,其表示确定(谓语is)滑块模块(主语shuttle)是否没有移动(宾语not moving)。
可见,在本公开的实施例中,可以使用简单的“主+谓(+宾)”的方式来进行节点信息表达。这样既符合平时的语言习惯,也灵活多变。
此外,可以在原子流程表的同一单元格中编写两个或更多个操作内容。例如,如图2B的第二条记录的“执行动作”单元格所示,其包括两个操作的内容,即“capture.card1set mode 5”和“capture.card2 set mode 2”。在图2B所示实施例中,可以认为同一单元格中的两个或更多个操作是并行执行的。例如,在如图2B的第二条记录的“执行动作”单元格所示的示例中,可以并行执行对采集卡1和采集卡2的模式设置操作。然而,类似于前述流程表中关于“表名称”字段的描述,这里也可以采用其它方式来表明多个操作可以并行执行,例如,使用“|”之类的连接符。此外,在另一些实施例中,可以用其他顺序来执行在同一单元格中的多个操作,本公开不限于此。
此外,如图2B中第四条和第五条记录所示,在操作的表达式中,还可以采用诸如{ShuttleSpeed}之类的环境变量或某种引用关系,而不是直接将具体的数值、指令明确表达出来。这样,通过在执行流程/原子流程时实时计算出/设置该变量,可以使得流程控制的方式更为灵活、多样化。
在本公开实施例中,“前置检查”单元格可以用于确定是否要执行与该前置检查相关联的以下各项中的一项或多项:执行动作、后置检查、错误处理、和/或显示预定语种的提示信息。例如,如图2A的第一条记录所示,该记录具有“前置检查”(plc is connected),如其提示信息所示,其用于检查可编程逻辑控制器(PLC)模块是否与系统连接正常。如果该“前置检查”的执行结果是“否”,则可以不执行该原子流程中的后续动作,并向系统直接返回指示错误的原子流程执行结果。此外,在另一些实施例中,如果该“前置检查”返回“否”,也可以仅导致本条记录的其他单元格(例如,“执行动作”、“后置检查”等)的操作不执行,而继续执行原子流程中的其他后续节点。此外该系统也可以根据“错误处理”中的设置来确定是继续后续节点的执行,还是直接向调用该原子流程的流程返回指示错误的执行结果,这完全取决于系统的实现。同样地,如图2A中第二条记录所示,该记录具有“前置检查”(capture.card is connected),如其提示信息所示,其用于检查采集卡模块是否与系统连接正常。同样地,可以根据系统的具体实现,来确定是否要执行后续的节点。
此外,每条记录中的“执行动作”可以用于指示所在节点所主要要完成的工作内容。例如,在图2A的第三条记录中,所要执行的动作就是向采集卡发停止命令。如前所述,可以在“执行动作”中同时执行多个动作,如图2B的第二条记录和第五条记录所示,从而可以使得工作流程更为灵活。
此外,每条记录中的“后置检查”通常可以用于在执行了前述“执行动作”之后检查是否实现了预定效果。例如,如图2B的第一条记录所示,其“后置检查”用于检查滑块在执行了“打开(open)”动作之后是否就位(ready)。如果在后置检查中发现执行结果错误,例如前述示例中返回“否”,则可以认定该节点出错,并根据“错误处理”中的规定来进行相应处理。
“错误处理”可以用于在与其相关联的任一单元格(或同一节点中的其他单元格)的操作的执行中出现错误时确定是否继续后续节点的执行。例如,在前述示例中,如果“后置检查”中发现滑块并未就位,则可以根据“错误处理”的设置来进行处理。在本实施例中,“错误处理”如果为空,则可以缺省认为直接退出该原子流程并向调用该原子流程的流程报错。在另一些实施例中,“错误处理”如果为“Continue”(继续),则可以继续该原子流程的后续节点。然而,本公开实施例不限于此,也可以设置其他的错误处理方式,这完全取决于系统是如何实现的。
与图1所示的流程表相类似,图2A、图2B和图3中的一个或多个语种的提示信息也可用于根据系统设置来提示相应节点的执行和/或工作状态。此处不再详细描述。
此外,在前述单元格中的表达式中,可以直接采用针对硬件/软件模块的操作指令。然而,在另一些实施例中,可以采用语义解析的方式来间接给出操作指令。例如,如下表1所示,可以将某个“主+谓(+宾)”的组合与某一具体指令加以对应。
表1
通过这种方式,可以针对例如具有同一功能、但具有不同接口的多个设备(例如,来自不同厂商的不同硬件/软件模块)进行指令映射。例如,针对各个设备采用不同的表1,而前述流程表和/或原子流程表的语法/关键字等可以不变。此外,如上表1所示,即便是谓语和/或宾语相同,对于不同主语(操作对象)而言,指令也可以大相径庭。以这种方式,也简化了工作流程的配置和/或管理,同时也使得根据本公开实施例的方案能够广泛适用于各种工作环境。然而,请注意本公开实施例不受限于上述表1,而是可以用任何恰当的形式来定义“主+谓(+宾)”与指令之间的对应关系。
至此,已结合图1、图2A、图2B和图3详细描述了根据本公开实施例的示例流程表和示例原子流程表。通过使用根据本公开实施例的流程表和原子流程表,可以用灵活、方便、简单、省时的方式来配置和/或管理系统各组件之间的工作流程。
以下,将结合图4来详细说明读取和解析流程表和原子流程表的示例方法400。图4示出了根据本公开实施例的基于表来配置流程和原子流程的示例方法400。大体上,根据本公开实施例的方法400首先读取流程配置文件(例如,上述EXCEL表中的流程表),解析出该流程配置文件中的流程信息(流程名称和对应的各原子流程),生成可执行的流程指令信息并存储到内存。
具体地,如图4所示,方法400开始于步骤S410。在步骤S410中,可以首先读取前述流程配置文件,例如读取前述具有EXCEL文件形式的配置文件的各个表(至少包括例如流程表和/或一个或多个原子流程表),并将其加载到数据库(例如,MySQL数据库)中,以方便后续的查找、更新、修改等操作。然而,本公开实施例不限于此。事实上,也可以采用其它形式来加载所读取的配置文件。例如,以纯文本文件的形式将其读取到内存的工作堆栈中。
接下来,在步骤S420中,可以针对从配置文件中加载的、保存在数据库中的前述各个表中的流程表进行读取,并在步骤S430~S470的循环中,对该流程表中的一个或多个流程进行读取/解析(以例如并行、串行、或任何其他方式来读取)。
例如,在步骤S430中,可以读取流程表中的当前记录(在初次读取时,可以例如为第一条记录)的“流程名称”单元格及其对应的“表名称”单元格(对应于各原子流程),并例如根据前述规则来确定“表名称”中的与各个原子流程相对应的工作表名称。并可以将该流程的流程名称和这些工作表名称(该流程的各原子流程的名称)以关联的方式添加到例如数据库中的集合“流程”(或Flow)中。然而,本公开不限于此,事实上可以用任何其他数据结构来保存解析出的流程名称及其对应的各原子流程,例如可以用链表、堆栈等等方式来保存。
接下来,在步骤S440~S460的子循环中,针对在步骤S430中解析出的每个原子流程,可以对例如数据库中的另一集合“原子流程”(或SFlow)进行检索,以查找是否存在与前面解析出的每个原子流程相对应的记录(S440)。
如果存在(S440的“是”),则方法400直接进行到步骤S460,否则(S440的“否”),方法400进行至步骤S450。在步骤S450中,可以如上述规则所述来解析与该原子流程相对应的原子流程表,并将其具体的节点信息连同该原子流程的标识符(例如,名称)以关联方式添加到集合SFlow中,以供后续使用或供其他流程使用。
在步骤S460中,可以判断当前原子流程是否为当前流程的最后一个原子流程。如果是(S460的“是”),则方法400进行至步骤S470,针对原子流程的子循环结束;否则(S460的“否”),方法400返回步骤S440,以针对下一原子流程来重复步骤S440~S460。
在步骤S470中,可以判断当前流程是否为流程表的最后一个流程。如果是(S470的“是”),则针对流程的循环结束且进而方法400结束,否则(S470的“否”),方法400可以返回步骤S430,以针对流程表中的下一流程来重复步骤S430~S470。
接下来,将结合图5来详细说明执行某一流程及其原子流程的示例方法500。图5示出了根据本公开实施例的基于表来执行流程和原子流程的示例方法500。大体上,根据本公开实施例的方法500首先加载前面结合图4来说明的流程表/原子流程解析的过程中获取到的集合“流程”和“原子流程”,并根据这两个集合中的信息来执行对应节点,并加入错误和时间控制,直到流程执行完成,可以返回成功或错误信息。
具体地,如图5所示,方法500开始于步骤S510。在步骤S510,可以首先从数据库中加载集合“流程”中的数据,以获取流程的所有原子流程。具体地,所获取的信息可以是该流程中所有原子流程的表名称,以方便系统在另一集合“原子流程”中查找对应的原子流程的具体信息。
接下来,在步骤S520,如上所述从另一集合“原子流程”中获取该流程的所有原子流程的所有节点的信息。然后在步骤S530,可以针对每个节点开始循环S530~S560。在步骤S530,执行当前节点(如果为初次执行,则为原子流程的第一个节点)的一个或多个操作。同时,对该节点的执行进行错误和/或超时监控。如图5所示,步骤S540用于确定当前节点的执行中是否发生错误,而步骤S550用于确定当前节点的执行是否超时。这两个步骤可以并行执行,无论哪个步骤出现问题,都可以直接跳转到步骤S570,以向上层流程报错。然而,本公开实施例不限于此。在另一些实施例中,当出现错误时,如果如前所述“错误处理”单元格中设置了例如“Continue”,则可以进行到步骤S560,从而使得该原子流程忽略错误/超时,而继续执行。
在步骤S560,判断当前节点是否是该原子流程的最后一个节点,如果是(步骤S560:“是”),则该原子流程执行结束,并向上层流程返回执行结果。如果否(步骤S560:“否”),则针对下一节点来重复循环S530~S560。
接下来,将结合图6来详细说明执行某一流程的示例方法600。图6示出了根据本公开实施例的基于表来执行流程的示例方法600。大体上,根据本公开实施例的方法600通常顺序执行各个原子流程(然而这不是必须的)。在当前原子流程对应的业务运行结束后,根据返回信息确定是否执行下个原子流程。若执行,则将下一原子流程设置为当前原子流程,继续加载和初始化。若不执行,则表明当前流程已完成或出现错误,此时返回执行结果,结束该流程。
具体地,如图6所示,方法600开始于步骤S610。在步骤S610,可以首先从数据库中加载集合“流程”中的数据,以获取流程的所有原子流程。然后,针对各个原子流程的业务对象执行初始化。
接下来,在步骤S620,执行当前原子流程的操作。具体地,可以参照上面结合图5所述的方法来执行各个原子流程。然后,在步骤S630中,对该原子流程的执行进行错误和/或超时监控,这类似于图5的步骤S540和S550。如果出现错误和/或超时,则可以进行到步骤S640,以确定是否继续该原子流程和/或流程本身。例如,可以针对每个原子流程附加设置类似于上述原子流程的节点的“错误处理”单元格的单元格,以例如根据该单元格的设置来确定发生错误/超时时如何进行后续操作。然而,本公开实施例不限于此。在另一些实施例中,无论哪个方面出现问题,都可以直接导致方法600结束,并向用户报错。
如果在步骤S640中确定可以继续后续原子流程的执行,则返回步骤S620以针对下一原子流程重复步骤S620~S640。否则,方法600可以直接结束,并向用户报错。此外,当执行完所有原子流程后,方法600可以结束。
至此,已结合图4~6详细描述了根据本公开实施例的基于表来配置/执行流程和/或原子流程的示例方法400、500和600。通过使用根据本公开实施例的基于表来配置和/或执行流程和/或原子流程的方法和设备,可以(1)采用广泛使用的excel表格来编写流程配置文件,相比于其他的基于XML/DTD的配置文件或专用配置文件,上手更快、编写更方便;(2)提供多语言提示,方便流程控制的国际化;(3)节点可以用主+谓(+宾)的格式来灵活配置,且同一格中的节点可以并行执行。
图7是示出了根据本公开实施例的示例设备的示例布置700的框图。布置700包括处理器706(例如,数字信号处理器(DSP))。处理器706可以是用于执行本文描述的流程的不同动作的单一处理单元或者是多个处理单元。布置700还可以包括用于从其他实体接收信号的输入单元702、以及用于向其他实体提供信号的输出单元704。输入单元702和输出单元704可以被布置为单一实体或者是分离的实体。
此外,布置700可以包括具有非易失性或易失性存储器形式的至少一个可读存储介质708,例如是电可擦除可编程只读存储器(EEPROM)、闪存、和/或硬盘驱动器。可读存储介质708包括计算机程序710,该计算机程序710包括代码/计算机可读指令,其在由布置700中的处理器706执行时使得硬件布置700和/或包括硬件布置700在内的设备100可以执行例如上面结合图4~6所描述的流程及其任何变形。
计算机程序710可被配置为具有例如计算机程序模块710A~710C架构的计算机程序代码。因此,在使用硬件布置700时的示例实施例中,布置700的计算机程序中的代码包括:模块710A,用于根据与原子流程相关联的原子流程表来确定原子流程的一个或多个节点。计算机程序中的代码还包括:模块710B,用于至少部分基于所确定的一个或多个节点来配置所述原子流程。然而,计算机程序710中还可以包括用于执行本文描述的各种方法的各个步骤的其他模块。
计算机程序模块实质上可以执行图4~6中所示出的流程中的各个动作,以模拟各种设备。换言之,当在处理器706中执行不同计算机程序模块时,它们可以对应于本文中所提到的各种没备的各种不同单元。
尽管上面结合图7所公开的实施例中的代码手段被实现为计算机程序模块,其在处理器706中执行时使得硬件布置700执行上面结合图4~6所描述的动作,然而在备选实施例中,该代码手段中的至少一项可以至少被部分地实现为硬件电路。
处理器可以是单个CPU(中央处理单元),但也可以包括两个或更多个处理单元。例如,处理器可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))。处理器还可以包括用于缓存用途的板载存储器。计算机程序可以由连接到处理器的计算机程序产品来承载。计算机程序产品可以包括其上存储有计算机程序的计算机可读介质。例如,计算机程序产品可以是闪存、随机存取存储器(RAM)、只读存储器(ROM)、EEPROM,且上述计算机程序模块在备选实施例中可以用UE内的存储器的形式被分布到不同计算机程序产品中。
至此已经结合优选实施例对本公开进行了描述。应该理解,本领域技术人员在不脱离本公开的精神和范围的情况下,可以进行各种其它的改变、替换和添加。因此,本公开的范围不局限于上述特定实施例,而应由所附权利要求所限定。
此外,在本文中被描述为通过纯硬件、纯软件和/或固件来实现的功能,也可以通过专用硬件、通用硬件与软件的结合等方式来实现。例如,被描述为通过专用硬件(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)来实现的功能,可以由通用硬件(例如,中央处理单元(CPU)、数字信号处理器(DSP))与软件的结合的方式来实现,反之亦然。
Claims (22)
1.一种基于表来配置原子流程的方法,包括:
根据与所述原子流程相关联的原子流程表来确定所述原子流程的一个或多个节点;以及
至少部分基于所确定的一个或多个节点来配置所述原子流程。
2.根据权利要求1所述的方法,其中,所述原子流程表包括表示所述原子流程的节点的一条或多条记录。
3.根据权利要求2所述的方法,其中,每条记录包括一个或多个单元格,每个单元格表示以下各项之一:
与所述节点相关联的至少一个前置检查;
与所述节点相关联的至少一个执行动作;
与所述节点相关联的至少一个后置检查;
与所述节点相关联的错误处理;以及
与所述节点相关联的一个或多个语种的提示信息。
4.根据权利要求3所述的方法,其中,如果同一单元格包含至少两个动作和/或检查,则所述至少两个动作和/或检查是并行执行的。
5.根据权利要求3所述的方法,其中,每个动作和/或检查包括用于指示该动作和/或检查所针对的对象的信息、以及如何动作/检查的信息。
6.根据权利要求5所述的方法,其中,每个动作和/或检查还包括用于指示动作和/或检查的程度和/或参数的信息。
7.根据权利要求5或6所述的方法,其中,各种信息的组合能够映射到具体的执行指令。
8.根据权利要求3所述的方法,其中,所述前置检查用于确定是否执行当前节点的以下各项:
执行动作;
后置检查;
错误处理;以及
显示预定语种的提示信息。
9.根据权利要求3所述的方法,其中,所述错误处理用于在当前节点的执行中出现错误和/或超时时确定是否继续所述原子流程中后续节点的执行。
10.根据权利要求3所述的方法,其中,所述后置检查用于在执行当前节点的执行动作之后检查执行结果是否正确。
11.一种基于表来配置流程的方法,包括:
根据与所述流程相关联的流程表来确定所述流程的至少一个原子流程;
根据与每个原子流程相关联的原子流程表来配置相应原子流程;以及
基于经配置的所述至少一个原子流程来配置所述流程。
12.根据权利要求11所述的方法,其中,所述流程表包括表示所述流程的至少一个原子流程的单元格。
13.根据权利要求12所述的方法,其中,针对表示所述流程的至少一个原子流程的单元格,所述流程表还包括分别表示以下各项之一的一个或多个单元格:
与所述流程相关联的流程标识符、或与所述流程相关联的一个或多个语种的提示信息。
14.根据权利要求12所述的方法,其中,如果表示所述流程的至少一个原子流程的单元格表示至少两个原子流程,则所述至少两个原子流程是顺序执行的。
15.一种基于表来执行原子流程的方法,包括:
按照使用权利要求1~10中任一项所述的方法来配置的原子流程来执行所述原子流程。
16.根据权利要求15所述的方法,其中,执行所述原子流程还包括:
针对所述原子流程的至少一个节点设置执行时限,如果所述至少一个节点的执行时间超过所述执行时限,则确定所述至少一个节点的执行发生超时错误,并基于所述至少一个节点的错误处理来确定是否执行所述原子流程中的下一节点。
17.一种基于表来执行流程的方法,包括:
按照使用权利要求11~14中任一项所述的方法来配置的流程来执行所述流程。
18.根据权利要求17所述的方法,其中,执行所述流程还包括:
针对所述流程的至少一个原子流程设置执行时限,如果所述至少一个原子流程的执行时间超过所述执行时限,则确定所述至少一个原子流程的执行发生超时错误,并基于与所述至少一个原子流程相关联的错误处理来确定是否执行所述流程中的下一节点。
19.一种基于表来配置原子流程的设备,包括:
节点确定单元,用于根据与所述原子流程相关联的原子流程表来确定所述原子流程的一个或多个节点;以及
原子流程配置单元,用于至少部分基于所确定的一个或多个节点来配置所述原子流程。
20.一种基于表来配置流程的设备,包括:
原子流程确定单元,用于根据与所述流程相关联的流程表来确定所述流程的至少一个原子流程;
原子流程配置单元,用于根据与每个原子流程相关联的原子流程表来配置相应原子流程;以及
流程配置单元,用于基于经配置的所述至少一个原子流程来配置所述流程。
21.一种基于表来执行原子流程的设备,包括:
原子流程执行单元,用于按照由权利要求19所述的设备配置的原子流程来执行所述原子流程。
22.一种基于表来执行流程的设备,包括:
流程执行单元,用于按照由权利要求20所述的设备配置的流程来执行所述流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611270506.XA CN108256716B (zh) | 2016-12-29 | 2016-12-29 | 基于表来配置/执行流程和/或原子流程的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611270506.XA CN108256716B (zh) | 2016-12-29 | 2016-12-29 | 基于表来配置/执行流程和/或原子流程的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108256716A true CN108256716A (zh) | 2018-07-06 |
CN108256716B CN108256716B (zh) | 2020-10-16 |
Family
ID=62722072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611270506.XA Active CN108256716B (zh) | 2016-12-29 | 2016-12-29 | 基于表来配置/执行流程和/或原子流程的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108256716B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109345081A (zh) * | 2018-09-07 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 一种数据采集方法、装置及电子设备 |
CN110109692A (zh) * | 2019-05-13 | 2019-08-09 | 天津联兴科技技术有限公司 | 一种系统升级方法 |
CN111538491A (zh) * | 2020-04-24 | 2020-08-14 | 成都新致云服信息技术有限公司 | 数据事件处理方法、装置、设备和存储介质 |
CN112635043A (zh) * | 2020-12-29 | 2021-04-09 | 深圳开立生物医疗科技股份有限公司 | 一种超声检查方法及相关装置 |
WO2021068840A1 (zh) * | 2019-10-08 | 2021-04-15 | 上海宝阶智能科技有限公司 | 一种异构嵌入式表格化处理及执行动作流程的方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216906A (zh) * | 2007-12-29 | 2008-07-09 | 中国建设银行股份有限公司 | 一种流程控制方法及一种流程引擎 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1011498A (ja) * | 1996-06-27 | 1998-01-16 | Fuji Xerox Sogo Kyoiku Kenkyusho:Kk | 営業マネジメント支援システム |
CN101477652A (zh) * | 2008-12-04 | 2009-07-08 | 山东浪潮齐鲁软件产业股份有限公司 | 流程超时机制的实现方法 |
CN101873334B (zh) * | 2009-04-24 | 2013-01-02 | 同济大学 | 一种状态驱动的可执行业务流程执行方法 |
CN101562540B (zh) * | 2009-05-08 | 2011-11-02 | 华为技术有限公司 | 业务监控方法及设备 |
JP2011013752A (ja) * | 2009-06-30 | 2011-01-20 | Hitachi Plant Technologies Ltd | 作業予定支援方法、および、作業予定支援システム |
CN101876970A (zh) * | 2009-12-22 | 2010-11-03 | 金蝶软件(中国)有限公司 | 一种合并报表方法和装置 |
CN102662650A (zh) * | 2012-03-08 | 2012-09-12 | 北京神州数码思特奇信息技术股份有限公司 | 一种基于动态业务流程引擎实现方法和系统 |
CN102663543A (zh) * | 2012-03-22 | 2012-09-12 | 北京英孚斯迈特信息技术有限公司 | 一种用于企业数据统一平台的调度系统 |
CN106155718B (zh) * | 2015-04-02 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 流程引擎实现方法及流程引擎系统 |
CN104850665B (zh) * | 2015-06-12 | 2017-11-24 | 江苏中威科技软件系统有限公司 | 通过流程嵌套实现流程流转的方法及系统 |
-
2016
- 2016-12-29 CN CN201611270506.XA patent/CN108256716B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216906A (zh) * | 2007-12-29 | 2008-07-09 | 中国建设银行股份有限公司 | 一种流程控制方法及一种流程引擎 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109345081A (zh) * | 2018-09-07 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 一种数据采集方法、装置及电子设备 |
CN109345081B (zh) * | 2018-09-07 | 2021-10-29 | 创新先进技术有限公司 | 一种数据采集方法、装置及电子设备 |
CN110109692A (zh) * | 2019-05-13 | 2019-08-09 | 天津联兴科技技术有限公司 | 一种系统升级方法 |
WO2021068840A1 (zh) * | 2019-10-08 | 2021-04-15 | 上海宝阶智能科技有限公司 | 一种异构嵌入式表格化处理及执行动作流程的方法和装置 |
US11960890B2 (en) | 2019-10-08 | 2024-04-16 | Shanghai Baojie Intelligent Technology Co., Ltd. | Heterogeneous embedded method and device for tabular processing and execution of operation flow |
CN111538491A (zh) * | 2020-04-24 | 2020-08-14 | 成都新致云服信息技术有限公司 | 数据事件处理方法、装置、设备和存储介质 |
CN112635043A (zh) * | 2020-12-29 | 2021-04-09 | 深圳开立生物医疗科技股份有限公司 | 一种超声检查方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108256716B (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256716A (zh) | 基于表来配置/执行流程和/或原子流程的方法和设备 | |
CN110347953B (zh) | 页面生成方法、装置、计算机设备及存储介质 | |
US7657832B1 (en) | Correcting validation errors in structured documents | |
US8042091B2 (en) | Automatic composition of model transformations | |
WO2006107529A2 (en) | Method and system for aggregating rules for a property associated with a document element | |
CN106469140A (zh) | 一种报表生成系统及其方法 | |
CN110221824B (zh) | 组件的生成方法和装置 | |
CN109471773A (zh) | 一种前端日志多通道输出的方法、装置、服务器及存储介质 | |
CN107506190A (zh) | 基于Spring框架的XML文件修改方法及装置 | |
CN106933518A (zh) | 一种打印装置及打印方法 | |
US11003849B2 (en) | Technologies for valid dependency parsing in casual text | |
CN109885290A (zh) | 应用程序服务描述信息生成与发布方法、装置和存储介质 | |
CN113672208A (zh) | 基于计算机软件实现兼容信创适配的低代码开发框架系统 | |
CN103838575A (zh) | 一种基于extjs框架的插件式页面定制实现方法 | |
CN107895592A (zh) | 医嘱流程配置方法及电子设备 | |
Winter et al. | Deriving and combining mixed graphs from regulatory documents based on constraint relations | |
Alashqar | Automatic generation of uml diagrams from scenario-based user requirements | |
CN116071769A (zh) | 表格识别方法、装置、非易失性存储介质和计算机设备 | |
Gessler et al. | Midas loop: A prioritized human-in-the-loop annotation for large scale multilayer data | |
CN105868113B (zh) | 字符串查找方法及装置 | |
CN114691712A (zh) | 一种生成票据的方法、装置以及存储介质 | |
US9024968B2 (en) | User interface rendering and operating method, a computer program product, and a UI rendering and operating system | |
CN110442812A (zh) | 前台页面的权限控制方法和系统 | |
FR2788357A1 (fr) | Maintenance d'un modele d'un systeme | |
Nečas | BDD as a specification and QA instrument |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |