[go: up one dir, main page]

CN1728165A - Multitask coordinated dispatching method in use for workflow engine - Google Patents

Multitask coordinated dispatching method in use for workflow engine Download PDF

Info

Publication number
CN1728165A
CN1728165A CNA2005100428886A CN200510042888A CN1728165A CN 1728165 A CN1728165 A CN 1728165A CN A2005100428886 A CNA2005100428886 A CN A2005100428886A CN 200510042888 A CN200510042888 A CN 200510042888A CN 1728165 A CN1728165 A CN 1728165A
Authority
CN
China
Prior art keywords
task
state
forwarding
setstatus
client
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.)
Pending
Application number
CNA2005100428886A
Other languages
Chinese (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.)
XI'AN LONGZHOU TECHNOLOGY Co Ltd
Xian Jiaotong University
Original Assignee
XI'AN LONGZHOU TECHNOLOGY Co Ltd
Xian Jiaotong University
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 XI'AN LONGZHOU TECHNOLOGY Co Ltd, Xian Jiaotong University filed Critical XI'AN LONGZHOU TECHNOLOGY Co Ltd
Priority to CNA2005100428886A priority Critical patent/CN1728165A/en
Publication of CN1728165A publication Critical patent/CN1728165A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种用于工作流引擎的多任务协同调度方法,构建多任务协同方法的计算模型——多步任务协同网,这是一个四元组N=(C,T;W,D)按照充分必要条件构造,多任务调度包括启动案例、终止案例、客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环八个调度方法。在多任务调度之前,案例和所有的工作、任务、转发、循环都被初始化为就绪状态。启动案例是第一个被执行调度,客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环是根据多步任务协同网的流向,包括正向和逆向,终止案例调度是根据工作和转发的状态由系统自动调度。本发明实现多步任务的正向和逆向调度。The invention discloses a multi-task cooperative scheduling method for a workflow engine, and constructs a calculation model of the multi-task collaborative method—a multi-step task collaborative network, which is a quadruple N=(C, T; W, D ) is structured according to sufficient and necessary conditions, and multi-task scheduling includes eight scheduling methods: start case, terminate case, client sign-off task, client return task, multi-step task processing, multi-step task re-run, start cycle and terminate cycle. Cases and all jobs, tasks, forwards, loops are initialized to a ready state before multitasking is scheduled. The start-up case is the first to be executed and scheduled. The client signs the task, the client returns the task, the multi-step task processing, the multi-step task re-run, the start cycle and the termination cycle are based on the flow direction of the multi-step task collaboration network, including forward And conversely, the termination case scheduling is automatically scheduled by the system according to the status of work and forwarding. The invention realizes forward and reverse scheduling of multi-step tasks.

Description

Multitask cooperative scheduling method for workflow engine
Technical Field
The invention relates to a workflow and business process analysis and modeling technology, in particular to a multitask cooperative scheduling method for a workflow engine.
Prior Art
The main objective of the workflow engine is to implement the scheduling and execution of multiple tasks in the workflow, and the performance of the workflow engine mainly depends on the scheduling method of multiple tasks, so the scheduling method of multiple tasks in the workflow engine is increasingly regarded by academia and industry. The Petri network technology is one of the most commonly used methods in workflow engine multitask scheduling, and a workflow network (WF-net) scheduling method proposed by Van der Aalst on the Petri network basis is the most famous. Knowledge about Petri nets and workflow nets can be referred to in the book "workflow management-model, method and System" (Wilvan der Aalst & Kees vanHee, ed. King of Miner, Renship, etc., Qinghua university Press, 2.2004, ISBN 7-302-.
Although the Petri network-based workflow network technology achieves certain results in the application of workflow engine multitask scheduling, the following problems exist:
1. the workflow network is based on a Petri network formed by triples (P, T; F), conditions are represented by a library (P), tasks are represented by transitions (T), and the conditions and the transitions are connected by flow relations (F). This method is suitable for scheduling situations where each task is only handled by one client (i.e. each task is completed on one client at a time), whereas for situations where a task is handled by multiple clients simultaneously (i.e. each task is completed in stages on multiple clients), the scheduling method fails to achieve normal scheduling because it fails to express the cooperative relationship between multiple clients and multiple tasks.
2. In multi-task scheduling of workflows, reverse scheduling situations often occur where an executed task is rolled back or re-executed. In a Petri network-based workflow network, a library (P) represents a condition, a transition (T) represents a task, and the task can be scheduled only in a forward direction but not in a reverse direction. Therefore, this scheduling method is less practical.
Disclosure of Invention
The invention aims to realize the cooperation between the multi-step tasks and the multiple clients and realize the forward and reverse scheduling of the multi-step tasks, and has strong practicability and flexible scheduling.
The technical scheme of the invention is realized as follows:
1. a multitask cooperative scheduling method for a workflow engine is characterized by comprising the following steps: the method comprises the following steps:
(1) constructing a computing model of a multi-task cooperative method, namely a multi-step task cooperative network, wherein a four-tuple N ═ C, T; W, D) is constructed according to the following sufficient requirements:
1°C≠φ
2°T≠φ
3°CI T=φ
4°W*C×T
5°D*T×C
6°dom(W)Ycod(W)=CY T
wherein, <math> <mrow> <mi>dom</mi> <mrow> <mo>(</mo> <mi>W</mi> <mo>)</mo> </mrow> <mo>=</mo> <mo>{</mo> <mi>x</mi> <mo>|</mo> <mo>&Exists;</mo> <mi>y</mi> <mo>:</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>&Element;</mo> <mi>W</mi> <mo>}</mo> <mo>,</mo> <mi>cod</mi> <mrow> <mo>(</mo> <mi>W</mi> <mo>)</mo> </mrow> <mo>=</mo> <mo>{</mo> <mi>y</mi> <mo>|</mo> <mo>&Exists;</mo> <mi>x</mi> <mo>:</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>&Element;</mo> <mi>W</mi> <mo>}</mo> <mo>:</mo> </mrow> </math>
in a quad, C is a limited set of clients; t is a limited set of tasks; w is a collection of jobs representing the division of work by the client in a task; d is a forwarding set, representing the direction of flow of the task.
(2) Constructing a dynamic structure of the multi-step task cooperative network, namely a multi-step task cooperative network system, wherein an octave sigma ═ (C, T; W, D; W0, PD, G, L) is constructed according to the following conditions:
1 DEG N ═ C, T; W, D) is a multi-step mission collaborative network.
2°W0W is the set of initial jobs. Initiating work refers to work that can be handled without relying on any task client.
3°PDIs the set of forwarding conditions defined on D. The forwarding condition refers to a condition on which forwarding depends.
4 ° G is a set of packets defined on C. If there is a dependency between the work that the client is about to handle and the tasks that have been completed, the work and the forwarding that delivers the tasks need to be divided into a set, called a packet.
5 L.su.W.su.D, is a cyclic set. A loop refers to a circular path that can be executed repeatedly and only the last execution information is retained.
(3) And constructing state sets required by multitask scheduling, wherein the state sets comprise five state sets:
state set for 1 ° case: si ═ Sir,Siw,Swf}. The case is one-time execution of the multi-step task collaborative network, and one multi-step task collaborative network can be executed for multiple times, wherein each execution corresponds to a different case. Wherein,
Sirready state: the case waits for the status of execution,
Siwin the office state: the state in which the case is executing,
Sifand (4) completion state: state where the case has ended.
Set of states for 2 ° operation: sw ═ { Swr,Sww,Swn,Swf}. Wherein,
Swrready state: a state in which the job waits for the client to handle,
Swwin the office state: the state in which work is being transacted by the client,
Swnnegative state: the work can not be handled by the client because the condition is not satisfied,
Swfand (4) completion state: a state in which the work has ended.
State set of 3 ° service: st ═ Str,Stw,Stn,Stf}. Wherein,
Strready state: the task waits for the status of the client to transact,
Stwin the office state: the state in which the task is being handled by the client,
Stnnegative state: the task is in a state of being unable to be handled by the client because the condition is not satisfied,
Stfand (4) completion state: a state in which the task has ended.
4 ° forwarded state set: sd ═ Sdr,Sdw,Sdn,Sdf}. Wherein,
Sdrready state: forwarding the state waiting to be performed,
Sdwa state to be signed: forwarding the state waiting to be signed in by the client,
Sdnnegative state: forwarding a state that cannot be signed by the client because the condition is not satisfied,
Sdfand (4) completion state: the forwarding has ended.
Set of states for a 5 ° cycle: sl ═ Sl { Slr,Slw,Sdf}. Wherein,
Slrready state: wait cyclicallyThe state of being executed is such that,
Slwthe working state is as follows: the state in which the loop is being executed,
Slfand (4) completion state: a state in which the loop has ended.
(4) The multi-task scheduling comprises eight scheduling methods, namely a start case, a stop case, a client sign-on task, a client return task, multi-step task handling, multi-step task reprocessing, a start cycle and a stop cycle. Prior to multitasking, cases and all work, tasks, forwarding, loops are initialized to the ready state. The starting case is the first executed scheduling, the client signs up the task, the client returns the task, the multi-step task is processed, the multi-step task is re-processed, the starting cycle and the terminating cycle are scheduled by the client according to the flow direction of the multi-step task collaborative network, including the forward direction and the reverse direction, and the scheduling of the terminating case is automatically scheduled by the system according to the working and forwarding states.
Order:
setstatus (x) indicates the state of a setting object x, x being a case, task, job, forward, or loop;
GetStatus (x) represents the state of an object x, wherein x is a case, a task, work, forwarding or circulation;
setclient (x) represents the client to which the set object belongs, and x is work or forwarding;
GetClient (x) represents the client to which the obtained object belongs, and x is work or forwarding;
precondition (x) represents condition calculation, the result is True or False, and x is forwarding;
count (x) represents the number of objects in a collection, x being a collection.
The scheduling method of the multi-step task can be expressed as follows:
1 deg. start-up case.
Let w0As a casei any initial work of, W0Is w0The scheduling method of the start case is as follows:
the status of the case and each of the initial jobs is set to the in-office status. Namely, it is
SetStatus(1):=Siw
SetStatus(w0):=Sww,*w0∈W0
2 ° end case
Let W be any work of case i, W be the set of W, D be any forwarding of case i, and D be the set of D, then the scheduling method of the terminating case is:
the first step is as follows: if there are still jobs to be done or tasks to be signed in a case, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>S</mi> <msub> <mi>w</mi> <mi>w</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> </mrow> </math> Or <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>d</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>S</mi> <msub> <mi>d</mi> <mi>w</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>d</mi> <mo>&Element;</mo> <mi>D</mi> <mo>,</mo> </mrow> </math> The case can not be terminated and the process is ended; otherwise, the second step is carried out.
The second step is that: setting the state of the case to be a complete state, namely SetStatus (i): is Si ═ Sif
And 3 degrees of client machines sign the tasks.
Let c be any client of the case order, gcIs any packet defined on c, d packets gcD is a set of D,'t is a task to which D belongs,dis any forwarding in the task't,Dis thatdSet of (2)'W is any work in task't, 'W is a set of' W, W is a grouping gcW is the set of W, t is the task to which W belongs,wis any one of the jobs in the task t,Wis thatwD ' is any forwarding in task t, D ' is a set of D '. The scheduling method of the client c to sign up the task is as follows:
the first step is as follows: if g iscIs in a pending or negative state, i.e., GetStatus (d) e { Sdw,SdnThe * D belongs to D, then the second step is carried out; otherwise, ending;
the second step is that: if g iscIs in a negative state, i.e. getstatus (d) ═ Sdn* D belongs to D, then go to the third step; otherwise, turning to the fourth step;
the third step: g is prepared fromcIs set to a negative state, namely setstatus (w): swn* W ∈ W; for each w, if it belongs to each work of task twAre all in a negative state, i.e. GetStatus: (w)=Swn,* wWThen task t and each forwarding d' of task t are set to a negative state, i.e. setstatus (t): st-nSetStatus(d′):=Sdn* D' is equal to D, and ends; otherwise, ending.
The fourth step: for gcIf it is in the ready state, set the client of d to c, i.e. setclient (d): if c, turning to the sixth step; otherwise, set the client of d to null, i.e., setclient (d): null, and go to the fifth step;
the fifth step: if the task't to which d belongs is in a negative state, namely GetStatus ('t): st-nThen task't and each of its jobs' w and each of its forwardingsdSet to the done state, SetStatus ('t): st-f,SetStatus(′w):=Swf,*′w∈′W,SetStatus( d):=Sdf,* dD
And a sixth step: g is prepared fromcSet to completion status, set each work w to completion status, and set the client of each work w to c, setstatus (d): sd ═ Sdf,*d∈D,SetClient(w):=c,*w∈W,SetStatus(w):=Sww* W ∈ W. If g iscThe forwarding d is still in the pending or negative state, i.e. GetStatus (d) epsilon { Sdw,SdnFourthly, * D belongs to D, then the fourth step is carried out; otherwise, turning to the seventh step.
The seventh step: if task t is ready, i.e. GetStatus (t) StrThen task t is set to be in the office state, i.e., setstatus (t): st-w
Eighth step: client c transacts gcAny of which works w.
The ninth step: if the work w is done, the work w is set to a completion state, namely setstatus (w): swf. If g iscStill in the on-hold state, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>S</mi> <msub> <mi>w</mi> <mi>w</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>,</mo> </mrow> </math> Rotating to the eighth step; otherwise, ending.
The 4 client returns to the task.
Let c be any client of the case order, gcIs any packet defined on c, d is a packet gcD is a set of D,'t is a task to which D belongs,dis any forwarding in the task't,Dis thatdIs any work in task't, ' W is a set of ' W, W is a packet gcW is the set of W, t is the task to which W belongs, wis any one of the jobs in the task t,Wis thatwD ' is any forwarding in task t, and D ' is a set of D ', then the scheduling method for client c to return to the task is as follows:
the first step is as follows: if g iscIs in an on state, i.e. GetStatus (w) ═ Sww* W belongs to W, then the second step is carried out; otherwise, ending.
The second step is that: g is prepared fromcIs set to the ready state, setstatus (w): swr* W ∈ W. For gcIf w belongs to each work of task twAre all in the ready state, i.e., GetStatus: (w)=Swr,* wWThen task t is set to the ready state, setstatus (t): st-r
The third step: for gcIf the client is c, i.e., getclient (d) ═ c, then the client of d is set to null, and d is set to the to-be-signed state, i.e., setclient (d): null, setstatus (d): sd ═ SdwThen, turning to the fifth step; otherwise, set d to a negative state, i.e., setstatus (d): sd ═ SdnAnd then turning to the fourth step.
The fourth step: if each forwarding of the task't to which d belongsdAre all in the negative state, i.e. GetStatus (d) ═ Sdn,* dDAnd each client working on ' W for task't is null, i.e. GetClient (' W) ═ null, * ' W ∈ ' W, then task't is set to the negative state, i.e. SetStatus ('t): st-n. And (6) ending.
5 deg. multi-step task handling.
Let t be any task in the case, W be any work of task t, W be the set of W, c be the client responsible for handling work W, gcIs any packet defined on client c, and'd is packet gcIs a set of 'D,'t is a work to which 'D belongs,' W is any work of task't,' W is a set of 'W'dIs any forward of't'DIs'dThe set of (a) and (b),wis a packet gcIn the above-mentioned manner, any one of the operations,Wis thatwD is any forwarding of the task t, D is the set of D, c' is the client to which D belongs, gc'is any packet defined on client c',dis a packet gcEither of the above-mentioned' forwarding is carried out,Dis thatdW' is a packet gc'any work in W', W 'is a set of W', t 'is a task to which W' belongs,w'is any one of the jobs in the task t',W' isw' D ' is any forwarding of t ' and D ' is a set of D '. The scheduling method of the task t handling process is as follows:
the first step is as follows: if every work w of task t is in the complete or negative state, i.e. GetStatus (w) e { Swf,SWn}, If W belongs to W, then switching to the second step; otherwise, ending.
The second step is that: if every task w of task t is in negative state, i.e. getstatus (w) Swnw∈W,
Set task t and each forwarding d of task t to a negative state, setstatus (t): st-n SetStatus(d):=Sdn* D ∈ D, then go to the seventh step; otherwise, the third step is carried out.
The third step: for any w in t, if w is in a negative state, then w is set to a complete state, the client of w is set to null, and w will be in the same group g as wcEach of which operateswAnd each forwarding'd is set to a completion state, setstatus (w): swf,SetClient(w):=null,SetStatus( w)=Swf,* wW,SetStatus(′d)=Sdf* 'D ∈' D, then go to the fourth step; otherwise, turning to the fifth step.
The fourth step: for any'd, if the task't to which the'd belongs is in a negative state, i.e. GetStatus ('t) ═ StnThen each of task't and task't is forwarded 'dSet to the done state, SetStatus ('t): st-f,SetStatus(′ d):=Sdf,*′ d∈′ D
The fifth step: if task t has work w in negative state, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>S</mi> <msub> <mi>w</mi> <mi>n</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>,</mo> </mrow> </math> Turning to the third step; otherwise, the step six is executed.
And a sixth step: setting task t to completion state, i.e. <math> <mrow> <mi>SetStatud</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>:</mo> <mo>=</mo> <msub> <mi>St</mi> <mi>f</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>.</mo> </mrow> </math> Calculating a forwarding condition of each forwarding d of the task t, and if the result is True, namely precondition (d) True, setting the forwarding d to a to-be-signed state, namely setstatus (d): sd ═ Sdw(ii) a Otherwise forward d is set to negative state, i.e. setstatus (d): sd ═ Sdn
The seventh step: for any d, if it belongs to the group gcAll forwarding in `dIn the negative state, i.e. GetStatus: (d)=Sdn,* dDThen group g will be groupedcAll work w ' in ' is set to negative state, i.e. SetStatus (w '): is SWn,*w′∈W′。
Eighth step: for any one w ', all jobs in task t' if it belongs tow' in a negative state, i.e. GetStatusS ((R))w′)=Swn,* w′∈ W', then all forwarding d ' of task t ' and task t ' are set to negative state, i.e. SetStatus (t '): st-n SetStatus(d′)=Sdn,*d′∈D′。
6 degrees of multi-step task reprocessing.
Let t be any task in the case, W be any work of task t, W be the set of W, c be the client responsible for handling work W, gcIs any packet defined on client c, and'd is packet gcIs a set of 'D,'t is a work to which 'D belongs,' W is any work of task't,' W is a set of 'W'dIs any forward of't'DIs'dThe set of (a) and (b),wis a packet gcIn the above-mentioned manner, any one of the operations,Wis thatwD is any forwarding of the task t, D is the set of D, c' is the client to which D belongs, gc'is any packet defined on client c',dis a packet gcEither of the above-mentioned' forwarding is carried out,Dis thatdW' is a packet gc'any work in W', W 'is a set of W', t 'is a task to which W' belongs,w'is any one of the jobs in the task t',W' isw' D ' is any forwarding of t ' and D ' is a set of D '. The scheduling method for client c to redo task t is as follows:
the first step is as follows: if task t is in the on-hold state, i.e., GetStatus (t) StwOr task t is in completion and task t is not forwarded, i.e. getstatus (t) Stf &Count (d) 0, or task t is in complete state and each forwarding d of task t is in pending or negative state, i.e. getstatus (t) Stf & GetStatus(d)∈{Sdw,SdnThe * D belongs to D, then the second step is carried out; otherwise, ending.
The second step is that: for any d, if it belongs to the group gc' Each of the forwardingdAre all in a negative state, i.e. GetStatus: (d)=Sdn,* dDThen group g will be groupedcAll jobs w ' in ' are set to the ready state, SetStatus (w '): swr* W 'is belonged to W', and then the third step is carried out; otherwise, turning to the fourth step.
The third step: for any w ', if the task t' to which it belongs is in a negative state, each forwarding d 'of the task t' and the task t 'is set to a ready state, i.e., SetStatus (t'): st-r SetStatus(d′)=Sdr,*d′∈D′。
The fourth step: setting the task t and the work w to be reworked by the task t as an on-office state, and setting each forwarding d of the task t as a ready state, namely SetStatus (w): sww,SetStatus(t):=Stw,SetStatus(d):=Sdr* D ∈ D. For any d, if it belongs to the group gcWith work W' in the negative state, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mo>&prime;</mo> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>Sw</mi> <mi>n</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <msup> <mi>w</mi> <mo>&prime;</mo> </msup> <mo>&Element;</mo> <msup> <mi>W</mi> <mo>&prime;</mo> </msup> <mo>,</mo> </mrow> </math> Will group gc' each work w ' in the set is set to the ready state, SetStatus (w '): swr,*w′∈W′。
The fifth step: if task t has work w in completion and the client of w is null, i.e. GetStatus ( w ) = Sw f & <math> <mrow> <mi>GetClient</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>null</mi> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>,</mo> </mrow> </math> Put w to the negative state, setstatus (w): swn
And a sixth step: for any one w in t, if w belongs to a group gcIs in a negative state, i.e. GetStatus (b) ((b))w)=Swn,* wWThen g iscSet to a negative state, SetStatus ('d): sd ═ Sdn,*′d∈′D。
The seventh step: for any'd, if its task't is in completion and the client of each work ' w of the task't is null, i.e. GetStatus ('t) ═ Stf &GetClient (' W) ═ null, * ' W ∈ ' W, then each job ' W of task't and task't is set to a negative state, SetStatus ('t): st-n SetStatus(′w):=Swn,*′w∈′W。
Eighth step: client c reworks job w.
The ninth step: if the work w is finished, setting the work w to be in a finished state, namely SetStatus (w): swfAnd then, the process is ended. Otherwise, the step eight is executed.
The cycle is started at 7 deg..
Let L be any cycle of case i, and w be any work on the cycle path, then the scheduling method of the start cycle is as follows:
if the work w belongs to the loop L and the work w is in the on-Do state and the loop L is in the ready state, i.e. w belongs to L&GetStatus(w)=Sww&GetStatus(L)=SlrThen set cycle L to run state, setstatus (L): sl ═ Slw(ii) a Otherwise, ending.
The cycle is terminated at 8 °.
Let L be any cycle of case i, and w be any work on the cycle path, then the scheduling method for terminating the cycle is as follows:
if the work w belongs to the loop L, the work w is in the on state and the loop L is in the running state, namely w belongs to the L&GetStatus(w)=Sww&GetStatus(L)=SlwThen set cycle L to run state, setstatus (L): sl ═ Slf(ii) a Otherwise, ending.
The invention realizes a cooperation method between the multi-step tasks and the clients and a forward and reverse scheduling method of the multi-step tasks when the tasks are completed on the clients in stages in the multi-task scheduling of the workflow, wherein the scheduling method comprises a starting case, a terminating case, a client signing task, a client returning task, a multi-step task handling, a multi-step task reprocessing, a starting cycle and a terminating cycle. Through the actual test of the workflow engine software based on the scheduling method, the scheduling method completely meets the requirements, and the aim of the invention is well fulfilled.
Drawings
FIG. 1 is a flow chart of the case start scheduling of the present invention
FIG. 2 is a flow chart of the case termination scheduling of the present invention
FIG. 3 is a schematic diagram of client sign-on and return tasks according to the present invention
FIG. 4 is a flow chart of a client sign-on task of the present invention
FIG. 5 is a flow chart of the client return task of the present invention
FIG. 6 is a schematic diagram of task handling and re-handling according to the present invention
FIG. 7 is a task processing flow diagram of the present invention
FIG. 8 is a task re-processing flow chart of the present invention
FIG. 9 is a flow chart of a start-up cycle of the present invention
FIG. 10 is a flow chart of the termination cycle of the present invention
FIG. 11 is a schematic view of an embodiment of the present invention
Detailed Description
As shown with reference to figure 1 of the drawings,
let w0For any initial job of case i, W0Is w0The scheduling method of the start case is as follows:
the status of the case and each of the initial jobs is set to the in-office status. Namely, it is
SetStatus(i):=Siw
SetStatus(w0):=Sww,*w0∈W0
As shown with reference to figure 2 of the drawings,
let W be any work of case i, W be the set of W, D be any forwarding of case i, and D be the set of D, then the scheduling method of the terminating case is:
the first step is as follows: if there are still jobs to be done or tasks to be signed in a case, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>S</mi> <msub> <mi>w</mi> <mi>w</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> </mrow> </math> Or <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>d</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>Sd</mi> <mi>w</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>d</mi> <mo>&Element;</mo> <mi>D</mi> <mo>,</mo> </mrow> </math> The case can not be terminated and the process is ended; otherwise, the second step is carried out.
The second step is that: setting the state of the case to be a complete state, namely SetStatus (i): is Si ═ Sif
As shown with reference to figure 3 of the drawings,
let c be any client in case i, gcIs any packet defined on c, d is a packet gcD is a set of't is the task to which D belongs, D is any forwarding in task't,Dis thatdIs any work in task't, ' W is a set of ' W, W is a packet gcW is a set of W, t is a task to which W belongs, W is any one of tasks t,Wis thatwD ' is any forwarding in task t, D ' is a set of D '.
As shown with reference to figure 4 of the drawings,
let c be any client in case i, gcIs any packet defined on c, d is a packet gcD is a set of't is the task to which it belongs, D is any forwarding in task't,Dis thatdIs any work in task't, ' W is a set of ' W, W is a packet gcW is the set of W, t is the task to which W belongs,wis any one of the jobs in the task t,Wis thatwD ' is any forwarding in task t, D ' is a set of D '. The scheduling method of the client c to sign up the task is as follows:
the first step is as follows: if g iscIs forwarded tod are all in the pending or negative state, i.e., GetStatus (d) e { Sdw,SdnThe * D belongs to D, then the second step is carried out; otherwise, ending;
the second step is that: if g iscIs in a negative state, i.e. getstatus (d) ═ Sdn* D belongs to D, then go to the third step; otherwise, turning to the fourth step;
the third step: g is prepared fromcIs set to a negative state, namely setstatus (w): swn* W ∈ W; for each w, if it belongs to each work of task twAre all in a negative state, i.e. GetStatus: (w)=Swn,* wWThen task t and each forwarding d' of task t are set to a negative state, i.e. setstatus (t): st-nSetStatus(d′):=Sdn* D 'is E.D', end; otherwise, ending.
The fourth step: for gcIf it is in the ready state, set the client of d to c, i.e. setclient (d): if c, turning to the sixth step; otherwise, set the client of d to null, i.e., setclient (d): null, and go to the fifth step;
the fifth step: if the task't to which d belongs is in a negative state, namely GetStatus ('t): st-nThen task't and each of its jobs' w and each of its forwardingsdSet to the done state, SetStatus ('t): st-f,SetStatus(′w):=Swf,*′w∈′W,SetStatus( d):=Sdf,* dD
And a sixth step: g is prepared fromcSet to completion status, set each work w to completion status, and set the client of each work w to c, setstatus (d): sd ═ Sdf,*d∈D,SetClient(w):=c,*w∈W,SetStatus(w):=Sww* W ∈ W. If g iscIn which the forwarding d is still pendingA sign-on or a-off state, i.e., GetStatus (d) e { SdwSdn }, * D ∈ D, then go to the fourth step; otherwise, turning to the seventh step.
The seventh step: if task t is ready, i.e. GetStatus (t) StrThen task t is set to be in the office state, i.e., setstatus (t): st-w
Eighth step: client c transacts gcAny of which works w.
The ninth step: if the work w is done, the work w is set to a completion state, namely setstatus (w): swf
If g iscStill in the on-hold state, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>Sw</mi> <mi>w</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>,</mo> </mrow> </math> Rotating to the eighth step; otherwise, ending.
As shown with reference to figure 5 of the drawings,
let c be any client in case i, gcIs any packet defined on c, d is a packet gcD is a set of D,'t is a task to which D belongs,dis any forwarding in the task't,Dis thatdIs any work in task't, ' W is a set of ' W, W is a packet gcW is the set of W, t is the task to which W belongs,wis any one of the jobs in the task t,Wis thatwD ' is any forwarding in task t, and D ' is a set of D ', then the scheduling method for client c to return to the task is as follows:
the first step is as follows: if g iscIs in an on state, i.e. GetStatus (w) ═ Sww* W belongs to W, then the second step is carried out; otherwise, ending.
The second step is that: g is prepared fromcIs set to the ready state, setstatus (w): swr* W ∈ W. For gcIf w belongs to each work of task twAre all in the ready state, i.e. GetStatus (w) ═ Swr,* wWThen task t is set to the ready state, setstatus (t): st-r
The third step: for gcIf the client is c, i.e., getclient (d) ═ c, then the client of d is set to null, and d is set to the to-be-signed state, i.e., setclient (d): null, setstatus (d): sd ═ SdwThen, turning to the fifth step; otherwise, set d to a negative state, i.e., setstatus (d): sd ═ SdnAnd then turning to the fourth step.
The fourth step: if each forwarding of the task't to which d belongsdAre all in a negative state, i.e. GetStatus: (d)=Sdn,*d∈ DAnd each client working on ' W for task't is null, i.e. GetClient (' W) ═ null, * ' W ∈ ' W, then task't is set to the negative state, i.e. SetStatus ('t): st-n. And (6) ending.
As shown with reference to figure 6 of the drawings,
let t be any task in the case, W be any work of task t, W be the set of W, c be the client responsible for handling work W, gcIs any packet defined on client c, and'd is packet gcIs a set of 'D,'t is a work to which 'D belongs,' W is any work of task't,' W is a set of 'W'dIs any forward of't'DIs'dThe set of (a) and (b),wis a packet gcIn the above-mentioned manner, any one of the operations,Wis thatwD is any forwarding of the task t, D is the set of D, c' is the client to which D belongs, gc'is any packet defined on client c',dis a packet gcEither of the above-mentioned' forwarding is carried out,Dis thatdW' is a packet gc'any work in W', W 'is a set of W', t 'is a task to which W' belongs,w'is any one of the jobs in the task t',W' isw' D ' is any forwarding of t ' and D ' is a set of D '.
As shown with reference to figure 7 of the drawings,
let t be any task in the case, W be any work of task t, W be the set of W, c be the client responsible for handling work W, gcIs any packet defined on client c, and'd is packet gcIs a set of 'D,'t is a work to which 'D belongs,' W is any work of task't,' W is a set of 'W'dIs any forward of't'DIs'dThe set of (a) and (b),wis a packet gcIn the above-mentioned manner, any one of the operations,Wis thatwD is any forwarding of the task t, D is the set of D, c' is the client to which D belongs, gc'is any packet defined on client c',dis a packet gcEither of the above-mentioned' forwarding is carried out,Dis thatdW' is a packet gc'any work in W', W 'is a set of W', t 'is a task to which W' belongs,w'is any one of the jobs in the task t',W' isw' D ' is any forwarding of t ' and D ' is a set of D '. The scheduling method of the task t handling process is as follows:
the first step is as follows: if every work w of task t is in the complete or negative state, i.e. GetStatus (w) e { Swf,Swn}, If W belongs to W, then switching to the second step; otherwise, ending.
The second step is that: if every task w of task t is in negative state, i.e. getstatus (w) Swn
Figure A20051004288800192
W ∈ W, then set task t and each forwarding d of task t to a negative state, i.e. setstatus (t): st-n SetStatus(d):=Sdn* D ∈ D, then go to the seventh step; otherwise, the third step is carried out.
The third step: for any w in t, if w is in a negative state, then w is set to a complete state, the client of w is set to null, and w will be in the same group g as wcEach of which operateswAnd each forwarding'd is set to a completion state, setstatus (w): swf,SetClient(w):=null,SetStatus( w)=Swf,* wW,SetStatus(′d)=Sdf* 'D ∈' D, then go to the fourth step; otherwise, turning to the fifth step.
The fourth step: for any'd, if the task't to which the'd belongs is in a negative state, i.e. GetStatus ('t) ═ StnThen each of task't and task't is forwarded 'dSet to the done state, SetStatus ('t): st-f,SetStatus(′ d):=Sdf,*′ d∈′ D
The fifth step: if task t has work w in negative state, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>Sw</mi> <mi>n</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>,</mo> </mrow> </math> Turning to the third step; otherwise, the step six is executed.
And a sixth step: setting task t to completion state, i.e. <math> <mrow> <mi>SetStatus</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>:</mo> <mo>=</mo> <msub> <mi>St</mi> <mi>f</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>.</mo> </mrow> </math> Calculating a forwarding condition of each forwarding d of the task t, and if the result is True, namely precondition (d) True, setting the forwarding d to a to-be-signed state, namely setstatus (d): sd ═ Sdw(ii) a Otherwise forward d is set to negative state, i.e. setstatus (d): sd ═ Sdn
The seventh step: for any d, if it belongs to the group gcAll forwarding in `dIn the negative state, i.e. GetStatus: (d)=Sdn,* dDThen group g will be groupedcAll jobs in ' w ' are set to a negative state, i.e. SetStatus (w '): swn,*w′∈W′。
Eighth step: for any one w ', all jobs in task t' if it belongs tow' in a negative state, i.e. GetStatusS ((R))w′)=Swn,* w′∈ W', then all forwarding d ' of task t ' and task t ' are set to negative state, i.e. SetStatus (t '): st-n SetStatus(d′)=Sdn,*d′∈D′。
As shown with reference to figure 8 of the drawings,
let t be any task in the case, W be any work of task t, W be the set of W, c be the client responsible for handling work W, gcIs any packet defined on client c, and'd is packet gcIs a set of 'D,'t is a work to which 'D belongs,' W is any work of task't,' W is a set of 'W'dIs any forward of't'DIs'dThe set of (a) and (b),wis a packet gcIn the above-mentioned manner, any one of the operations,Wis thatwD is the task's task ofOne forwarding, D is the set of D, c' is the client to which D belongs, gc'is any packet defined on client c',dis a packet gcEither of the above-mentioned' forwarding is carried out,Dis thatdW' is a packet gc'any work in W', W 'is a set of W', t 'is a task to which W' belongs,w'is any one of the jobs in the task t',W' isw' D ' is any forwarding of t ' and D ' is a set of D '. The scheduling method for client c to redo task t is as follows:
the first step is as follows: if task t is in the on-hold state, i.e., GetStatus (t) StwOr task t is in completion and task t is not forwarded, i.e. getstatus (t) Stf&Count (d) 0, or task t is in complete state and each forwarding d of task t is in pending or negative state, i.e. getstatus (t) Stf&GetStatus(d)∈{Sdw,SdnThe * D belongs to D, then the second step is carried out; otherwise, ending.
The second step is that: for any d, if it belongs to the group gc' Each of the forwardingdAre all in a negative state, i.e. GetStatus: (d)=Sdn,* dDThen group g will be groupedcAll jobs w ' in ' are set to the ready state, SetStatus (w '): swr* W 'is belonged to W', and then the third step is carried out; otherwise, turning to the fourth step.
The third step: for any w ', if the task t' to which it belongs is in a negative state, each forwarding d 'of the task t' and the task t 'is set to a ready state, i.e., SetStatus (t'): st-r SetStatus(d′)=Sdr,*d′∈D′。
The fourth step: setting the task t and the work w to be reworked by the task t as an on-office state, and setting each forwarding d of the task t as a ready state, namely SetStatus (w): sww,SetStatus(t):=Stw,SetStatus(d):=Sdr* D ∈ D. For any d, if it belongs to the group gc'with work w' in negative, i.e. <math> <mrow> <mi>GetStatus</mi> <mrow> <mo>(</mo> <msup> <mi>w</mi> <mo>&prime;</mo> </msup> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>Sw</mi> <mi>n</mi> </msub> <mo>,</mo> <mo>&Exists;</mo> <msup> <mi>w</mi> <mo>&prime;</mo> </msup> <mo>&Element;</mo> <msup> <mi>W</mi> <mo>&prime;</mo> </msup> <mo>,</mo> </mrow> </math> Will group gc' each work w ' in the set is set to the ready state, SetStatus (w '): swr,*w′∈W′。
The fifth step: if task t has work w in completion and the client of w is null, i.e. GetStatus ( w ) = Sw f & <math> <mrow> <mi>GetClient</mi> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>null</mi> <mo>,</mo> <mo>&Exists;</mo> <mi>w</mi> <mo>&Element;</mo> <mi>W</mi> <mo>,</mo> </mrow> </math> Set w to a negative state, setstatus (w): swn
And a sixth step: for any one w in t, if w belongs to a group gcEach of which operateswAre all in a negative state, i.e. GetStatus: (w)=Swn,* wWThen g iscSet to a negative state, SetStatus ('d): sd ═ Sdn,*′d∈′D。
The seventh step: for any'd, if its task't is in completion and the client of each work ' w of the task't is null, i.e. GetStatus ('t) ═ Stf&GetClient(′w)=null,*′w∈' W, then set task't and each job ' W of task't to a negative state, SetStatus ('t): st-n SetStatus(′w):=Swn,*′w∈′W。
Eighth step: client c reworks job w.
The ninth step: if the work w is done, the work w is set to a completion state, namely setstatus (w): swfAnd then, the process is ended. Otherwise, the step eight is executed.
As shown with reference to figure 9 of the drawings,
let L be any cycle of case i, and w be any work on the cycle path, then the scheduling method of the start cycle is as follows:
if the work w belongs to the loop L and the work w is in the on-Do state and the loop L is in the ready state, i.e. w belongs to L&GetStatus(w)=Sww&GetStatus(L)=SlrThen set cycle L to run state, setstatus (L): sl ═ Slw(ii) a Otherwise, ending.
As shown with reference to figure 10 of the drawings,
let L be any cycle of case i, and w be any work on the cycle path, then the scheduling method for terminating the cycle is as follows:
if the work w belongs to the loop L, the work w is in the on state and the loop L is in the running state, namely w belongs to the L&GetStatus(w)=Sww&GetStatus(L)=SlwThen set cycle L to run state, setstatus (L): sl ═ Slf(ii) a Otherwise, ending.
As shown with reference to figure 11 of the drawings,
there are 6 clients (c1, c2, c3, c4, c5 and c6) and 7 tasks (t1, t2, t3, t4, t5, t6, t7) in case i, where tasks t1, t5 and t7 are multi-step tasks (completed in steps across multiple clients), work w1_1, w1_1 and w _5 are initiating work, forwarding d1_1 and d1_2 are conditional forwarding, 2 packets are defined on c6, d2 and w6_2 are packets g1, d1_2 and w6_1 are packets g2, all other clients that do not define packets default to the same packet, w2_1, d4, w3_1 and d3 are a loop l.
The multi-step task collaborative network can be represented graphically, which is called a network diagram for short. In this embodiment, a graphical representation method as in fig. 11 is employed: clients are represented by circles, tasks are represented by rectangles, work and forwarding are represented by lines with arrows, initial work and conditional forwarding are represented by open arrows, loops are represented by small circles at the beginning of the lines (only loops are used as open), and packets are represented by numbers marked on the lines near the client end.
All work, tasks, forwarding, and loops in the case and case are in a ready state before the case is not started.
1. Forward scheduling example for case i.
(1) When i is activated, s (i) ═ Siw,S(w1_1)=Sww,S(w1_1)=Sww,S(w_5)=Sww,S(t1)=Stw,S(t2)=Stw
(2) As can be seen from the figure, t1 is responsible for c1 and c5 simultaneously, corresponding to works w1_1 and w5, t2 is responsible for c1, corresponding to work w1_ 2.
(3) When w1_1 and w5 are finished, S (w1_1) is Swf,S(w5)=Swf,S(t1)=StfSince d1_1 and d1_2 are conditional forwarding, conditional judgment needs to be performed according to condition setting, where P (d1_1) is True and P (d1_2) is False, S (d1_1) is Sdw,S(d1_2)=Sdn
(4) When w1_2 is finished, S (w1_2) is Swf,S(t2)=Stf,S(d2)=Sdw
(5) c2 does not define a packet, defaulting to all forwarding and working as a group. Since d3 is only used for loop (active when loop is started), and no loop is assumed to be started, c2 can sign task t1, and after the sign, S (d1_1) ═ Sdf,S(w2_1)=Sww,S(w2_1)=Swn,S(t4)=Stw,S(t5)=Stw
(6) 2 groups are defined on c6, d2 and w6_2 are groups g1, and d1_2 and w6_1 are groups g 2. For g1, after c6 signs task t2, S (d2) is Sdf, and S (w6_2) is Sww,S(t6)=Stw. For g2, S (d1 — 2) ═ SdnSo S (w6_1) ═ Swn
(7) When w2_1 is finished, S (w2_1) is Swf,S(t4)=Stf,S(d4)=Sdw
(8) When w2_2 is finished, S (w2_2) is SwfSince S (w6_1) ═ Swn,S(t5)=Stf,S(d5_1)=Sdw,S(d5_2)=Sdw
(9) When w6_2 is finished, S (w6_2) is Swf,S(t6)=Stf
(10) c3 does not define a packet, defaulting to all forwarding and working as a group. Since w3_1 is for loop only, and it is assumed here that loop is not started, S (d4) Sd after c3 signs tasks t4 and t5f,S(d5_1)=Sdf,S(w3_2)=Sww
(11) c4 does not define a packet, defaulting to all forwarding and working as a group. c4 signs task t5, S (d5_2) ═ Sdf,S(w4)=Sww
(12) When w3_2 and w4 are finished, S (w3_2) is Swf,S(w4)=Swf,S(t7)=StfI ends because none of w and d in i is in the pending or signed state, s (i) ═ Sif
2. Example of a reverse scheduling process for a case.
(1) The client machine reworks the task:
let case i schedule forward to step (4), since S (d1_1) ═ Sdw,S(d1_2)=Sdn,S(d1_2)=SdnTherefore, c5 can redo t1, c1 can redo t1 and t1t 2. Here, let c1 redo t1, and after redo, S (d1_1) ═ Sdr,S(d1_2)=Sdr,S(t1)=Stw,S(w1_1)=Sww
(2) The client returns to the task:
let case i forward schedule to step (6), since S (w2_1) ═ Sww,S(w2_1)=Swn,S(w6_1)=Swn,S(w6_2)=Sww,S(t4)=Stw,S(t5)=Stw,S(t6)=StwSo both c2 and c6 can roll back to the task. Assuming that c6 returns signed task t2 of group g1, S (w6_2) is Swr,S(d2)=Sdw. It can be seen that c1 can also redo w1_2 when c6 rolls back to signed t2, thereby continuously implementing the reverse direction in the multi-step task scheduling process.
3. Example of a round-robin scheduling process for a case.
If case i is scheduled forward to step (10), c3 starts loop l, then s (l) Slw,S(w3_1)=Sww,S(t3)=Stw(ii) a When w3_1 is finished, S (w3_1) is Swf,S(t3)=Stf,S(d3)=Sdw(ii) a At this time, c2 may sign task t3, and since the cycle handles the work, task, and forwarding in the path together as ready, and w2_2 is not in the cycle, S (d3) after signing is Sdf,S(2_1)=Sww,S(t4)=Stw(ii) a When w2_1 is finished, S (w2_1) is Swf,S(t4)=Stf,S(d4)=Sdw(ii) a At this time, if the cycle is stopped at c3, s (l) ═ SlfThe loop ends, ce can then process w3_1 if the loop is not to be aborted, S (w3_1) ═ Sww,S(t3)=StwAnd repeating the circulation in such a way until the circulation is terminated.

Claims (1)

1、一种用于工作流引擎的多任务协同调度方法,其特征在于:按照如下步骤进行:1, a kind of multi-task cooperative scheduling method for workflow engine, it is characterized in that: carry out according to following steps: (i)构建多任务协同方法的计算模型——多步任务协同网,这是一个四元组N=(C,T;W,D)按照如下充分必要条件构造的:(i) Construct the computing model of the multi-task collaboration method—the multi-step task collaboration network, which is a quaternion N=(C, T; W, D) constructed according to the following sufficient and necessary conditions: 1°C≠φ1°C≠φ 2°T≠φ2°T≠φ 3°CI T=φ3°CI T=φ 4°WC×T4°WC×T 5°DT×C5°DT×C 6°dom(W)Y cod(W)=CYT6°dom(W)Y cod(W)=CYT 其中, dom ( W ) = { x | &Exists; y : ( x , y ) &Element; W } , cod ( W ) = { y | &Exists; x : ( x , y ) &Element; W } ; in, dom ( W ) = { x | &Exists; the y : ( x , the y ) &Element; W } , cod ( W ) = { the y | &Exists; x : ( x , the y ) &Element; W } ; 在四元组中,C是一个有限的客户机集合;T是一个有限的任务集合;W是工作的集合,表示客户机在任务中的分工;D是转发的集合,表示任务的流转方向;In the quaternion, C is a limited set of clients; T is a limited set of tasks; W is a set of work, indicating the division of labor of clients in tasks; D is a set of forwarding, indicating the flow direction of tasks; (2)构建多步任务协同网的动态结构——多步任务协同网系统,这是一个八元组∑=(C,T;W,D;W0,PD,G,L)按照如下条件构造的:(2) Build the dynamic structure of the multi-step task collaborative network—the multi-step task collaborative network system, which is an octet ∑=(C, T; W, D; W0, PD, G, L) constructed according to the following conditions of: 1°N=(C,T;W,D)是一个多步任务协同网;1°N=(C, T; W, D) is a multi-step task collaboration network; 2°W0W,是起始工作的集合,起始工作是指不依赖于任何任务客户机就可以办理的工作;2°W 0 W is a collection of initial jobs, and initial jobs refer to jobs that can be handled without relying on any task client; 3°PD是定义在D上的转发条件的集合,转发条件指转发依赖的条件;3°P D is a set of forwarding conditions defined on D, and the forwarding conditions refer to the conditions on which forwarding depends; 4°G是定义在C上的分组的集合,如果客户机即将办理的工作和已完成任务之间存在依赖关系,则需要将这些工作和传递这些任务的转发划分成一组,称为分组;4°G is a collection of groups defined in C. If there is a dependency relationship between the work to be done by the client and the completed tasks, it is necessary to divide these jobs and the forwarding of these tasks into a group, which is called a group; 5°LW∪D,是循环的集合,循环指可被反复执行的,并只保留最后一次执行信息的环形路径;5°LW∪D is a collection of loops, and loops refer to circular paths that can be executed repeatedly and only retain the last execution information; (3)构建多任务调度所需的状态集合,包括五个状态集合:(3) Construct the state sets required for multi-task scheduling, including five state sets: 1°案例的状态集合:Si={Sir,Siw,Swf},案例是多步任务协同网的一次执行,一个多步任务协同网可以被多次执行,每次执行都对应一个不同的案例,其中,1° The state set of the case: Si={Si r , Si w , Sw f }, the case is one execution of the multi-step task coordination network, a multi-step task coordination network can be executed multiple times, and each execution corresponds to a different case, where Sir就绪状态:案例等待执行的状态,Si r ready state: the state of the case waiting to be executed, Siw在办状态:案例正在执行的状态,Si w running status: the status of the case being executed, Sif完成状态:案例已经结束的状态;Si f completed state: the state that the case has ended; 2°工作的状态集合:Sw={Swr,Sww,Swn,Swf},其中,2° working state set: Sw={Sw r , Sw w , Sw n , Sw f }, where, Swr就绪状态:工作等待客户机办理的状态,Sw r ready state: the state that the work is waiting for the client to handle, Sww在办状态:工作正在被客户机办理的状态,Sw w in-process state: the state that the work is being processed by the client, Swn否定状态:工作因条件不满足不能被客户机办理的状态,Sw nNegative state: the state that the work cannot be handled by the client due to unsatisfied conditions, Swf完成状态:工作已经结束的状态;Sw f completion state: the state that the work has ended; 3°任务的状态集合:St={Str,Stw,Stn,Stf},其中,State set of 3° task: St={St r , St w , St n , St f }, where, Str就绪状态:任务等待客户机办理的状态, Str ready state: the state in which the task is waiting for the client to process, Stw在办状态:任务正在被客户机办理的状态,St w in process status: the task is being processed by the client, Stn否定状态:任务因条件不满足不能被客户机办理的状态,St n negative state: the state that the task cannot be processed by the client due to unsatisfied conditions, Stf完成状态:任务已经结束的状态;St f completion state: the state that the task has ended; 4°转发的状态集合:Sd={Sdr,Sdw,Sdn,Sdf},其中,4°Forwarding state set: Sd={Sd r , Sd w , Sd n , Sd f }, where, Sdr就绪状态:转发等待被执行的状态,Sd r ready state: the state of forwarding waiting to be executed, Sdw待签状态:转发等待被客户机签收的状态,Sd w to be signed status: the status of forwarding waiting to be signed by the client, Sdn否定状态:转发因条件不满足不能被客户机签收的状态,Sd n Negative state: the state that the forwarding cannot be signed by the client due to unsatisfied conditions, Sdf完成状态:转发已经结束的状态;Sd f completion state: the state that forwarding has ended; 5°循环的状态集合:S1={Slr,Slw,Sdf};其中,State set of 5° cycle: S1={Sl r , Sl w , Sd f }; where, Slr就绪状态:循环等待被执行的状态,Sl r ready state: the state of the loop waiting to be executed, Slw工作状态:循环正在被执行的状态,Sl w working state: the state that the loop is being executed, Slf完成状态:循环已经结束的状态;Sl f completion state: the state that the cycle has ended; (4)多任务调度包括启动案例、终止案例、客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环八个调度方法;在多任务调度之前,案例和所有的工作、任务、转发、循环都被初始化为就绪状态;启动案例是第一个被执行调度,客户机签办任务、客户机退回任务、多步任务办理、多步任务重办、启动循环和终止循环是根据多步任务协同网的流向,包括正向和逆向,由客户机进行调度的,终止案例的调度是根据工作和转发的状态由系统自动调度的;(4) Multi-task scheduling includes eight scheduling methods: start case, terminate case, client signed task, client return task, multi-step task processing, multi-step task re-run, start cycle and terminate cycle; before multi-task scheduling , the case and all jobs, tasks, forwarding, and loops are initialized to the ready state; the startup case is the first to be executed and scheduled, the client signs the task, the client returns the task, multi-step task processing, and multi-step task re-running , The start cycle and the termination cycle are scheduled by the client according to the flow direction of the multi-step task collaboration network, including forward and reverse, and the scheduling of the termination case is automatically scheduled by the system according to the status of work and forwarding; 令:make: SetStatus(x)表示设置对象x的状态,x为案例、任务、工作、转发或循环;SetStatus(x) means setting the status of object x, where x is case, task, work, forwarding or circulation; GetStatus(x)表示获得对象x的状态,x为案例、任务、工作、转发或循环;GetStatus(x) means to obtain the status of object x, where x is case, task, work, forwarding or circulation; SetClient(x)表示设置对象所属客户机,x为工作或转发;SetClient(x) means setting the client to which the object belongs, and x is work or forwarding; GetClient(x)表示获得对象所属客户机,x为工作或转发;GetClient(x) means to obtain the client to which the object belongs, and x is work or forwarding; PreCondition(x)表示条件计算,结果为True或False,x为转发;PreCondition(x) means condition calculation, the result is True or False, x is forwarding; Count(x)表示集合中对象的数目,x为一个集合;Count(x) indicates the number of objects in the collection, x is a collection; 则多步任务的调度方法可表述如下:Then the scheduling method of multi-step tasks can be expressed as follows: 1°启动案例:1° startup case: 设w0为案例i的任一起始工作,W0是w0的集合,则启动案例的调度方法如下:Let w 0 be any initial work of case i, W 0 is the set of w 0 , then the scheduling method of the start case is as follows: 将案例和每一个起始工作的状态设置为在办状态,即Set the status of the case and each initiated job to Open, i.e. SetStatus(i):=Siw SetStatus(i):=Si w SetStatus(w0):=Sww,w0∈W0 SetStatus(w 0 ):=Sw w , w 0 ∈W 0 2°终止案例:2° Termination case: 设w为案例i的任一工作,W是w的集合,d为案例i的任一转发,D是d的集合,则终止案例的调度方法为:Suppose w is any job of case i, W is the set of w, d is any forwarding of case i, and D is the set of d, then the scheduling method for terminating the case is: 第一步:若案例中仍有待办的工作或待签收的任务,即GetStatus(w)=Sww &Exists; w &Element; W 或GetStatus(d)=Sdw &Exists; d &Element; D , 则不能终止案例,结束;否则转第二步;Step 1: If there is still work to be done or task to be signed in the case, ie GetStatus(w)=Sw w , &Exists; w &Element; W or GetStatus(d)=Sd w , &Exists; d &Element; D. , If the case cannot be terminated, end; otherwise, go to the second step; 第二步:将案例的状态置为完称状态,即SetStatus(i):=SifThe second step: the state of the case is set to the complete state, that is, SetStatus(i):=Si f ; 3°客户机签办任务:3°Client signing tasks: 设c是案例i中的任一客户机,gc是定义在c上的任一分组,d是分组gc中的任一转发,D是d的集合,’t是d所属的任务, d是任务’t中的任一转发, Dd的集合,’w是任务’t中的任一工作,’W是’w的集合,w是分组gc中的任一工作,W是w的集合,t是w所属的任务, w是任务t中的任一工作, Ww的集合,d’是任务t中的任一转发,D’是d’的集合,则客户机c签办任务的调度方法如下:Let c be any client in case i, g c be any group defined on c, d be any forwarding in group g c , D be the set of d, 't be the task to which d belongs, d is any forwarding in task 't, D is the set of d , 'w is any work in task 't, 'W is the set of 'w, w is any work in group g c , W is w , t is the task to which w belongs, w is any job in task t, W is the set of w , d' is any forwarding in task t, D' is the set of d', then client c signs The method of scheduling tasks is as follows: 第一步:若gc中的每一个转发d都处于待签或否定状态,即GetStatus(d)∈{Sdw,Sdn},d∈D,则转第二步;否则结束;Step 1: If each forwarding d in g c is pending or negated, that is, GetStatus(d)∈{Sd w , Sd n }, d∈D, go to the second step; otherwise, end; 第二步:若gc中的每一个转发d都处于否定状态,即GetStatus(d)=Sdn,d∈D,则转第三步;否则转第四步;The second step: if each forwarding d in g c is in a negative state, that is, GetStatus(d)=Sd n , d∈D, then go to the third step; otherwise, go to the fourth step; 第三步:将gc中的每一个工作w设置为否定状态,即SetStatus(w):=Swn,w∈W;对于每一个w,若其所属任务t的每一个工作 w都处于否定状态,即GetStatus( w)=Swn, wW,则将任务t和任务t的每一个转发d′设置为否定状态,即SetStatus(t):=StnSetStatus(d′):=Sdn,d′∈D′,结束;否则结束;Step 3: Set each work w in g c to a negative state, that is, SetStatus(w):=Sw n , w∈W; for each w, if each work w of the task t it belongs to is in Negative status, that is, GetStatus( w )=Sw n , wW , then set task t and each forwarding d′ of task t to negative status, that is, SetStatus(t):=St n SetStatus(d′): =Sd n , d′∈D′, end; otherwise end; 第四步:对于gc中的任一个d,若其处于待签状态,则将d的客户机设置为c,即SetCliet(d):=c,则转第六步;否则将d的客户机设置为空值null,即SetClient(d):=null,并转第五步;The fourth step: for any d in g c , if it is in the state to be signed, the client of d is set to c, that is, SetCliet(d):=c, then turn to the sixth step; otherwise, the client of d Machine is set to null value null, namely SetClient(d):=null, and turn to the fifth step; 第五步:若d所属任务’t处于否定状态,即GetStatus(′t):=Stn,则将任务’t和其每一个工作’w及每一个转发 d设置为完成状态,即SetStatus(′t):=Stf,SetStatus(′w):=Swf,′w∈′W,SetStatus( d):=Sdf, dDStep 5: If the task 't to which d belongs is in a negative state, that is, GetStatus('t):=St n , then set the task 't, each work'w and each forwarding d to a completed state, that is, SetStatus( ′t):=St f , SetStatus(′w):=Sw f , ′w∈′W, SetStatus( d ):=Sd f , dD ; 第六步:将gc中的每一个转发d设置为完成状态,每一个工作w设置为完成状态,并将每一个工作w的客户机设置为c,即SetStatus(d):=Sdf,d∈D,SetClient(w):=c,w∈W,SetStatus(w):=Sww,w∈W;若gc中仍有转发d处于待签或否定状态,即GetStatus(d)∈{Sdw,Sdn},d∈D,则转第四步;否则转第七步;The sixth step: each forwarding d in g c is set to complete state, each work w is set to complete state, and the client of each work w is set to c, that is, SetStatus(d):=Sd f , d∈D, SetClient(w):=c, w∈W, SetStatus(w):=Sw w ,w∈W; if g c still forwards d in pending or negative state, that is, GetStatus( d)∈{Sd w , Sd n }, d∈D, then go to the fourth step; otherwise, go to the seventh step; 第七步:若任务t处于就绪状态,即GetStatus(t)=Str,则将任务t设置为在办状态,即SetStatus(t):=StwStep 7: If the task t is in the ready state, that is, GetStatus(t)= Str , then set the task t to the in-process state, that is, SetStatus(t):=St w ; 第八步:客户机c办理gc中的任一个工作w;Step 8: client c handles any job w in g c ; 第九步:若工作w办理完毕,则将工作w设置为完成状态,即SetStatus(w):=Swf;若gc中仍有处于在办状态的工作,即GetStatus(w)=Sww &Exists; w &Element; W , 则转第八步;否则结束;Step 9: If the job w is completed, set the job w to the completed state, that is, SetStatus(w):=Sw f ; if there are still jobs in the processing state in g c , that is, GetStatus(w)=Sw w , &Exists; w &Element; W , Then turn to the eighth step; otherwise end; 4°客户机退回任务:4 ° The client returns the task: 设c是案例i中的任一客户机,gc是定义在c上的任一分组,d是分组gc中的任一转发,D是d的集合,’t是d所属的任务, d是任务’t中的任一转发, Dd的集合,’w是任务’t中的任一工作,’W是’w的集合,w是分组gc中的任一工作,W是w的集合,t是w所属的任务, w是任务t中的任一工作, Ww的集合,d是任务t中的任一转发,D’是d’的集合,则客户机c退回任务的调度方法如下:Let c be any client in case i, g c be any group defined on c, d be any forwarding in group g c , D be the set of d, 't be the task to which d belongs, d is any forwarding in task 't, D is the set of d , 'w is any work in task 't, 'W is the set of 'w, w is any work in group g c , W is w , t is the task to which w belongs, w is any job in task t, W is the set of w , d is any forwarding in task t, D' is the set of d', then client c returns the task The scheduling method is as follows: 第一步:若gc中的每一个工作w都处于在办状态,即GetStatus(w)=Sww,w∈W,则转第二步;否则结束;The first step: if every job w in g c is in the processing state, that is, GetStatus(w)=Sw w , w∈W, then go to the second step; otherwise, end; 第二步:将gc中的每一个工作w都设置为就绪状态,即SetStatus(w):=Swr,w∈W;对于gc中的每一个工作w,若w所属任务t的每一个工作 w都处于就绪状态,即GetStatus( w)=Swr, wW,则将任务t设置为就绪状态,即SetStatus(t):=StrStep 2: Set each work w in g c to the ready state, that is, SetStatus(w):=Sw r , w∈W; for each work w in g c , if w belongs to task t Every work w is in the ready state, that is, GetStatus( w )=Sw r ,  wW , then set the task t to the ready state, that is, SetStatus(t):=St r ; 第三步:对于gc中的任一个d,若其客户机为c,即GetClient(d)=c,则将d的客户机设置为null,并将d设置为待签状态,即SetClient(d):=null,SetStatus(d):=Sdw,之后转第五步;否则将d设置为否定状态,即SetStatus(d):=Sdn,之后转第四步;The third step: for any d in g c , if its client is c, i.e. GetClient(d)=c, then the client computer of d is set to null, and d is set to the state to be signed, i.e. SetClient( d):=null, SetStatus(d):=Sd w , then turn to the fifth step; otherwise d is set to a negative state, that is, SetStatus(d):=Sd n , then turn to the fourth step; 第四步:若d所属任务′t的每一个转发 d都处于否定状态,即GetStatus( d)=Sdn, dD,并且任务′t的每一个工作′w的客户机都为空值null,即GetClient(′w)=null,′w∈′W,则将任务′t设置为否定状态,即SetStatus(′t):=Stn;结束;Step 4: If every forwarding d of task 't to which d belongs is in a negative state, that is, GetStatus( d )=Sd n ,  dD , and every client of task 't'w is empty Value null, i.e. GetClient ('w)=null, 'w∈'W, then task 't is set to a negative state, i.e. SetStatus ('t):=St n ; end; 5°多步任务办理:5° multi-step task processing: 设t是案例中的任一任务,w是任务t的任一工作,W是w的集合,c是负责办理工作w的客户机,gc是定义在客户机c上的任一分组,’d是分组gc中的任一转发,’D是’d的集合,’t是’d所属的工作,’w是任务’t的任一工作,’W是’w的集合,’ d是’t的任一转发,’ D是’ d的集合, w是分组gc中的任一工作, Ww的集合,d是任务t的任一转发,D是d的集合,c’是d所属的客户机,gc’是定义在客户机c’上的任一分组, d是分组gc’中的任一转发, Dd的集合,w’是分组gc’中的任一工作,W’是w’的集合,t’是w’所属的任务,w’是任务t’中的任一工作, W’是 w’的集合,d’是t’的任一转发,D’是d’的集合,则任务t办理过程的调度方法如下:Suppose t is any task in the case, w is any job of task t, W is the set of w, c is the client responsible for handling job w, g c is any group defined on client c,' d is any forwarding in group g c , 'D is the set of 'd, 't is the job to which 'd belongs, 'w is any job of task 't, 'W is the set of 'w,' d is Any forwarding of 't,' D is the set of ' d , w is any job in group g c , W is the set of w , d is any forwarding of task t, D is the set of d, c' is The client to which d belongs, g c ' is any group defined on client c', d is any forwarding in group g c ', D is the set of d , w' is any group in group g c ' A job, W' is the set of w', t' is the task to which w' belongs, w ' is any job in the task t', W ' is the set of w ', d' is any forwarding of t', D' is the set of d', then the scheduling method of task t handling process is as follows: 第一步:若任务t的每一个工作w都处于完成或否定状态,即GetStatus(w)∈{Swf,Swn}, &ForAll; &CenterDot; w &Element; W , 则转第二步;否则结束;Step 1: If each work w of task t is in the completed or negative state, that is, GetStatus(w)∈{Sw f , Sw n }, &ForAll; &CenterDot; w &Element; W , Then turn to the second step; otherwise end; 第二步:若任务t的每一个工作w都处于否定状态,即GetStatus(w)=Swn &ForAll; &CenterDot; w &Element; W , 则将任务t和任务t的每一个转发d设置为否定状态,即SetStatus(t):=Stn SetStatus(d):=Sdn,d∈D,之后转第七步;否则转第三步;Step 2: If every job w of task t is in negative state, ie GetStatus(w)= Swn , &ForAll; &CenterDot; w &Element; W , Then set task t and each forwarding d of task t to a negative state, that is, SetStatus(t):=St n SetStatus(d):=Sd n , d∈D, then go to the seventh step; otherwise go to the third step step; 第三步:对于t中的任一个w,若w处于否定状态,则将w设置为完成状态,将w的客户机设置为空值null,将与w处于同一分组gc中的每一个工作 w和每一个转发′d设置为完成状态,即SetStatus(w):=Swf,SetClient(w):=null,SetStatus( w)=Swf, wW,SetStatus(′d)=Sdf,′d∈′D,之后转第四步;否则转第五步;Step 3: For any w in t, if w is in the negative state, set w to complete state, set the client of w to null value, and set each job in the same group g c as w w and each forwarding 'd are set to complete status, that is, SetStatus(w):=Sw f , SetClient(w):=null, SetStatus( w )=Sw f ,  wW , SetStatus('d)=Sd f , ′d∈′D, then go to the fourth step; otherwise go to the fifth step; 第四步:对于任一个′d,若′d所属任务′t处于否定状态,即GetStatus(′t)=Stn,则将任务′t和任务′t的每一个转发′ d设置为完成状态,即SetStatus(′t):=Stf,SetStatus(′ d):=Sdf,′ d∈′ DStep 4: For any 'd, if the task 't to which 'd belongs is in a negative state, that is, GetStatus('t)=St n , then set task 't and each forwarding ' d of task 't to the completed state , namely SetStatus(′t):=St f , SetStatus(′ d ):=Sd f , ′ d ∈′ D ; 第五步:若任务t有工作w处于否定状态,即GetStatus(w)=Swn &Exists; w &Element; W , 则转第三步;否则转第六步;Step 5: If task t has work w in negative state, ie GetStatus(w)= Swn , &Exists; w &Element; W , Then go to the third step; otherwise go to the sixth step; 第六步:将任务t设置为完成状态,即SetStatus(t):=Stf &Exists; w &Element; W ; 计算任务t的每一个转发d的转发条件,若结果为真,即PreCondition(d)=True,则将转发d设置为待签状态,即SetStatus(d):=Sdw;否则将转发d设置为否定状态,即SetStatus(d):=SdnStep 6: Set task t to complete status, namely SetStatus(t):=St f , &Exists; w &Element; W ; Calculate the forwarding condition of each forwarding d of task t, if the result is true, that is, PreCondition(d)=True, then forwarding d is set to be signed, that is, SetStatus(d):=Sd w ; otherwise, forwarding d is set It is a negative state, that is, SetStatus(d):=Sd n ; 第七步:对于任一个d,若其所属分组gc’中的所有转发 d处于否定状态,即GetStatus( d)=Sdn, dD,则将分组gc’中的所有工作w′设置为否定状态,即SetStatus(w′):=Swn,w′∈W′;Step 7: For any d, if all the forwarding d in the group g c ' to which it belongs are in the negative state, that is, GetStatus( d )=Sd n ,  dD , then all the work w in the group g c ''Set as a negative state, that is, SetStatus(w'):=Sw n , w'∈W'; 第八步:对于任一个w′,若其所属任务t’中的所有工作 w′处于否定状态,即GetStatusS( w′)=Swn, w′∈ W′,则将任务t’和任务t’的所有转发d′设置为否定状态,即SetStatus(t′):=Stn SetStatus(d′)=Sdn,d′∈D′;结束;Step 8: For any w′, if all the tasks w ′ in the task t′ to which it belongs are in the negative state, that is, GetStatusS( w ′)= Swn ,  w ′∈ W ′, then combine task t′ and task All forwarding d' of t' are set to negative status, that is, SetStatus(t'):=St n SetStatus(d')=Sd n , d'∈D';end; 6°多步任务重办:6° multi-step task redo: 设t是案例中的任一任务,w是任务t的任一工作,W是w的集合,c是负责办理工作w的客户机,gc是定义在客户机c上的任一分组,’d是分组gc中的任一转发,’D是’d的集合,’t是’d所属的工作,’w是任务’t的任一工作,’W是’w的集合,’ d是’t的任一转发,’ D是’ d的集合, w是分组gc中的任一工作, Ww的集合,d是任务t的任一转发,D是d的集合,c’是d所属的客户机,gc’是定义在客户机c’上的任一分组, d是分组gc’中的任一转发, Dd的集合,w’是分组gc’中的任一工作,W’是w’的集合,t’是w’所属的任务,w’是任务t’中的任一工作, W’是 w’的集合,d’是t’的任一转发,D’是d’的集合,则客户机c重办任务t的调度方法如下:Suppose t is any task in the case, w is any job of task t, W is the set of w, c is the client responsible for handling job w, g c is any group defined on client c,' d is any forwarding in group g c , 'D is the set of 'd, 't is the job to which 'd belongs, 'w is any job of task 't, 'W is the set of 'w,' d is Any forwarding of 't,' D is the set of ' d , w is any job in group g c , W is the set of w , d is any forwarding of task t, D is the set of d, c' is The client to which d belongs, g c ' is any group defined on client c', d is any forwarding in group g c ', D is the set of d , w' is any group in group g c ' A job, W' is the set of w', t' is the task to which w' belongs, w ' is any job in the task t', W ' is the set of w ', d' is any forwarding of t', D' is the set of d', then the scheduling method of client c rerunning task t is as follows: 第一步:若任务t处于在办状态,即GetStatus(t)=Stw,或任务t处于完成状态且任务t没有转发,即GetStatus(t)=Stf & Count(D)=0,或任务t处于完成状态且任务t的每一个转发d都处于待签或否定状态,即GetStatus(t)=Stf & GetStatus(d)∈{Sdw,Sdn},d∈D,则转第二步;否则结束;Step 1: If the task t is in the running state, that is, GetStatus(t)=St w , or the task t is in the completed state and the task t has not been forwarded, that is, GetStatus(t)=St f & Count(D)=0, or Task t is in the completed state and each forwarding d of task t is in pending or negative state, that is, GetStatus(t)=St f & GetStatus(d)∈{Sd w , Sd n }, d∈D, then turn to Step 2; otherwise end; 第二步:对于任一个d,若其所属分组gc’中的每一个转发d都处于否定状态,即GetStatus( d)=Sdn, dD,则将分组gc’中的所有工作w′设置为就绪状态,即SetStatus(w′):=Swr,w′∈W′,之后转第三步;否则转第四步;Step 2: For any d, if each forwarding d in the group g c ' to which it belongs is in a negative state, that is, GetStatus( d )=Sd n ,  dD , then all the forwarding d in the group g c ' Work w'is set to the ready state, that is, SetStatus(w'):=Sw r , w'∈W', then go to the third step; otherwise go to the fourth step; 第三步:对于任一个w′,若其所属任务t’处于否定状态,则将任务t’和任务t’的每一个转发d′设置为就绪状态,即SetStatus(t′)=Str SetStatus(d′)=Sdr,d′∈D′;Step 3: For any w', if the task t' to which it belongs is in the negative state, then set the task t' and each forwarding d' of the task t' to the ready state, that is, SetStatus(t')= Str SetStatus (d')=Sd r , d'∈D'; 第四步:将任务t和任务t要重办的工作w设置为在办状态,并将任务t的每一个转发d设置为就绪状态,即SetStatus(w):=Sww,SetStatus(t):=Stw,SetStatus(d):=Sdr,d∈D;对于任一个d,若其所属分组gc’中有工作w′处于否定状态,即GetStatus(w′)=Swn &Exists; w &prime; &Element; W &prime; , 则将分组gc’中的每一个工作w′设置为就绪状态,即SetStatus(w′):=Swr,w′∈W′;Step 4: Set task t and the task w to be re-done by task t to the ongoing state, and set each forwarding d of task t to the ready state, that is, SetStatus(w):=Sw w , SetStatus(t) :=St w , SetStatus(d):=Sd r , d∈D; for any d, if there is a job w'in the negative state in the group g c ' to which it belongs, that is, GetStatus(w')=Sw n , &Exists; w &prime; &Element; W &prime; , Then set each work w' in the group g c ' to the ready state, that is, SetStatus(w'):=Sw r ,w'∈W'; 第五步:若任务t有处于完成状态的工作w,且w的客户机为null,即GetStatus(w)=Swf& GetClient(w)=null, &Exists; w &Element; W , 则将w设置为否定状态,即SetStatus(w):=SwnStep 5: If task t has work w in completion state, and the client of w is null, that is, GetStatus(w)=Sw f & GetClient(w)=null, &Exists; w &Element; W , Then set w to a negative state, that is, SetStatus(w):=Sw n ; 第六步:对于t中的任一个w,若w所属分组gc中的每一个工作 w都处于否定状态,即GetStatus( w)=Swn, wW,则将gc中的每一个转发′d设置为否定状态,即SetStatus(′d):=Sdn,′d∈′D;Step 6: For any w in t, if every work w in the group g c to which w belongs is in a negative state, that is, GetStatus( w )= Swn ,  wW , then each work w in g c A forwarding 'd is set to a negative state, that is, SetStatus('d):=Sd n , 'd∈'D; 第七步:对于任一个′d,若其所属任务′t处于完成状态,且任务′t的每一个工作′w的客户机都为空值null,即GetStatus(′t)=Stf & GetClient(′w)=null,′w∈′W,则将任务′t和任务′t的每一个工作′w都设置为否定状态,即SetStatus(′t):=Stn SetStatus(′w):=Swn,′w∈′W;Step 7: For any 'd, if the task 't to which it belongs is in the completed state, and the client of each work 'w of the task 't is null, that is, GetStatus('t)=St f & GetClient ('w)=null, 'w∈'W, then set task 't and each task 'w of task 't to a negative state, that is, SetStatus('t):=St n SetStatus('w) :=Sw n ,′w∈′W; 第八步:客户机c重办工作w;The eighth step: the client c reruns the work w; 第九步:若工作w办理完毕,则将工作w设置为完成状态,即SetStatus(w):=Swf,结束;否则转第八步;The ninth step: if the work w is completed, set the work w to the completed state, that is, SetStatus(w):=Sw f , end; otherwise, go to the eighth step; 7°启动循环:7° start cycle: 设L为案例i的任一循环,w是循环路径上的任一工作,则启动循环的调度方法如下:Let L be any cycle of case i, and w be any job on the cycle path, then the scheduling method to start the cycle is as follows: 若工作w属于循环L且工作w处于在办状态且循环L处于就绪状态,即w∈L &GetStatus(w)=Sww & GetStatus(L)=Slr,则将循环L设置为运行状态,即SetStatus(L):=Slw;否则结束;If the work w belongs to the cycle L and the work w is in the running state and the cycle L is in the ready state, that is, w∈L &GetStatus(w)=Sw w & GetStatus(L)=Sl r , then set the cycle L to the running state, that is SetStatus(L):=Sl w ; otherwise end; 8°终止循环:8° terminated loop: 设L为案例i的任一循环,w是循环路径上的任一工作,则终止循环的调度方法如下:Let L be any cycle of case i, and w be any job on the cycle path, then the scheduling method for terminating the cycle is as follows: 若工作w属于循环L且工作w处于在办状态且循环L处于运行状态,即w∈L&GetStatus(w)=Sww& GetStatus(L)=Slw,则将循环L设置为运行状态,即SetStatus(L):=Slf;否则结束。If the work w belongs to the cycle L and the work w is in the running state and the cycle L is in the running state, that is, w∈L&GetStatus(w)=Sw w & GetStatus(L)=Sl w , then set the cycle L to the running state, that is, SetStatus (L): = Sl f ; otherwise end.
CNA2005100428886A 2005-07-04 2005-07-04 Multitask coordinated dispatching method in use for workflow engine Pending CN1728165A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2005100428886A CN1728165A (en) 2005-07-04 2005-07-04 Multitask coordinated dispatching method in use for workflow engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2005100428886A CN1728165A (en) 2005-07-04 2005-07-04 Multitask coordinated dispatching method in use for workflow engine

Publications (1)

Publication Number Publication Date
CN1728165A true CN1728165A (en) 2006-02-01

Family

ID=35927424

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2005100428886A Pending CN1728165A (en) 2005-07-04 2005-07-04 Multitask coordinated dispatching method in use for workflow engine

Country Status (1)

Country Link
CN (1) CN1728165A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193823A (en) * 2010-03-12 2011-09-21 微软公司 Optimal incremental workflow execution allowing meta-programming
CN102609809A (en) * 2012-01-18 2012-07-25 西安交通大学 Method for realizing workflow cycle control by looking up table

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193823A (en) * 2010-03-12 2011-09-21 微软公司 Optimal incremental workflow execution allowing meta-programming
CN102609809A (en) * 2012-01-18 2012-07-25 西安交通大学 Method for realizing workflow cycle control by looking up table
CN102609809B (en) * 2012-01-18 2015-07-01 西安交通大学 Method for realizing workflow cycle control by looking up table

Similar Documents

Publication Publication Date Title
CN1152305C (en) virtual machine system
CN1680959A (en) Process editing device and method and process management device and method
CN1967488A (en) Task allocation method and task allocation apparatus
CN1304968C (en) Service processor and service processing method
CN2579091Y (en) Customer device for data test by utilizing array processing
CN1838077A (en) Schedulability determination method and real-time system
CN100347682C (en) Automatic detection building method
CN1201942A (en) Message processing method and device, and storage medium for storing control programs
CN1877532A (en) Compiler apparatus
CN1976240A (en) Mobile terminal and program therefor
CN1315045C (en) A method for implementing centralized concurrent management to cluster
CN101055569A (en) Function collection method and device for electronic data sheet
CN1229728C (en) WEB application system with session management and distributed management functions and corresponding operation management mechanism
CN1852177A (en) Testing adopter and testing tool system and detecting method
CN101046812A (en) Method of data base table recording structure and detection and its device
CN1444161A (en) Resolution method of material detailed list (BOM) data
CN1728165A (en) Multitask coordinated dispatching method in use for workflow engine
CN1845213A (en) A Method for Realizing Encryption and Decryption in SMS4 Cipher Algorithm
CN1878131A (en) Method and system for carrying out flow-control
CN1532755A (en) Joint indication information generation device and joint indication information generation method
CN1717652A (en) Data processing method and data processing program
CN101048739A (en) Multiprocessor system, synchronization control apparatus and synchronization control method
CN1532749A (en) Combined processor and combined processing method
CN101031884A (en) processor
CN1153134C (en) System and method for updating program execution file in execution

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication