1 Teamplate中的幾個基本概念
說明:作為開始之前預備知識,首先介紹一下Teamplate中的幾個基本概念,包括Model、Process、Task、User等。
1.1 Model
Model即流程模板,是我們為一個業務流程定義的一個模板,在這個模板設計時,我們需要為它定義好所有的業務步驟(Task)、所有可能的流轉線、以及各種流轉的條件(業務規則),具體怎樣設計一個Model,請看下文的怎樣設計流程模板。
1.2 Process
Process是根據一個現有的Model創建的一個具有實際意義的工作流程,例如創建好一個采購訂單的模板以後,我們就可以在這個模板的基礎上創建一個新的采購訂單流程。
對於Model和Process對象之間的關系我們可以這麼來理解,如果把一個Model看作一個類的話,那麼Process就相當於這個類的一個實例,每個Model可以產生多個實例,一個Process從創建到走完在Model中定義好的整個流程後,直到最後結束就是這個Process的整個生命周期。
1.3 Task
$False$
Task是Model中有實際意義的每個步驟,例如一個采購訂單的Model可以分解為創建訂單-訂單審批-采購合同-倉庫收貨-財務付款這幾個Task。
1.4 User
User 對象放到這裡來講主要是因為在Teamplate本來就是一個基於人員的工作流系統,用戶權限無處不在,包括Teamplate中虛擬的每個文件夾,以及文件夾中的每個文檔包括Model、Process對象,以及Model中的每個Task都需要設置用戶權限。
Teamplate中有兩種類型的User,一種是在Teamplate中創建的用戶,另一種是從AD或者Windows本地用戶中導入的用戶,如果要在應用程序中集成Windows或者AD對用戶進行權限設置和驗證的話就需要采用後一種類型的用戶。
1 怎樣設計流程模板(Model)
說明:設計流程模板的意義主要實現將流程設計跟應用程序開發分開,根據具體業務數據實現流程自動流轉,無需在應用程序中控制流程的流轉。
1.1 FONT: 7pt ''Times New Roman''"> 流程模板的設計環境:
流程模板的設計在Teamplate的IDE環境進行,在Captaris Workflow ClIEnt工具中新建一個流程模板或者選擇已經存在的流程模板進入IDE環境。
1.2 可以在流程模板中實現的功能:
a) 設計工作流流程模板
根據業務流程的需求設置好對應的處理任務(Task),根據流程流轉的規律用鏈接線(Link)將任務進行鏈接,並在數據對象的XML對象中定義好在流程流轉過程中用於控制流程流轉的一些關鍵字段;
b) 添加流程的業務規則
在需要設置流程流轉規則的鏈接線上加上業務規則,可以使用業務規則向導(通過雙擊鏈接線可進入業務規則向導)進行業務規則配置,也可以在流程模板的代碼事件中(Ready、Complete、Execute、Failed、Overdue、Reset)直接輸入代碼;
學網,IGHT: 150%; tab-stops: list 63.55pt">c) 設置流程任務的執行權限
權限是針對Task對象設置的,選擇要設置權限的Task然後在屬性欄設置該Task的ResponsibleId屬性就可以指定這個Task的執行權限。
d) 使用Actions
在流程模板設計過程中可以使用Teamplate提供的幾個標准Actions或者Custom Actions實現一些輔助性的功能。目前Teamplate 5.0提供了BizTalk、Core、Office、SharePoint、RightFax等幾個標准Actions。在Task的事件中(Ready、Complete、Execute、Failed、Overdue、Reset)使用這些Actions提供的功能在實際應用中是相當有用的,比如當流程流轉時,自動給責任人發送郵件通知,或者當任務過期時自動Share任務等等。具體的這些Actions的用法請查看Teamplate幫助文檔的Developer Guide-Actions中的說明。同時我們可以自己開發Custom Actions來實現我們特定的需求,
Captaris公司提供了一個開發Custom Actions的SDK包,裡面有一個很詳細的例子說明怎樣開發一個Custom Actions,在5.0的安裝程序中可以找到。流程模板設計好以後,我們需要開發對應每個Task的執行功能,也就是相關的應用程序,Teamplate的Task可以是Windows Form,也可以是Web Form以及InfoPath表單或者其它的方式。因為精量項目是采用的BS構架的系統,所以本文主要就Web Form的方式做一些總結,設置Task的執行界面是在Task的DefaultForm中設置的,另外還需要設置流程模板的IIS Server以及IIS的物理路徑,這兩個參數是通過IISServerName屬性和FAMILY: KaiTi_GB2312">IISDirector以屬性來設置的,下面的說明中我們主要就用戶認證,怎樣發起一個新的流程,怎樣進行工作流的流轉這幾個問題來做一個說明。
1.1 用戶認證
Teamplate跟AD的集成認證:Teamplate中導入AD用戶後可以通過AD做集成認證,具體的方式為通過Teamplate.BLL提供的BSession對象來進行認證,采用BSession.Connect(“”, “”)方法來做用戶登錄,登錄成功後可以獲得用戶Token,下面是一段用戶登錄的代碼片斷:
Teamplate.BLL.BSession bSess = new Teamplate.BLL.BSession();
bSess.Connect("","") ;
string token = bSess.GetToken() ;
bSess.Dispose();
Token
>是加過密的一個用於用戶認證的字符串,在下文中我們可以看到怎樣來使用這個Token。1.2 新建一個流程
對於一個已經創建好的Teamplate流程模板(Model),現在我們來使用它,首先我們要新建一個流程(Process),創建一個新的工作工作流程是使用Teamplate.BLL提供的BProcess對象的Add()方法來實現的,Add方法參數說明請參考Teamplate的幫助文檔中的Workflow API Guide,下面是一段創建一個新流程的代碼片斷:
int FolderId = TeamplateLib.GetFolderId("Processes");
int ModelId = TeamplateLib.GetModelId("Purchase Order");
int ModelOwner = TeamplateLib.GetModelOwner(ModelId);
int UserId = TeamplateLib.GetUserId(username);
BProcess process = new BProcess();
process.SetSessionToken(token);
int ProcessId = process.Add(this.PONo, FolderId, ModelOwner, ModelId);
process.Load(ProcessId);
int TaskID = process.GetNextTaskID(ModelOwner,BProcess.TaskStatus.Ready);
process.UpdateTask(ProcessId,TaskID,DateTime.Today.AddDays(7),UserId,"Normal");
下面對代碼做一些說明:
前面四行代碼先不看,第5和第6行代碼,先聲明一個BProcess對象,然後對它進行">SetSessionToken,而這個Token就是前面我們登錄時獲取的那個用戶認證字符串!只有對BProcess對象設置了這個Token值後你才有權限使用Add方法新建一個流程,現在應該對Token這個對象有更深的認識了吧。