• 开发SharePoint中的定制流程动作


    上一篇文章里面,我发布了一个SharePointWorkflow引擎。其中提到了用户可以根据自己的要求,自己定制需要的流程动作,并插入到流程定义文件中。这篇文章演示了如何开发定制的流程动作:给一个指定的Email地址发送一封邮件,告知有新的报告来了

     

    打开VS.NET,新建一个“类库”项目,在项目中加入两个Assembly的引用:Kaneboy.SPSWorkflow.dllMicrosoft.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,这个EmailSPS站点用户的信箱

    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属性的值就是收件人的信箱。

    完整的项目源码点击这里下载。

  • 相关阅读:
    兼容性处理
    H5 IOS 虚拟键盘不回落的问题
    git 的版本控制
    vue-devtools工具的安装
    linux下安装mysql
    Python安装pip3常见问题
    linux下安装python3
    接口_注册接口
    接口_简单get接口_第一个接口
    Python学习笔记_Redis
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2436761.html
Copyright © 2020-2023  润新知