博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Sharepoint Designer 2007 中加入定制的工作流动作(翻译)
阅读量:7232 次
发布时间:2019-06-29

本文共 3365 字,大约阅读时间需要 11 分钟。

原文参见:

如果使用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使用

创建一个定制的动作:

这个例子就是演示在系统日志中写入一条信息

None.gif
using
 System;
None.gif
using
 System.ComponentModel;
None.gif
using
 System.ComponentModel.Design;
None.gif
using
 System.Collections;
None.gif
using
 System.Diagnostics;
None.gif
using
 System.Drawing;
None.gif
using
 System.Workflow.ComponentModel.Compiler;
None.gif
using
 System.Workflow.ComponentModel.Serialization;
None.gif
using
 System.Workflow.ComponentModel;
None.gif
using
 System.Workflow.ComponentModel.Design;
None.gif
using
 System.Workflow.Runtime;
None.gif
using
 System.Workflow.Activities;
None.gif
using
 System.Workflow.Activities.Rules;
None.gif
None.gif
None.gif
namespace
 MyCustomActivity
ExpandedBlockStart.gif
{
InBlock.gif  
public
 partial 
class
 EventLogger: Activity
ExpandedSubBlockStart.gif  
{
InBlock.gif    
public
 EventLogger()
ExpandedSubBlockStart.gif    
{
InBlock.gif      InitializeComponent();
ExpandedSubBlockEnd.gif    }
InBlock.gif
InBlock.gif    
public
 
static
 DependencyProperty MessageProperty
InBlock.gif      
=
 System.Workflow.ComponentModel.DependencyProperty.Register(
InBlock.gif      
"
Message
"
typeof
(
string
), 
typeof
(EventLogger));
InBlock.gif    [Category(
"
MyCustomActivity
"
), Browsable(
true
)]
InBlock.gif    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
InBlock.gif    
public
 
string
 Message
ExpandedSubBlockStart.gif    
{
InBlock.gif      
get
ExpandedSubBlockStart.gif      
{
InBlock.gif        
return
 ((
string
)(
base
.GetValue(EventLogger.MessageProperty)));
ExpandedSubBlockEnd.gif      }
InBlock.gif      
set
ExpandedSubBlockStart.gif      
{
InBlock.gif        
base
.SetValue(EventLogger.MessageProperty, value);
ExpandedSubBlockEnd.gif      }
ExpandedSubBlockEnd.gif    }
InBlock.gif
InBlock.gif    
protected
 
override
 ActivityExecutionStatus
InBlock.gif      Execute(ActivityExecutionContext executionContext)
ExpandedSubBlockStart.gif    
{
InBlock.gif      
using
 (EventLog log 
=
 
new
 EventLog(
"
MyCustomActivity
"
))
ExpandedSubBlockStart.gif      
{
InBlock.gif        
try
ExpandedSubBlockStart.gif        
{
InBlock.gif          log.Source 
=
 
"
EventLogger Activity
"
;
InBlock.gif          log.WriteEntry(
this
.Message, EventLogEntryType.Information);
ExpandedSubBlockEnd.gif        }
InBlock.gif        
catch
ExpandedSubBlockStart.gif        
{
ExpandedSubBlockEnd.gif        }
ExpandedSubBlockEnd.gif      }
InBlock.gif      
return
 ActivityExecutionStatus.Closed;
ExpandedSubBlockEnd.gif    }
ExpandedSubBlockEnd.gif  }
ExpandedBlockEnd.gif}
None.gif
None.gif

这个例子中的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>
(每一个节点的意思我就不翻译了emsmile.gif,可以去查看原文,其实很简单,猜一下应该就知道了)
然后把这个文件复制到服务器(可以直接在WSS.ACTIONS中加入),再打开Sharepoint Designer的工作流设计窗口,就可以如下看到这个动作了:

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

你可能感兴趣的文章
微信小程序rpx单位
查看>>
Javascript读写CSS属性
查看>>
58.com qiyi
查看>>
ORACLE批量导入图片到BLOB字段
查看>>
OpenCl工作组
查看>>
Angular 学习笔记——$interpolate
查看>>
Javascript模块化编程之Why
查看>>
2016/4/5 对象
查看>>
[反射]通用方法 命名空间,类,对象,属性
查看>>
递归的代价
查看>>
SPOJ Problem 5699:The last digit re-visited
查看>>
selenium设置proxy、headers(phantomjs、Chrome、Firefox)
查看>>
润乾报表参数乱码问题
查看>>
谷歌提出新的字体调用方案帮助提高中文字体的加载速度
查看>>
太牛X了!神奇的故事 你猜得到开头,却猜不到结尾
查看>>
图片的三级缓存
查看>>
svm原理及opencv
查看>>
Android 自定义RadioButton的样式
查看>>
bzoj 3456 城市规划——分治FFT / 多项式求逆 / 多项式求ln
查看>>
bzoj1042硬币购物
查看>>