Gemini.Workflow 雙子工做流,是一套功能強大,使用簡單的工做流,簡稱雙子流,目前配套集成在Aries框架中。後端
下面介紹本篇教程:定義流程:流程節點、遷移條件參數配置。app
先介紹這個,是由於普通節點,擁有全部的配置,其它類型的節點(會根據類型,隱藏或減小相應的配置)框架
因此介紹這個,就等於把全部的可配置項都介紹完了。ide
點擊不一樣的地方,右側會出現不一樣的配置項。 spa
下面看普通節點的配置項:設計
步驟名稱(這個是能夠更改的,在表單上若是想經過API控制節點,通常也是經過節點名稱控制,固然ID也能夠)3d
其它都是默認的便可。code
能夠指定多種形式的參與者類型。blog
上下級部門角色參與者:這個通常配合自循環節點使用。繼承
若是選擇的是角色類型:還能夠指定是否進一步根據組織部門進行過濾。
組織部門的過濾類型:
在表單頁,也能夠由系統提供的表單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; } }
當下一節點的聚合條件爲:條件聚合時,遷移條件發生做用。
一、指定是否必參與遷移:該分支是否必須到達。
二、分組名:同名即爲一組,同時約束同一組最少到達分支數(若是同一組,即設置了不一樣的到達分支數,默認取第一個)
三、備註,用於描述遷移線的做用,(若是是和業務相關,則由業務表單控制)
如:
上面的流程中,會根據業務條件決定不一樣的分支,流程圖上只做備註,具體由業務表單控制,示例表單中的代碼以下:
<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>
流程設計好後,只須要點一下保存: