程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 在Sharepoint Designer 2007 中加入定制的工作流動作(翻譯)

在Sharepoint Designer 2007 中加入定制的工作流動作(翻譯)

編輯:.NET實例教程

原文參見:http://johnholliday.Net/archive/2007/03/27/Add-Your-Own-Custom-Workflow-ActivitIEs-to-SharePoint-Designer-2007.ASPx

如果使用Sharepoint Designer 2007在Sharepoint列表中創建定制的工作流,會發現它是一個強大的工具。使用內嵌的工作流設計器,不寫一行代碼就可以創建一個還可以的工作流。使用這個工具可以簡單的就像在Outlook中創建一個規則一樣創建一個工作流。

在Sharepoint Designer 2007中有很多自帶的工作流的動作,可以創建、修改列表,發送郵件,創建欄等等。但是如果想做其它的一些操作,怎麼辦呢? 比如和後台通訊,或者是執行一些高度定制的操作,怎麼辦呢?

那麼你可以擴展Sharepoint Designer 2007, 你可以在設計器中直接引用你定制的動作。開發人員可以關注於建立一個工作流動作的庫,業務分析員或管理員可以專注於在更高的層次上來使用它完成實際的工作。

WSS.ACTIONS
完成這個工作主要依靠Sharepoint Server中的一個文件WSS.ACTIONS,這個文件在目錄12\TEMPLATE\1033\Workflow(中文是2052) 下。當在Sharepoint Designer中打開或者創建一個工作流的時候,都會首先打開並讀取這個文件中的配置信息。這個文件聲明了一些可以使用的工作流,以及展現規則,條件,特殊動作等詳細信息。通過修改這個文件,可以在Sharepoint Designer中展現不同的工作流、動作。

在Sharepoint Designer中加入一個簡單的動作的步驟如下:
1、 創建一個定制的動作
2、 簽名、把這個dll加載到GAC中
3、 配置Sharepoint使他識別這個定制的動作
4、 建立一個.ACTIONS文件給Sharepoint Designer使用

創建一個定制的動作:
這個例子就是演示在系統日志中寫入一條信息


using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Diagnostics;
using System.Drawing;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.ActivitIEs;
using System.Workflow.ActivitIEs.Rules;


namespace MyCustoMactivity
{
public partial class EventLogger: Activity
{
public EventLogger()
{
InitializeComponent();
}

public static DependencyProperty MessageProperty
= System.Workflow.ComponentModel.DependencyProperty.Register(
"Message", typeof(string), typeof(EventLogger));
[Category("MyCustoMactivity"), Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string Message
{
get
{
return ((string)(base.GetValue(EventLogger.MessageProperty)));
}
set
{
base.SetValue(EventLogger.MessageProperty, value);
}


protected override ActivityExecutionStatus
Execute(ActivityExecutionContext executionContext)
{
using (EventLog log = new EventLog("MyCustoMactivity"))
{
try
{
log.Source = "EventLogger Activity";
log.WriteEntry(this.Message, EventLogEntryType.Information);
}
catch
{
}
}
return ActivityExecutionStatus.Closed;
}
}


這個例子中的Message我們可以在Sharepoint中給它賦值

注冊這個動作
首先給這個庫加入簽名(在解決方案的工程上右鍵-)屬性-〉簽名),在把它復制到GAC中(類似於配置一個WebParts)
在Sharepoint網站的Web.config中加入如下節點:
Culture=neutral, PublicKeyToken=0b97b340d4a71524">
Namespace="MyCustoMactivity" TypeName="*" Authorized="True" />

創建.ACTIONS文件
最後的步驟就是創建一個.ACTIONS文件。這是一個XML文件,你可以使用VS2005或其它XML編輯器。
以下是一個.ACTIONS文件的示例




ClassName="JohnHolliday.Workflow.EventLogger"
Assembly="JohnHolliday.Workflow.EventLoggerActivity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0b97b340d4a71524"
AppliesTo="all" Category="MyCustoMactivitIEs">









(每一個節點的意思我就不翻譯了,可以去查看原文,其實很簡單,猜一下應該就知道了)

然後把這個文件復制到服務器(可以直接在WSS.ACTIONS中加入),再打開Sharepoint Designer的工作流設計窗口,就可以如下看到這個動作了:

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