程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Teamplate 工作流開發技術總結(1)

Teamplate 工作流開發技術總結(1)

編輯:.NET實例教程
轉自 http://www.cnblogs.com/nehc/archive/2007/11/16/961417.Html

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的安裝程序中可以找到。
1           應用程序中嵌入相應流程控制處理

流程模板設計好以後,我們需要開發對應每個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這個對象有更深的認識了吧。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved