CN117472553B - 一种工作流处理方法、装置、处理设备及可读存储介质 - Google Patents
一种工作流处理方法、装置、处理设备及可读存储介质 Download PDFInfo
- Publication number
- CN117472553B CN117472553B CN202311827916.XA CN202311827916A CN117472553B CN 117472553 B CN117472553 B CN 117472553B CN 202311827916 A CN202311827916 A CN 202311827916A CN 117472553 B CN117472553 B CN 117472553B
- Authority
- CN
- China
- Prior art keywords
- workflow
- operator
- node
- target
- operation result
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 55
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 42
- 239000002243 precursor Substances 0.000 claims description 16
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种工作流处理方法、装置、处理设备及可读存储介质,涉及工作流设计技术领域。该方法包括:获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。本发明的方案,解决了现有的工作流处理方法难以完成复杂业务的工作流处理的问题。
Description
技术领域
本发明涉及工作流设计技术领域,特别是指一种工作流处理方法、装置、处理设备及可读存储介质。
背景技术
工作流是包含若干步骤且步骤间有前后依赖关系的业务描述,工作流引擎是根据工作流描述规则,按序执行步骤的服务。
在多个微服务共同协作完成复杂业务时,如何协调多个分布式调用、异步消息调用且保证事务一致性(数据一致性)显得尤为重要。然而,现有的工作流处理方法难以完成复杂业务的工作流处理。
发明内容
本发明的目的是提供一种工作流处理方法、装置、处理设备及可读存储介质,解决了现有的工作流处理方法难以完成复杂业务的工作流处理的问题。
为达到上述目的,本发明的实施例提供一种工作流处理方法,包括:
获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。
为达到上述目的,本发明的实施例提供一种工作流处理装置,包括:
获取模块,用于获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
处理模块,用于对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。
为达到上述目的,本发明的实施例提供一种处理设备,包括处理器和收发机,其中,所述处理器用于:
获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。
为达到上述目的,本发明的实施例提供一种处理设备,包括收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;所述处理器执行程序或指令时实现如上所述的工作流处理方法。
为达到上述目的,本发明的实施例提供一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的工作流处理方法中的步骤。
本发明的上述技术方案的有益效果如下:
本发明实施例的方法,获取目标工作流对应的工作流描述信息,工作流描述信息包括至少一个算子,算子包括至少一个步骤,步骤用于描述目标工作流的业务逻辑,对工作流描述信息进行处理,获得目标工作流的运行结果。如此,能够利用算子和步骤组合的方式构建目标工作流,从而使得目标工作流更好地适应复杂的业务流程,提高了业务表达能力和效率。
附图说明
图1为本发明实施例的工作流处理方法的流程图;
图2为本发明实施例的步骤定义及算子定义的示意图;
图3为本发明实施例的算子组合示例的运行拓扑图;
图4为本发明实施例的工作流执行层架构图;
图5为本发明实施例的协调器示意图;
图6为本发明实施例的工作流执行器示意图;
图7为本发明实施例的工作流处理装置的结构图;
图8为本发明实施例的处理设备的结构图;
图9为本发明另一实施例的处理设备的结构图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“***”和“网络”在本文中常可互换使用。
在本申请所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
如图1所示,本发明实施例的一种工作流处理方法,包括:
步骤101,获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑。
这里,工作流描述信息具体可以是工作流描述语言(或者称工作流定义语言,或工作流语言),也就是用于描述任务和工作流的编程语言,工作流描述语言中包含有业务逻辑。具体的,工作流描述信息可以由用户通过终端上的客户端(例如工作流引擎客户端)进行输入,或者通过其他方式直接获取得到,这里不作具体限定。
需要说明的是,相关技术中的工作流描述语言是不支持组合的,而本发明实施例中,工作流描述信息中可以包括1个或多个算子,这样,目标工作流可以通过多个算子的组合而成为更大、更复杂的流程,用户能够基于工作流语言方便地构建自己的业务逻辑,在执行层面动态解析步骤和算子,从而保证数据柔性事务的一致性。
步骤102,对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。
该实施例中,获取目标工作流对应的工作流描述信息,工作流描述信息包括至少一个算子,算子包括至少一个步骤,步骤用于描述目标工作流的业务逻辑,对工作流描述信息进行处理,获得目标工作流的运行结果。如此,能够利用算子和步骤组合的方式构建目标工作流,从而使得目标工作流更好地适应复杂的业务流程。
具体的,在本发明一可选示例中,工作流语言有两种概念,分别为步骤和算子,其中,步骤可用于详细描述业务逻辑定义及运行模式(如同步调用模式、异步调用模式、消息调用模式等),并可设置超时、重试、幂等性等参数;算子为一个可组合的通用运行单元,算子具有组合能力,算子可以分为:原子算子、串行算子、并行算子以及运行时子工作流算子,算子的组合能力为构建复杂业务流程的目标工作流提供了基础。
如图2所示,这里,对算子的定义具体说明如下:
在一些可选实施例中,所述算子包括以下至少一项:
(1)原子算子,包括一个所述步骤。
也就是说,原子算子表示原子语义,用于把步骤(step)转换为算子(步骤可以一比一的转化为原子算子),原子算子的算子结果为step的执行结果(output),且算子结果的类型与step的执行结果的类型一致。
例如:DSL.Identity<Input,Output> node1= step.toDSL(),表示把step转换为原子算子,其中,Identity算子结果为step的执行结果,Identity算子结果的类型跟step的执行结果的类型一致。
(2)串行算子,包括至少两个所述原子算子,所述串行算子中的各个所述原子算子之间存在依赖关系。
也就是说,串行算子中至少包括两个步骤。
这里,串行算子表示串行语义,用于串行执行两个步骤(也就是串行算子中两个原子算子中的步骤)。
例如:DSL.Cons<Output> node1=prev.nextDSL(next),其中,prev和next均表示算子,next算子的参数为prev算子的运行结果,由prev算子和next算子组成的串行算子的算子结果为next算子的运行结果,该串行算子的算子结果的类型与next算子的运行结果的类型一致。
(3)并行算子,包括至少两个所述原子算子,所述并行算子中的各个所述原子算子之间无依赖关系。
这里,并行算子表示并行语义,用于并行执行N个算子(即并行算子中的N个原子算子),该N个算子中的各个算子之间无依赖关系,并行算子的算子结果为各个子算子结果组成的元组,例如:
DSL.Parallel2<Tuple2<Output1,Output2>> node1=DSL.parallel2(step1,step2)。
其中,并行算子的算子结果为:Tuple2、Tuple3...Tuple22等。
(4)子工作流算子,所述子工作流算子的输入参数为所述子工作流算子的前驱算子的动态运行结果。
也就是说,子工作流算子是根据上一步的运行结果动态创建出的、包含若干嵌套子流程的复合算子,子工作流算子的输入(input)为上一步算子的动态运行结果。例如:
DSL.FlatMap<Output> node2=node1.flatMap(x->FlatMapper(node1,x))。
需要说明的是,子工作流算子可以为原子算子、串行算子、并行算子中的任何之一或者任意组合。需要说明的是,这里,步骤产生的不是业务逻辑结果,而是一个新的可运行单元。也就是说,上述算子的定义是对工作流执行方式进行的一种描述,且这种描述可以被复用、组合而产生新的工作流描述。
下面,对算子中的步骤进行说明:
如图2所示,矩形表示步骤,椭圆形表示算子。本发明实施例中定义了多种不同语义的步骤接口(用户也可根据自身业务场景实现相关接口的定义),可供用户调用,不同步骤接口。
在一些可选实施例中,所述步骤的运行模式包括以下至少一项:
(1)同步调用模式。
需要说明的是,通过编写实现同步步骤接口,可以在调用同步步骤接口时执行运行模式为同步调用模式的步骤(即同步步骤)。同步步骤接口中,定义了该步骤的正向操作方法和补偿操作方法,其中,补偿操作方法的参数为正向操作的结果。
需要说明的是,设置补偿操作方法是为了在出现异常时设法修补异常数据,使得这些数据与执行成功后的数据一致。
(2)异步调用模式。
需要说明的是,通过编写实现异步步骤接口,可以在调用异步步骤接口时执行运行模式为异步调用模式的步骤(即异步步骤)。异步步骤接口中,定义了与同步步骤接口中类似的正向操作和补偿操作方法,但其中的正向操作的结果为异步执行对象(如java语言的Future),需等待异步执行对象执行完毕才可确认该步骤已执行完,补偿操作也需要等异步执行对象执行完毕才能进行。
(3)消息调用模式。
需要说明的是,通过编写实现异步消息步骤接口(包括发送接口和接收接口),可以在调用发送接口和接收接口时执行运行模式为消息调用模式的步骤(即消息步骤)。另外还需要定义消息唯一键,发送消息及回复消息可以通过唯一键进行关联。以使用消息队列发送和接收消息为例,当执行运行模式为消息调用模式的步骤时,可以把参数和消息唯一键封装为消息发送到消息队列,当工作流引擎收到该步骤的接收接口期待的消息后,该步骤执行成功或失败。
通过上述步骤和算子的说明可以看出,后继算子的输入参数是前驱算子的运行结果,后继算子与前驱算子的类型必须匹配,否则会在编译期报错,这样,能够更早地发现异常。
上述实施例中,可采用mega算法正向-补偿机制,还抽象出同步调用模式、异步调用模式、消息调用模式等运行模式的步骤,结合编程语言特点,能够获得伪装为编程语言函数的算子(Function),将一个工作流包装为一个算子,而多个工作流可以用算子组合的方式组合为更复杂的工作流。
上述实施例中,通过定义算子和不同运行模式的业务步骤,可以解决传统工作流引擎不具备消息、运行时子工作流算子能力的问题以及工作流难以组合问题,本发明实施例不仅支持同步、异步、消息、运行时动态子工作流能力,还可以把工作流本身当作一个算子,进而组合成更复杂的工作流,这种组合能力可以有效提高业务表达能力和效率。
需要说明的是,相关技术中缺少对异步调用、消息调用以及运行时子工作流算子等的支持,因而难以满足复杂业务逻辑。而本发明实施例中,通过异步步骤和消息步骤及动态子工作流,通过运行时识别步骤类型(同步步骤、异步步骤、消息步骤等)和算子类型(原子算子、串行算子、并行算子、子工作流算子等),提升了工作流表达能力。
还需要说明的是,现有技术因使用JSON文本方式表达工作流,导致本能在编译期发现的问题推迟到了运行时才能被发现,安全风险较高。本发明实施例中的步骤和算子可以使用静态类型语言实现,如java、C#等,这样,开发者开发的工作流领域特定语言(Domainspecific language,DSL)(也即工作流描述语言)具备类型安全和编译器保护,能够在编译期发现异常(比如参数类型错误、返回值类型错误等常见问题)。
如图3所示的算子组合示例的运行拓扑图中,矩形表示步骤,椭圆表示算子,以DSL对图3说明如下:
val step1=new Step<Input,Output1>(){...};
val step2=new AsyncStep<Output1,Output2>(){...};
val step3=new MessageStep<Output3,Output4>(){...};
val step4=new Step<Input,Output1>(){...};
val node1=step1.toDSL().next(step2.toDSL()).next(step3.toDSL);
val node2=step4.toDSL();
val node3=DSL.parallel2(node1,node2);
val node6=node3.flatMap(result->FlatMapper.apply(result._2>100?node4: node5,result))。
这里,step1、step2、step3、step4分别代表不同的业务步骤,需要由用户实现正向业务逻辑和补偿业务逻辑,其中step1的执行结果是step2的输入,step2的执行结果是step3的输入,然后step1、step2和step3组合成一个串行算子node1,算子node2(由step4组成)和算子node1的并行执行的结果存入算子node3,算子node3的运行结果会传给运行时子工作流算子node4或node5(例如,node3的运行结果大于100则执行node4,否则执行node5,node4和node5定义未在上述示例代码中体现)。
需要说明的是,以上步骤任何一个步骤失败均会引起此步骤前置成功步骤的补偿操作。
通过以上示例可以看出,步骤转换为原子算子后,可以通过串行算子、并行算子、子工作流算子的形式组合为更复杂的算子,从而构建复杂的工作流,而多个工作流可以组合为更复杂的工作流。
在一些可选实施例中,上述步骤102,对所述工作流描述信息进行处理,获得所述目标工作流的运行结果,具体可以包括以下步骤:
步骤1021,对所述工作流描述信息进行解析,获得所述目标工作流对应的有向无环图(Directed acyclic graph ,DAG),所述DAG包括至少一个节点以及所述节点之间的路径,所述节点与所述工作流描述信息中的所述算子一一对应。
这里,节点之间的路径可以反映算子之间的关联关系,比如父节点与子节点的关系。
步骤1022,根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果。
在一具体示例中,该步骤1022可以包括:获取第一参数,并将所述第一参数作为所述根节点的输入参数;从所述根节点开始,依次将各个所述节点作为目标节点,并执行所述目标节点中的步骤,获得所述目标节点对应的运行结果;根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果。
该实施例中,通过对工作流描述信息进行解析,可以将工作流描述信息转化为DAG,DAG中各个节点之间的连接关系,能够反映构成目标工作流的算子之间的关系,根据DAG的结构,从DAG的根节点开始运行各个节点,可获得目标工作流的运行结果。
在一具体示例中,本发明实施例的工作流处理方法可以由如图4所示的工作流执行层的架构具体执行实现,该工作流执行层的架构主要包括:
(1)工作流引擎客户端:负责将用户输入的工作流描述语言(DSL)提交至工作流引擎入口,与工作流引擎在同一个进程中,以便能直接执行步骤函数。
(2)工作流引擎入口:具体可以实现为Restful接口或消息队列接收入口。工作流引擎入口可以把工作流描述语言封装为消息命令,异步地提交(command)至协调器。
(3)协调器:用于把消息命令提交(command)给工作流解析器,并创建工作流,记录工作流的映射关系,以便运行时子工作流算子的运行结果能传递到正确的父工作流算子,另外,协调器还负责把消息准确地传递给工作流中的某算子。
如图5所示,协调器的框外面的flow1(工作流1)、flow2(工作流2)代表工作流运行时,协调器的框内的状态映射表。协调器主要包括工作流管理模块和消息管理模块,这里,对协调器中的模块进行简要说明如下:
工作流管理模块:主要用于维护所有正在运行的工作流上下文状态信息(flowState),例如,工作流的父工作流信息(即parent)、父工作流节点id(即nodeId)以及工作流的运行时引用(即flowRef,工作流引用指向运行中的工作流,可以通过此引用直接向工作流发消息)。运行时工作流通过消息通知的方式,告知协调器其自身的最终状态(例如成功或失败),然后查找工作流上下文状态信息:若此消息对应的工作流为子工作流,则根据其父工作流引用通知其子节点工作流的最终状态,然后父工作流继续执行;如果此消息对应的工作流为顶层工作流(也即无父节点),则通知客户端此工作流的最终执行结果(也就是工作流的运行结果),并删除此工作流上下文信息。
消息管理模块:消息步骤采用发送-等待消息回复的模式,消息发送和回复通过一个唯一键(例如msgId1、msgId2)进行关联。消息管理模块负责维护消息步骤的所有发送-等待回复的上下文信息映射表,上下文状态信息(msgState)包括此步骤所在的flowId(工作流ID)及nodeId(父工作流节点id)。另外,消息管理模块还负责监听消息队列,当收到的消息(Received Message)在映射表中找到上下文信息后,调用工作流管理模块,并根据其上下文信息中的流程引用发送消息步骤的执行结果到此运行时工作流。
(4)工作流解析器:主要用于将工作流描述语言(比如目标工作流对应的工作流描述信息)解析为一个DAG,并创建工作流执行器执行目标工作流。
需要说明的是,在将目标工作流对应的工作流描述信息解析为有向无环图时,首先可以找到所有无输入的算子作为源算子,然后根据源算子的依赖关系以深度优先或广度优先的方式找出后继算子,之后继续找后继算子的过程,构建算子依赖关系,直至获得目标工作流对应的DAG。
(5)工作流执行器:
如图6所示,经过工作流解析器解析得到DAG后,根据初始输入参数(即第一参数)开始执行sources属性的节点(Node),也就是将第一参数作为根节点的输入参数,开始运行根节点。
当根节点(source节点)执行成功后,查找根节点的后继节点状态,如果后继节点状态为空,则生成一个初始状态(Initial),并置其状态为等待参数状态(即Waitingparams),然后把当前节点的运行结果作为输入参数存入此后继节点状态。根节点之外的其余节点以类似根节点的模式运行,每当一个节点执行成功,都进行后继节点是否满足运行条件的判断以及是否触发回滚的逻辑判断:
1)若一个节点的参数不满足运行条件,则继续等待该节点的前驱节点传值。
2)若一个节点的参数满足运行条件(可以查找DAG中此节点的所有前驱节点来判断是否满足运行条件),则把该节点的所有输入参数转换为一个Tuple(元祖)结果,并交给本算子(也就是本节点对应的算子)的步骤函数运行,同时把该节点状态设置为Running(运行状态)。
若一个节点运行失败,则置工作流状态为Error(错误状态),并设置rootError异常信息(也就是错误根因),开始执行如下回滚操作:
遍历所有已完成(Finish,已完成状态)的节点,判断每一个节点是否能回滚,以第一节点为例,主要判断逻辑如下:若第一节点无后继节点,或第一节点有后继节点但后继节点已完成回滚,则对第一节点进行回滚操作,并将该节点状态设置为Rolling Back(回滚状态),另外,根据此步骤的执行结果传递给步骤的补偿函数,并执行补偿函数;若回滚操作执行失败,则根据工作流回滚失败策略确定是否继续回滚;当所有节点回滚完毕(RolledBack,回滚完毕状态),则可以达到数据最终一致性的事务保证。
通过上述回滚操作,可以使得数据回归到执行前的状态。
需要说明的是,执行完毕的子工作流状态数据不能立即删除,以防父工作流回滚,当父工作流执行完毕后子工作流状态方可删除。
上述实施例中,执行层通过协调器、执行器等组件之间的密切配合,能够动态解析工作流算子并执行。当某一个步骤执行失败后,能逆序执行补偿操作,从而把整个流程的数据恢复到起始点,保证了事务数据的最终一致性。
可选地,所述根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果,包括以下至少一项:
在所述目标节点运行成功,且所述目标节点不存在后继节点的情况下,将所述目标节点对应的运行结果作为所述目标工作流的运行结果;
在所述目标节点运行成功,且所述目标节点存在后继节点的情况下,根据所述目标节点的后继节点的运行结果,获得所述目标工作流的运行结果。
可选地,所述方法还包括以下至少一项:
在所述目标节点的后继节点的状态为空的情况下,将所述后继节点的状态设置为等待参数状态,并将所述目标节点对应的运行结果作为所述后继节点的输入参数存入所述后继节点的状态;
在所述目标节点中的步骤开始执行(也就是目标节点开始运行)的情况下,将所述目标节点的状态设置为运行状态;
在所述目标节点中的步骤未开始执行的情况下,将所述目标节点的状态设置为等待状态;
在所述目标节点运行失败的情况下,将所述目标节点的状态设置为错误状态,并对所述节点中已完成运行的第一节点执行回滚操作。
这里,第一节点具体可以是指以下节点:
没有被其他节点依赖的节点,也就是处在DAG中最末尾的节点;
存在依赖第一节点的后继节点,但该后继节点已报错或已完成回滚。
该实施例中,根据事件(例如节点开始运行、节点运行失败等)修改目标节点的状态,示例性的,可以创建工作流状态机来管理各个节点的状态。
可选地,对所述节点中已完成运行的第一节点执行回滚操作,包括:
在所述第一节点无后继节点,或者,所述第一节点有后继节点且所述后继节点已报错或已完成回滚的情况下,对所述第一节点进行回滚操作,直至每一所述第一节点均完成所述回滚操作。
该实施例中,通过对已完成运行的节点执行回滚操作,可以保证事务数据的最终一致性。
下面对本申请实施例提供的工作流处理方法进行具体举例说明。
在一可选示例中,目标工作流的整体执行过程如下:
(一)通过工作流引擎客户端,可以把包含业务逻辑的工作流描述语言提交给工作流引擎入口点。
(二)通过工作流引擎入口点,可以把工作流描述语言封装为消息命令,异步地发送给协调器。
(三)通过协调器,可以为目标工作流分配一个唯一的工作流ID,并保存此目标工作流的上下文信息,之后发给工作流解析器。
(四)通过工作流解析器,可以把工作流描述语言转换为有向无环图,之后创建一个工作流执行器并以此执行工作流业务逻辑。
(五)工作流执行器具体可以执行以下步骤:
(1)创建一个工作流状态机,初始状态为Initial,之后,根据事件(event)修改状态机中的状态。首先,找到source算子(也即DAG中的根节点),然后分解出source算子中的步骤函数,并为步骤函数传递初始参数(即第一参数),把此工作流状态机的该节点状态置为运行中(Running),根据执行结果类型(也就是获取结果的方式的类型,也可以理解为步骤的运行模式)执行以下操作。
若执行结果类型为异步Future(也就是步骤为异步步骤),则等待Future完成。
若步骤为消息步骤,则发送消息后把消息的唯一键及上下文信息注册(firedMessage)到协调器中的消息管理模块,协调器则监听消息队列中此唯一消息键的回复消息:一旦回复消息到来,则协调器通过查找运行时的工作流引用来通知此消息步骤所代表的算子已完成。
若步骤的执行结果为运行时子工作流算子,则把子工作流包装为命令提交到协调器,协调器启动一个新工作流执行器并执行该命令,并保存此运行时子工作流算子的上下文信息。当子工作流运行完成后,会将子工作流的运行结果及其工作流id发送至协调器,协调器根据此工作流id的上下文信息找到其父工作流引用,然后将子工作流的运行结果发送给此父工作流节点。
若此步骤为同步步骤,则步骤的执行结果为算子的最终结果。
(2)当前驱算子执行完毕后,更新此节点的状态,把此节点的运行结果发给其所有的后继节点,并更新其后继节点的参数等待列表;判断后继节点的前驱节点是否全部执行完成,一旦该后继节点的前驱节点执行完成且全部成功,则开始执行此后继节点。
重上述步骤,直到所有节点运行完毕。
(六)回退补偿机制:
当某个算子(也就是节点)的步骤执行失败时,将该算子的状态置为错误状态,并设置错误根因;之后,开始进行回滚操作,将状态置为回滚中;然后,查询状态机节点状态为已完成,且后继节点为未执行或已回滚的节点,然后,执行此节点算子的事务补偿逻辑,具体如下:
(1)如果步骤为异步Future或同步步骤,则把此步骤的执行结果传递给补偿操作方法,并执行补偿操作方法。
(2)如果步骤为消息,则把正向操作方法返回的消息传递给补偿操作方法并执行补偿操作方法,并将消息注册到协调器的消息管理模块,并等待补偿消息的回复消息。
(3)如果步骤为子工作流算子,则把子工作流算子封装为命令提交至协调器,协调器查找此子工作流的状态数据;之后启动子工作流,并将子工作流的状态恢复为上次运行完成时的状态;最后,通知此子工作流从尾节点执行回退命令(也就是执行回滚操作)。
需要说明的是,回滚完成后将回滚结果通知协调器,协调器再将回滚结果转发至父工作流,否则,说明此步骤为同步步骤,回退完成。
重复上述步骤,直至所有节点完成回退。
需要说明的是,采用JSON/XML格式的工作流描述语言编写工作流时,开发人员需要把业务逻辑代码转换成JSON/XML格式的工作流描述,易导致业务代码泄露于工作流描述语言中,降低了程序的健壮性。本发明实施例中,可以利用编译器静态类型检查特点,编译器在编译期对工作流描述语言进行静态检查保护,能够为用户提供更强的安全保护。
该实施例的工作流处理方法,面向研发人员提供了一套工作流语言设计及工作流引擎设计与实现,使用本发明实施例的工作流语言来实现业务逻辑时,开发者无需再以JSON文本方式表达工作流,利用步骤和算子组合的方式编译形成工作流,降低了使用难度,对开发者非常友好,提高了开发效率,使用便捷且类型安全,且工作流本身作为算子可以复用、组合,能够支持分布式柔性事务,适用于长事务、复杂流程等场景。
如图7所示,本发明实施例的一种工作流处理装置,包括:
获取模块710,用于获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
处理模块720,用于对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。
该实施例中,获取目标工作流对应的工作流描述信息,工作流描述信息包括至少一个算子,算子包括至少一个步骤,步骤用于描述目标工作流的业务逻辑,对工作流描述信息进行处理,获得目标工作流的运行结果。如此,能够利用算子和步骤组合的方式构建目标工作流,从而使得目标工作流更好地适应复杂的业务流程,提高了业务表达能力和效率。
可选地,所述算子包括以下至少一项:
原子算子,包括一个所述步骤;
串行算子,包括至少两个所述原子算子,所述串行算子中的各个所述原子算子之间存在依赖关系;
并行算子,包括至少两个所述原子算子,所述并行算子中的各个所述原子算子之间无依赖关系;
子工作流算子,所述子工作流算子的输入参数为所述子工作流算子的前驱算子的动态运行结果。
可选地,所述步骤的运行模式包括以下至少一项:
同步调用模式;
异步调用模式;
消息调用模式。
可选地,所述处理模块720包括:
解析子模块,用于对所述工作流描述信息进行解析,获得所述目标工作流对应的有向无环图DAG,所述DAG包括至少一个节点以及所述节点之间的路径,所述节点与所述工作流描述信息中的所述算子一一对应;
运行子模块,用于根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果。
可选地,所述运行子模块包括:
获取单元,用于获取第一参数,并将所述第一参数作为所述根节点的输入参数;
运行单元,用于从所述根节点开始,依次将各个所述节点作为目标节点,并执行所述目标节点中的步骤,获得所述目标节点对应的运行结果;
处理单元,用于根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果。
可选地,所述处理单元包括以下至少一项:
第一处理子单元,用于在所述目标节点运行成功,且所述目标节点不存在后继节点的情况下,将所述目标节点对应的运行结果作为所述目标工作流的运行结果;
第二处理子单元,用于在所述目标节点运行成功,且所述目标节点存在后继节点的情况下,根据所述目标节点的后继节点的运行结果,获得所述目标工作流的运行结果。
可选地,所述装置还包括以下至少一项:
第一状态处理模块,用于在所述目标节点的后继节点的状态为空的情况下,将所述后继节点的状态设置为等待参数状态,并将所述目标节点对应的运行结果作为所述后继节点的输入参数存入所述后继节点的状态;
第二状态处理模块,用于在所述目标节点中的步骤开始执行的情况下,将所述目标节点的状态设置为运行状态;
第三状态处理模块,用于在所述目标节点中的步骤未开始执行的情况下,将所述目标节点的状态设置为等待状态;
第四状态处理模块,用于在所述目标节点运行失败的情况下,将所述目标节点的状态设置为错误状态,并对所述节点中已完成运行的第一节点执行回滚操作。
可选地,所述第四状态处理模块包括:
回滚子模块,用于在所述第一节点无后继节点,或者,所述第一节点有后继节点且所述后继节点已报错或已完成回滚的情况下,对所述第一节点进行回滚操作,直至每一所述第一节点均完成所述回滚操作。
在此需要说明的是,本发明实施例提供的上述工作流处理装置,能够实现上述的工作流处理方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
如图8所示,本发明实施例的一种处理设备800,包括处理器810和收发机820,其中,所述处理器810用于:
获取目标工作流对应的工作流描述信息,所述工作流描述信息包括至少一个算子,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
对所述工作流描述信息进行处理,获得所述目标工作流的运行结果。
该实施例中,获取目标工作流对应的工作流描述信息,工作流描述信息包括至少一个算子,算子包括至少一个步骤,步骤用于描述目标工作流的业务逻辑,对工作流描述信息进行处理,获得目标工作流的运行结果。如此,能够利用算子和步骤组合的方式构建目标工作流,从而使得目标工作流更好地适应复杂的业务流程,提高了业务表达能力和效率。
可选地,所述算子包括以下至少一项:
原子算子,包括一个所述步骤;
串行算子,包括至少两个所述原子算子,所述串行算子中的各个所述原子算子之间存在依赖关系;
并行算子,包括至少两个所述原子算子,所述并行算子中的各个所述原子算子之间无依赖关系;
子工作流算子,所述子工作流算子的输入参数为所述子工作流算子的前驱算子的动态运行结果。
可选地,所述步骤的运行模式包括以下至少一项:
同步调用模式;
异步调用模式;
消息调用模式。
可选地,所述处理器810在对所述工作流描述信息进行处理,获得所述目标工作流的运行结果时,具体用于:
对所述工作流描述信息进行解析,获得所述目标工作流对应的有向无环图DAG,所述DAG包括至少一个节点以及所述节点之间的路径,所述节点与所述工作流描述信息中的所述算子一一对应;
根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果。
可选地,所述处理器810在根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果时,具体用于:
获取第一参数,并将所述第一参数作为所述根节点的输入参数;
从所述根节点开始,依次将各个所述节点作为目标节点,并执行所述目标节点中的步骤,获得所述目标节点对应的运行结果;
根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果。
可选地,所述处理器810在根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果时,具体用于:
在所述目标节点运行成功,且所述目标节点不存在后继节点的情况下,将所述目标节点对应的运行结果作为所述目标工作流的运行结果;
在所述目标节点运行成功,且所述目标节点存在后继节点的情况下,根据所述目标节点的后继节点的运行结果,获得所述目标工作流的运行结果。
可选地,所述处理器810还用于:
在所述目标节点的后继节点的状态为空的情况下,将所述后继节点的状态设置为等待参数状态,并将所述目标节点对应的运行结果作为所述后继节点的输入参数存入所述后继节点的状态;
在所述目标节点中的步骤开始执行的情况下,将所述目标节点的状态设置为运行状态;
在所述目标节点中的步骤未开始执行的情况下,将所述目标节点的状态设置为等待状态;
在所述目标节点运行失败的情况下,将所述目标节点的状态设置为错误状态,并对所述节点中已完成运行的第一节点执行回滚操作。
可选地,所述处理器810在对所述节点中已完成运行的第一节点执行回滚操作时,具体用于:
在所述第一节点无后继节点,或者,所述第一节点有后继节点且所述后继节点已报错或已完成回滚的情况下,对所述第一节点进行回滚操作,直至每一所述第一节点均完成所述回滚操作。
在此需要说明的是,本发明实施例提供的上述处理设备,能够实现上述的工作流处理方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
本发明另一实施例的一种处理设备,如图9所示,包括收发器910、处理器900、存储器920及存储在所述存储器920上并可在所述处理器900上运行的程序或指令;所述处理器900执行所述程序或指令时实现上述的工作流处理方法。
所述收发器910,用于在处理器900的控制下接收和发送数据。
其中,在图9中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器900代表的一个或多个处理器和存储器920代表的存储器的各种电路链接在一起。总线架构还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发器910可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的处理设备,用户接口930还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器900负责管理总线架构和通常的处理,存储器920可以存储处理器900在执行操作时所使用的数据。
本发明实施例的一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的工作流处理方法中的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
进一步需要说明的是,此说明书中所描述的终端包括但不限于智能手机、平板电脑等,且所描述的许多功能部件都被称为模块,以便更加特别地强调其实现方式的独立性。
本发明实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于***或网络上。
在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
上述范例性实施例是参考该些附图来描述的,许多不同的形式和实施例是可行而不偏离本发明精神及教示,因此,本发明不应被建构成为在此所提出范例性实施例的限制。更确切地说,这些范例性实施例被提供以使得本发明会是完善又完整,且会将本发明范围传达给那些熟知此项技术的人士。在该些图式中,组件尺寸及相对尺寸也许基于清晰起见而被夸大。在此所使用的术语只是基于描述特定范例性实施例目的,并无意成为限制用。如在此所使用地,除非该内文清楚地另有所指,否则该单数形式“一”、“一个”和“该”是意欲将该些多个形式也纳入。会进一步了解到该些术语“包含”及/或“包括”在使用于本说明书时,表示所述特征、整数、步骤、操作、构件及/或组件的存在,但不排除一或更多其它特征、整数、步骤、操作、构件、组件及/或其族群的存在或增加。除非另有所示,陈述时,一值范围包含该范围的上下限及其间的任何子范围。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种工作流处理方法,其特征在于,包括:
获取目标工作流对应的工作流描述信息,所述工作流描述信息包括多个算子,所述算子应用于微服务场景,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
对所述工作流描述信息进行处理,获得所述目标工作流的运行结果;
其中,所述算子包括原子算子,所述原子算子包括一个所述步骤,所述算子还包括以下至少一项:
串行算子,包括至少两个所述原子算子,所述串行算子中的各个所述原子算子之间存在依赖关系;
并行算子,包括至少两个所述原子算子,所述并行算子中的各个所述原子算子之间无依赖关系;
子工作流算子,所述子工作流算子是根据所述子工作流算子的前驱算子的动态运行结果动态创建出的算子,且所述子工作流算子包含至少两个嵌套子流程,所述子工作流算子的输入参数为所述子工作流算子的前驱算子的动态运行结果;
其中,所述对所述工作流描述信息进行处理,获得所述目标工作流的运行结果,包括:
对所述工作流描述信息进行解析,获得所述目标工作流对应的有向无环图DAG,所述DAG包括至少一个节点以及所述节点之间的路径,所述节点与所述工作流描述信息中的所述算子一一对应;
根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果。
2.根据权利要求1所述的方法,其特征在于,所述步骤的运行模式包括以下至少一项:
同步调用模式;
异步调用模式;
消息调用模式。
3.根据权利要求1所述的方法,其特征在于,所述根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果,包括:
获取第一参数,并将所述第一参数作为所述根节点的输入参数;
从所述根节点开始,依次将各个所述节点作为目标节点,并执行所述目标节点中的步骤,获得所述目标节点对应的运行结果;
根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标节点对应的运行结果,获得所述目标工作流的运行结果,包括以下至少一项:
在所述目标节点运行成功,且所述目标节点不存在后继节点的情况下,将所述目标节点对应的运行结果作为所述目标工作流的运行结果;
在所述目标节点运行成功,且所述目标节点存在后继节点的情况下,根据所述目标节点的后继节点的运行结果,获得所述目标工作流的运行结果。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括以下至少一项:
在所述目标节点的后继节点的状态为空的情况下,将所述后继节点的状态设置为等待参数状态,并将所述目标节点对应的运行结果作为所述后继节点的输入参数存入所述后继节点的状态;
在所述目标节点中的步骤开始执行的情况下,将所述目标节点的状态设置为运行状态;
在所述目标节点中的步骤未开始执行的情况下,将所述目标节点的状态设置为等待状态;
在所述目标节点运行失败的情况下,将所述目标节点的状态设置为错误状态,并对所述节点中已完成运行的第一节点执行回滚操作。
6.根据权利要求5所述的方法,其特征在于,对所述节点中已完成运行的第一节点执行回滚操作,包括:
在所述第一节点无后继节点,或者,所述第一节点有后继节点且所述后继节点已报错或已完成回滚的情况下,对所述第一节点进行回滚操作,直至每一所述第一节点均完成所述回滚操作。
7.一种工作流处理装置,其特征在于,包括:
获取模块,用于获取目标工作流对应的工作流描述信息,所述工作流描述信息包括多个算子,所述算子应用于微服务场景,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
处理模块,用于对所述工作流描述信息进行处理,获得所述目标工作流的运行结果;
其中,所述算子包括原子算子,所述原子算子包括一个所述步骤,所述算子还包括以下至少一项:
串行算子,包括至少两个所述原子算子,所述串行算子中的各个所述原子算子之间存在依赖关系;
并行算子,包括至少两个所述原子算子,所述并行算子中的各个所述原子算子之间无依赖关系;
子工作流算子,所述子工作流算子是根据所述子工作流算子的前驱算子的动态运行结果动态创建出的算子,且所述子工作流算子包含至少两个嵌套子流程,所述子工作流算子的输入参数为所述子工作流算子的前驱算子的动态运行结果;
其中,所述处理模块包括:
解析子模块,用于对所述工作流描述信息进行解析,获得所述目标工作流对应的有向无环图DAG,所述DAG包括至少一个节点以及所述节点之间的路径,所述节点与所述工作流描述信息中的所述算子一一对应;
运行子模块,用于根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果。
8.一种处理设备,其特征在于,包括:收发机和处理器;所述处理器用于:
获取目标工作流对应的工作流描述信息,所述工作流描述信息包括多个算子,所述算子应用于微服务场景,所述算子包括至少一个步骤,所述步骤用于描述所述目标工作流的业务逻辑;
对所述工作流描述信息进行处理,获得所述目标工作流的运行结果;
其中,所述算子包括原子算子,所述原子算子包括一个所述步骤,所述算子还包括以下至少一项:
串行算子,包括至少两个所述原子算子,所述串行算子中的各个所述原子算子之间存在依赖关系;
并行算子,包括至少两个所述原子算子,所述并行算子中的各个所述原子算子之间无依赖关系;
子工作流算子,所述子工作流算子是根据所述子工作流算子的前驱算子的动态运行结果动态创建出的算子,且所述子工作流算子包含至少两个嵌套子流程,所述子工作流算子的输入参数为所述子工作流算子的前驱算子的动态运行结果;
其中,所述处理器在对所述工作流描述信息进行处理,获得所述目标工作流的运行结果时,具体用于:
对所述工作流描述信息进行解析,获得所述目标工作流对应的有向无环图DAG,所述DAG包括至少一个节点以及所述节点之间的路径,所述节点与所述工作流描述信息中的所述算子一一对应;
根据所述DAG的结构,从所述至少一个节点中的根节点开始,依次运行各个所述节点,获得所述目标工作流的运行结果。
9.一种处理设备,包括:收发器、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令;其特征在于,所述处理器执行所述程序或指令时实现如权利要求1-6任一项所述的工作流处理方法。
10.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1-6任一项所述的工作流处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311827916.XA CN117472553B (zh) | 2023-12-28 | 2023-12-28 | 一种工作流处理方法、装置、处理设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311827916.XA CN117472553B (zh) | 2023-12-28 | 2023-12-28 | 一种工作流处理方法、装置、处理设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117472553A CN117472553A (zh) | 2024-01-30 |
CN117472553B true CN117472553B (zh) | 2024-05-03 |
Family
ID=89627840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311827916.XA Active CN117472553B (zh) | 2023-12-28 | 2023-12-28 | 一种工作流处理方法、装置、处理设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472553B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563586A (zh) * | 2019-02-14 | 2020-08-21 | 上海寒武纪信息科技有限公司 | 一种神经网络模型的拆分方法及相关产品 |
CN111767078A (zh) * | 2019-04-02 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 数据运行方法、装置和相关产品 |
CN111782371A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 基于dag交互的流式计算方法与装置 |
CN112685154A (zh) * | 2020-12-25 | 2021-04-20 | 北京有竹居网络技术有限公司 | 任务流引擎的数据处理方法、任务流引擎、设备和介质 |
CN113326131A (zh) * | 2021-06-03 | 2021-08-31 | 深信服科技股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN114564547A (zh) * | 2022-02-10 | 2022-05-31 | 阿里云计算有限公司 | 数据处理方法、装置、设备和存储介质 |
CN114860820A (zh) * | 2021-01-20 | 2022-08-05 | 华为技术服务有限公司 | 数据仓库技术业务的优化方法、装置及电子设备 |
CN116643854A (zh) * | 2022-02-16 | 2023-08-25 | 中移物联网有限公司 | 一种服务编排方法、装置、流程控制器及任务处理器 |
CN117251260A (zh) * | 2022-09-29 | 2023-12-19 | 北京九章云极科技有限公司 | 一种数据处理方法及*** |
-
2023
- 2023-12-28 CN CN202311827916.XA patent/CN117472553B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563586A (zh) * | 2019-02-14 | 2020-08-21 | 上海寒武纪信息科技有限公司 | 一种神经网络模型的拆分方法及相关产品 |
CN111767078A (zh) * | 2019-04-02 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 数据运行方法、装置和相关产品 |
CN111782371A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 基于dag交互的流式计算方法与装置 |
CN112685154A (zh) * | 2020-12-25 | 2021-04-20 | 北京有竹居网络技术有限公司 | 任务流引擎的数据处理方法、任务流引擎、设备和介质 |
CN114860820A (zh) * | 2021-01-20 | 2022-08-05 | 华为技术服务有限公司 | 数据仓库技术业务的优化方法、装置及电子设备 |
CN113326131A (zh) * | 2021-06-03 | 2021-08-31 | 深信服科技股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN114564547A (zh) * | 2022-02-10 | 2022-05-31 | 阿里云计算有限公司 | 数据处理方法、装置、设备和存储介质 |
CN116643854A (zh) * | 2022-02-16 | 2023-08-25 | 中移物联网有限公司 | 一种服务编排方法、装置、流程控制器及任务处理器 |
CN117251260A (zh) * | 2022-09-29 | 2023-12-19 | 北京九章云极科技有限公司 | 一种数据处理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN117472553A (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
US11948021B2 (en) | Method for inter-core communication, processor, inter-core communication system and computer readable storage medium | |
CN112787999B (zh) | 跨链调用方法、装置、***与计算机可读存储介质 | |
US11656902B2 (en) | Distributed container image construction scheduling system and method | |
CN115115329A (zh) | 一种面向智能生产线的制造中间件及云制造架构 | |
CN113961332A (zh) | 一种工作流引擎实现的方法、装置、电子设备及存储介质 | |
CN112596801B (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN114756357A (zh) | 一种基于jvm的非阻塞分布式计划任务调度方法 | |
CN117472553B (zh) | 一种工作流处理方法、装置、处理设备及可读存储介质 | |
US20210149709A1 (en) | Method and apparatus for processing transaction | |
CN113360386A (zh) | 交换芯片驱动测试方法、装置、电子设备和存储介质 | |
CN112765246A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN112395339A (zh) | ***间数据准入校验方法、装置、计算机设备和存储介质 | |
US7885292B2 (en) | Method, system, and computer program product for data exchange | |
CN111459492A (zh) | Dubbo服务接口兼容性检测方法、装置、存储介质及设备 | |
Ezenwoye et al. | A Proxy-Based Approach to Enhancing the Autonomic Behavior in Composite Services. | |
CN115829715A (zh) | 一种银行业交易调度中台控制方法和银行业交易调度中台 | |
Hendriks et al. | A systematic approach for interfacing component-based software with an active automata learning tool | |
Wang et al. | A state synchronization mechanism for orchestrated processes | |
Blanchet et al. | Supporting adaptive web-service orchestration with an agent conversation framework | |
Liu et al. | Analysis of web services composition and substitution via CCS | |
CN114691309A (zh) | 一种批量业务处理***、方法及装置 | |
CN117033033B (zh) | 服务总线中公共服务高效配置和交互的方法 | |
CN114356643B (zh) | 一种遥感卫星处理***中自动发现任务失败和恢复方法 | |
CN110191141B (zh) | 服务调用信息处理方法、装置及计算机*** |
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 |