開發SharePoint中的定製流程動作

來源:互聯網
上載者:User

在上一篇文章裡面,我發布了一個SharePoint的Workflow引擎。其中提到了使用者可以根據自己的要求,自己定製需要的流程動作,並插入到流程定義檔案中。這篇文章示範了如何開發定製的流程動作:給一個指定的Email地址發送一封郵件,告知有新的報告來了。

 

開啟VS.NET,建立一個“類庫”項目,在項目中加入兩個Assembly的引用:Kaneboy.SPSWorkflow.dll和Microsoft.SharePoint.dll。

 

編寫自訂流程動作,其實就是建立一個從Kaneboy.SPSWorkflow.Actions.ActionBase繼承下來的類,並override繼承的DoAction()方法。

 

Kaneboy.SPSWorkflow.Actions.ActionBase提供了多個protected的屬性,這些屬性公開了與這個流程動作相關的一些資訊:

Web : 當前的SPS網站

List : 當前這個檔案所在的文件庫

User : 執行這個動作的使用者

File : 當前的檔案

ListItem : 當前檔案相關的清單項目

Parameter : 從流程定義檔案中傳入的參數的值,比如流程定義檔案中對於這個動作的定義是“<action ns="Tencent" prefix="st1" Assembly="”C:/SPSWorkflowActionSample.dll” Type=”SPSWorkflowActionSample.SendEmail” Parameter=”kaneboy@kaneboy.com” />”,那麼這裡的Parameter屬性值就是“kaneboy@kaneboy.com”

 

現在開始建立這個流程動作類:

public class SendEmail : Kaneboy.SPSWorkflow.Actions.ActionBase

 

然後重寫父類的DoAction()方法:

public override Microsoft.SharePoint.SPFile DoAction()

{

MailMessage mailMsg = new MailMessage();

// 郵件的發件信箱就是目前使用者的Email,這個Email是SPS網站使用者的信箱

mailMsg.From = this.User.Email;

// 郵件的收件信箱從動作參數中獲得

mailMsg.To = this.Parameter;

// 郵件的主題和本文從目前使用者和當前檔案中獲得相應資訊

mailMsg.Subject = this.User.Name + "提交了一篇新的報告:" + this.File.Name;

mailMsg.Body = mailMsg.Subject;

 

try

{

       // 這個例子假設可以在本機通過CDOSYS發送郵件

SmtpMail.SmtpServer = "127.0.0.1";

SmtpMail.Send(mailMsg);

}

finally

{

}

 

       // 除非對當前檔案做了移動操作,否則返回null即可。

return null;

}

 

編譯,得到一個dll檔案,然後將dll檔案放置到SPS伺服器的某個位置。參看這個流程定義檔案,如果我們要在報告移到部門經理報告庫後自動發送一封郵件給經理,那麼在

 

<action Assembly="" Roman?? New ?Times mso-hansi-font-family: Roman?; mso-ascii-font-family: 宋體; FONT-FAMILY: Parameter="

<Action Assembly="" Type="Kaneboy.SPSWorkflow.Actions.Move" Parameter="部門經理報告庫" />

 

的後面再添加一行:

 

<action Assembly="C:/SPSWorkflowAction

<Action Assembly="C:/SPSWorkflowActionSample.dll" Type="SPSWorkflowActionSample.SendEmail" Parameter="receiver@mail.com" />

 

Assembly屬性的值就是編譯得到的dll檔案的絕對路徑,Type屬性的值是動作類的名稱,Parameter屬性的值就是收件者的信箱。

完整的項目源碼點擊這裡下載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.