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

简介:

原文参见: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中加入如下节点:
<authorizedType Assembly="JohnHolliday.Workflow.EventLoggerActivity, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=0b97b340d4a71524"
      Namespace="MyCustomActivity" TypeName="*" Authorized="True" />

创建.ACTIONS文件
最后的步骤就是创建一个.ACTIONS文件。这是一个XML文件,你可以使用VS2005或其它XML编辑器。
以下是一个.ACTIONS文件的示例
<?xml version="1.0" encoding="utf-8" ?>
<WorkflowInfo>
<Actions Sequential="then" Parallel="and">
   <Action Name="Write Message To Event Log"
      ClassName="JohnHolliday.Workflow.EventLogger"
 Assembly="JohnHolliday.Workflow.EventLoggerActivity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0b97b340d4a71524"
      AppliesTo="all" Category="MyCustomActivities">
   <RuleDesigner Sentence="Write '%1' to the event log">
      <FieldBind Field="Message" DesignerType="TextArea" Id="1"/>
   </RuleDesigner>
   <Parameters>
      <Parameter Name="Message" Type="System.String, mscorlib" Direction="In"/>
   </Parameters>
</Action>
</Actions>
</WorkflowInfo>
(每一个节点的意思我就不翻译了,可以去查看原文,其实很简单,猜一下应该就知道了)
然后把这个文件复制到服务器(可以直接在WSS.ACTIONS中加入),再打开Sharepoint Designer的工作流设计窗口,就可以如下看到这个动作了:



    本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/04/20/721340.html,如需转载请自行联系原作者


相关文章
Altium Designer导出Gerber文件的步骤
在设计好PCB之后就需要发出去制作,一般我们都会选择发送Gerber文件。当然也可以发送PCB原文件,只不过这样没有保密性,这个根据自己的实际情况来选择。如果PCB对于保密性没有要求,自己对工艺又不是很了解的话,为了方便可以直接发送PCB原文件。这里还是建议大家导出Gerber文件做比较好,下面我们就来看一下Altium Designer如何导出Gerber文件。
1083 0
|
机器学习/深度学习 SQL 分布式计算
PAI-Designer中的EasyRec组件和预制推荐模板介绍
EasyRec是一个配置化的企业级推荐算法框架(https://github.com/alibaba/EasyRec),是阿里云PAI平台自研的适用于推荐广告、搜索场景的深度学习算法库,它实现了多种业界常用的模型,包括DSSM、MIND召回模型,DeepFM、多塔、DIN排序模型,还有ESMM、DBMTL、MMoE等多目标排序模型。 本文介绍EasyRec的PAI-Designer组件和预制模板。
435 1
|
容器 数据可视化 Go
SharePoint 2013 开发——SharePoint Designer 2013工作流
博客地址:http://blog.csdn.net/FoxDave SharePoint Designer 2013为开发者和高级用户提供了两种创建定制工作流的模式: 基于文本的设计器——即我们一直以来使用的方式。
1126 0
|
Web App开发
SharePoint自动化系列——通过Coded UI录制脚本自动化创建SharePoint Designer Reusable Workflow
Coded UI非常好,我开始还在想,怎么样能让一个通过SharePoint Designer创建的Workflow publish三百五十次?想不到一个好的方法,也不知道SharePoint Designer里那个publish按钮调用的是什么方法,想来想去还是用Coded UI尝试了一下,发现也挺好,在资源允许的情况下,就这样完成了SPD Workflow的自动化创建: 1.
1026 0
|
测试技术
SharePoint 2013 工作流之使用Designer配置示例篇
原文:SharePoint 2013 工作流之使用Designer配置示例篇   在SharePoint 2013中,支持SharePoint Designer 2013(以下简称SPD)配置简单的工作流,完成我们的业务需要。
1109 0
|
数据可视化
SharePoint 2013 工作流设计之Designer 使用“可视化视图”
原文:SharePoint 2013 工作流设计之Designer 使用“可视化视图”   SharePoint 2013增强了工作流功能,而Designer里面也添加了可视化设计视图,也就是类似Visio的设计视图(需要Visio 2013支持),下面我们简单介绍下,在可视化视图下,使用工作流。
1092 0
SharePoint 2013 工作流平台的选项不可用
原文:SharePoint 2013 工作流平台的选项不可用 问题描述   当我想创建一个SharePoint 2013 工作流的时候,打开SharePoint 2013 Designer(一下简称SPD),发现没有SharePoint 2013 工作流的选项。
1187 0