QuickFlow之動態子流程

2021-09-08 01:58:54 字數 2947 閱讀 7613

考慮以下工作流場景:

組長分配工作,指定接收人,每個接收人完成任務後組長立刻可以審批,不必等待其他組員。

build110821 版本之後,quickflow提供了childworkflow和flowchartworkflow活動,用來實現子流程。

childworkflow提供順序子流程模型,flowchartchildworkflow提供flowchart型別的子流程支援。

3.1確保安裝了build110821或之後的版本的wsp,如果在qfd工具箱中找不到childworkflow,則修改qfd目錄下的toolboxitems.txt,新增如下兩行:

quickflow.childworkflow, quickflow, version=1.0.0.0, culture=neutral, publickeytoken=ec1e0fe6e1745628

quickflow.flowchartchildworkflow, quickflow, version=1.0.0.0, culture=neutral, publickeytoken=ec1e0fe6e1745628

3.2將childworkflow活動拖入設計器,將子活動新增到childworkflow中,如果子活動的使用者分配在各個子流程是一樣的,則直接將user或users屬性繫結到工作流變數,或者設定角色名稱。

3.3如果子活動使用者在各個子流程分支中不一樣,則需要配置屬性對映:

首先建立乙個names型別的工作流變數,這個變數用來存放各個子流程分支的使用者,可以寫死或者用過ui**傳遞變數值。

4.1畫出如圖所示的流程圖

其中,組長分配工作,組員接受工作,組長審批工作都是task活動

4.2新增兩個工作流變數: groupleader, string型別,groupmembers, names型別, 為了方便測試,可以設定groupleader為乙個賬號,names為多個賬號,採用換行區分

4.3將組長分配工作和組長審批工作的user屬性繫結到groupleader

4.4選中childworkflow活動,將initalchilddata屬性繫結到groupmembers,initalchilddata的值只能繫結到names型別的變數,names變數中包含幾個值則對應會建立幾個子流程

4.6發布流程,進行測試。

屬性名屬性說明

initalchilddata

用來初始化子流程的個數,initalchilddata一般需要繫結到乙個names型別的變數,names型別實際是乙個namecollection的字串集合,集合的元素個數決定了子流程的個數

子流程活動屬性對映,設定對映後,childworkflow自動將子流程的屬性設定為對應names集合中的值

即:第乙個子流程對應names集合的第乙個元素,第二個子流程對應names集合的第二個元素

executiontype

控制子流程是並行一次建立還是序列乙個個建立

tasktitleformat

可以控制子流程任務的標題格式,模式為.,  表示流程順序號,表示任務原來的名稱, 即tasktitle屬性的值

competecondition

控制childworkflow活動何時完成,若指定了competecondition,則每個子流程完成後會計算competecondition的值,如果返回true,無論其他流程分支有無完成,活動都會結束,未完成的任務被取消

6.1 flowchartchildworkflow的屬性跟childworkflow完全一樣

6.2 用flowchartchildworkflow時,不必(也不能)拖入start活動,第乙個拖入的活動即為 起始活動。

6.3若要實現子流程結束後統一審批,可以部分打回的效果,則可以在統一審批的時候控制names變數的值,來控制打回給那些人。

6.5 如果子流程需要會簽,則採用multitask活動,將其users屬性對映到names變數,然後控制names變數值每行多個賬號,如下:

dc\user1,dc\user2

dc\user3,dc\user4

6.7 不要在childworkflow之外的規則**中取子流程中活動的屬性,比如taskoutcome,因為動態建立的原因,這些屬性可能取不到,或者只能取到最後完成的子流程產生的資料。 

6.8 如果在childworkflow之內的規則**中獲取內部子活動的狀態,因為quickflow內部有活動屬性同步的機制,可以取到當前最新的資料,普通的併發條件下作者做過測試,但不能保證大併發條件下沒有問題

6.9 當前版本不允許跨容器拖放移動活動,即:不能將乙個活動從childworkflow內部拖拽到其他外部活動內部。

6.10 如果需要在childworkflow後面獲取到子流程某個任務活動的outcome做判斷如何做?

如果子流程內部是task,不支援直接獲取task.outcome,必須通過其他方法,比如用額外的工作流變數+ui**實現

注意:繫結時,直接點outcomes旁邊那個圖示,然後選擇繫結到新變數。因為工作流的變數管理中不支援建立outcomecollection型別的變數。

動態規劃演算法之公共子串行

description 1808 公共子串行 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述我們稱序列z z1,z2,zk 是序列x x1,x2,xm 的子串行當且僅當存在 嚴格上公升 的序列 i1,i2,ik 使得對j 1,2,k,有xij zj。比如z a,b...

動態規劃之LIS(最長上公升子串行)

給定n個數,求這n個數的最長上公升子串行的長度。樣例輸入 72 5 3 4 1 7 6 樣例輸出 4什麼是最長上公升子串行?就是給你乙個序列,請你在其中求出一段不斷嚴格上公升的部分,它不一定要連續。就像這樣 2,3,4,7和2,3,4,6就是序列2 5 3 4 1 7 6的兩種選取方案。最長的長度是...

小白高階之動態規劃 最長公共子串行

問題描述 給定兩個序列x x1,x2,xm 和y y1,y2,yn z z1,z2,zx 為x 和y的任意最長公共子串行 lcs c i,j 表示xi和yj的lcs的長度,b i,j 指向表項對應計算c i,j 時所選的子問題的最優解。子問題分解如下 1 若xm yn,則zk xm yn且zk 1是...