簡介:
Gemini.Workflow 雙子工作流,是一套功能強大,使用簡單的工作流,簡稱雙子流,目前配套集成在Aries框架中。
下面介紹本篇教程:定義流程:流程節點、遷移條件參數配置。
一、普通節點介紹:
先介紹這個,是因為普通節點,擁有所有的配置,其它類型的節點(會根據類型,隱藏或減少相應的配置)
所以介紹這個,就等於把所有的可配置項都介紹完了。
點擊不同的地方,右側會出現不同的配置項。
下面看普通節點的配置項:
流程圖屬性:
步驟名稱(這個是可以更改的,在表單上如果想通過API控制節點,一般也是通過節點名稱控制,當然ID也可以)
其它都是默認的即可。
參與者屬性
響應方式:(即有多個人可以參與待辦)
參與者設置,點擊可以設置:
可以指定多種形式的參與者類型。
上下級部門角色參與者:這個一般配合自循環節點使用。
如果選擇的是角色類型:還可以指定是否進一步根據組織部門進行過濾。
組織部門的過濾類型:
在表單頁,也可以由系統提供的表單API控制參與者。
退回方式:
可以指定退回的類型。
當退回方式,選擇為:任意歷史可退步驟時,
默認是任意歷史,如果要限制在某幾個節點:可以在下面任意歷史可退步驟指定節點名稱,多個用逗號分隔。
開關屬性:
除了此處,也需要總開關(流程圖屬性)已打開。
路由屬性
一般來說,路由屬性是【發散網關節點、聚合網關節點】的專屬屬性。
不過所有節點都集成這個屬性,所以上篇對節點的介紹,才有那么一句話:
發散類型:
可以指定只選擇一條路線、任意路線、全部路線。
當指定為全選時,即為特殊的會簽類型(以前有會簽分支,去掉了,簡約才是硬道理)
聚合類型:
當類型為條件聚合時,由遷移條件決定。
傳閱方式:
當傳閱類型為自動傳閱時,可以設置自動傳閱的用戶。
內嵌子流程設置:
點擊,在彈出的窗口中,選擇子流程即可。
外嵌子流程設置:
配置名稱為:類全名,程序集名稱
代碼類繼承自:ISubWorflow,示例代碼:
public class ISubWorkflowDemo : ISubWorkflow { string appID = "DB"; public string Start(Choice parentChoice) { //Gemini.Workflow //后端提供的API代碼,以WF開頭 //啟動新的流程 WorkflowContext startContext = WF.Context.GetOnNoInstance(appID);//啟動HX定義的流程 //指定新的流程的父流程ID(及所在的節點實例ID) startContext.Instance.MainInstanceID = parentChoice.Context.InstanceID.ToString(); startContext.Instance.MainActivityInstanceID = parentChoice.Current.ActivityInstance.ActivityInstanceID.ToString();// startContext.Instance.InstanceTitle = "哥要啟動一個新的工單了,快去待辦看看吧!"; Choice choice = new Choice() { Command = Command.Start, Context = startContext }; choice.Current.UserList.Add(WF.User.Current);//發送給當前用戶好了。 if (WF.Run.Execute(choice)) { //啟動后,返回新的工作流實例ID。 return startContext.Instance.InstanceID.ToString(); } return ""; } public bool Invalid(ActivityInstance parentActivityInstance) { //回收子流程 WorkflowContext context = WF.Context.GetOnNoInstance(appID); context.Opinion = "父流程回收,子流程要作廢了!"; Choice choice = new Choice() { Command = Command.Invalid, Context = context }; if (WF.Run.Execute(choice)) { return true; } return false; } }
遷移條件:
當下一節點的聚合條件為:條件聚合時,遷移條件發生作用。
1、指定是否必參與遷移:該分支是否必須到達。
2、分組名:同名即為一組,同時約束同一組最少到達分支數(如果同一組,即設置了不同的到達分支數,默認取第一個)
3、備注,用於描述遷移線的作用,(如果是和業務相關,則由業務表單控制)
如:
上面的流程中,會根據業務條件決定不同的分支,流程圖上只作備注,具體由業務表單控制,示例表單中的代碼如下:
<script defer="defer"> //控制分支條件 WF.Button.Submit.onBeforeExecute = function () { if (WF.Context.appID == "DC") { if (parseInt($("#Amount").val()) > 50000) { WF.Actor.hideActivity("可選:B"); } else { //WF.Actor.Internal. WF.Actor.hideActivity("可選:A"); //同時控件節點B的用戶修改為指定的名稱。 WF.Actor.setActivityUser("可選:B", "admin"); } } } </script>
保存流程:
流程設計好后,只需要點一下保存:
演示地址: