用SPD设计无代码工作流比较简单实用,这里就来探讨一下如何用SPD设计以下流程的工作流。

要求:1.部门内部流程分为两级:办事员审批、部门经理审批。

2.如果审批不通过,下次再次开启工作流,则通过的部门不需要再进行审批。

3.可将审核情况的数据通过接口发送邮件到sharepoint外部。

分析:1.企业信息录入系统,启动工作流,可在Sharepoint中建立list工作流,将其启动模式设置为添加新Item时自动启动。

2. 四个部门并行审核,部门内部串行审核(办事员--部门经理),部门审核全部通过之后副总再审核。

3.通过的部门以后工作流启动不需要再次进行审核,通知只需要发送到审核未通过的部门,这里就需要将审批流程的参与者以参数的形式来表示,方便控制。

4.外部邮件的发送我们采用编写代码来为Sharepoint添加这个Feature。

分析完毕,我们开始看看大概步骤:

1.列表建立:

企业申请表列:

这里有3张列表,第一张企业申请表记录企业内容,同时建立了4个字段来保存各部门审核情况,方便下次进行工作流时进行参与者参数设定。

任务列表是自动建立的,用来让参与者接受相应任务。

邮件内容列表用来保存要发送的邮件内容。

2.工作流编写:

(1)设置参与者参数:

四个启动参数:first,second,third,forth代表了参与人员。

@10表示 部门办事员通过,部门经理没通过。@11表示 部门全部通过。 以此类推。

(2)部门审批:

这里建立了四个并行运行的各部门审批流程,每一个审批流程又是串行执行的。为了控制相应的值的变化,我们需要在审批流程中相应地方加上一些操作,以方便改变参数,或者写邮件内容,向外部发送邮件。

例如发送邮件:我需要在审批批准或者拒绝之后向外部发送邮件,则我应该先在审批拒绝或者批准之后向 邮件内容列表 添加一条内容,同时利用Sharepoint EventHandler, ItemAdded事件,在添加完成之后向外部发送邮件内容。下面看看我们是在哪里向邮件内容添加一条数据的。

进入一个审批流程--更改单个任务的行为:

如果@11,则表示该部门都通过审批,则为邮件内容表创建新项。

为了灵活控制审批工作流,还有很多地方需要设置,这里我就不一一说明,需要稍微学习一下审批流程如何工作的才能灵活的在各个地方加上需要的操作。  ”更改单个任务行为“ 表示 把串行的”参与人“分成一个一个单个任务,”更改总体任务流程行为“表示控制整个审批流程。

(3)最后部门副总审批。

3.编写EventHandler发送邮件:

打开VS--建立Sharepoint空白网站--添加项--EventReciever--建立ItemAdded。

在生成的CS文件中编写代码,最后部署到Sharepoint网站。

Code:

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;
namespace SharePointProject4.EventReceiver1
{
/// <summary>
/// 列表项事件
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// 已添加项.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
string mailTitle = "";
string mailContent = "";
string address = "";
if (properties.ListTitle == "邮件内容")
{
SPListItem item = properties.ListItem;
mailTitle = item["标题"].ToString();
mailContent = item["邮件内容"].ToString();
address = item["邮件地址"].ToString();
}
SendEmail(mailTitle, mailContent, address);
}
public void SendEmail(string title, string content, string address)
{
try
{
Encoding encoding = Encoding.GetEncoding(936);
MailMessage Message = new MailMessage(
//from
new MailAddress("117738414@qq.com", "发件人姓名", encoding),
//to
new MailAddress(address));
Message.SubjectEncoding = encoding;
Message.Subject = title;
Message.BodyEncoding = encoding;
Message.Body = content;
//Message.Attachments.Add(new Attachment(null));
SmtpClient smtpClient = new SmtpClient("smtp.qq.com");
smtpClient.Credentials = new NetworkCredential("2313626895", "password");
smtpClient.Timeout = 20000;
smtpClient.Send(Message);
}
catch (Exception ex)
{
}
}
}
}

大致步骤是这样,中间有些细节没写出来。

还有在做的时候发现一个问题,用SPD建审批工作流的时候,一个工作流里面只能有5个审批流程,多了一个就会报错。不知道什么原因。
我上面刚好用到5个,没有报错。

SharePoint Designer2010 设计多级审批工作流。相关推荐

  1. SharePoint 2013 实现多级审批工作流

    上一篇介绍了安装和配置SharePoint 2013 Workflow,这一篇将用SharePoint 2013 Designer Workflow来实现一个多级审批工作流. 审批工作流介绍 这个De ...

  2. asp.net中的报销多级审批工作流 (状态机版本)

    asp.net中的报销多级审批工作流 (状态机版本) 上篇asp.net中的报销多级审批工作流 ,提到参考了网上一个具体的项目,项目中用状态机工作流完成,基于学习的原因,我采用顺序工作流,事件驱动方式 ...

  3. asp.net中的报销多级审批工作流

    最近正在学习工作流,正好从网上搜索到一个 Asp.net工作流(WWF+LINQ)的例子,之前学习MOSS时接触过工作流,不过那是针对MOSS的工作流,我一直从事B/S架构开发,知道工作流可用于很多环 ...

  4. 审批工作流系列教程 前言

    开始之前请先问自己几个问题? 1.何为审批工作流? 2.审批工作流适用哪些应用场景? 3.如何设计一个审批工作流? 后续我会陆续讲解相关章节,希望可以帮到您.

  5. 移动审批工作流设计与实现

    <p style="text-indent: 2em; margin: 1em 0px; color: #000;">移动审批,通过手机方便快捷地登陆企业内部网及互联网 ...

  6. php多级审批功能,工作流定义:动态多级审批的应用场景?

    功能说明 动态多级审批就是在流程开始之前,指定审批的级数和每一级的参与者,这样就可以动态设置审批的人员和审批的级数了. 应用场景 动态多级审批一般应用流程比较复杂,流程运行的时候需要指定一个流程的参与 ...

  7. Workflow Core + asp.net core 5.0 实现简单审批工作流

    我们知道企业业务系统到处都可以审批工作流的,但也很少有像OA系统一样复杂多级多条件的审批工作流需要设计,所以我们需要一个轻量级的容易上手的workflow框架,通过GitHub,我发现danielge ...

  8. Visio 2016 和 SharePoint Designer 2013 来创建工作流并将其发布到 SharePoint 2016 网站而无需任何代码

    本文章内容非本人所写,转载地址 https://msdn.microsoft.com/zh-cn/library/office/jj163272.aspx 抓图是使用Visio 2016 验证. 使用 ...

  9. Java项目(一)--MyBatis实现OA系统项目实战(7)--开发多级审批流程

    开发多级审批流程 请假流程 设计约束 每一个请假单对应一个审批流程. 请假单创建后,按业务规则生成部门经理.总经理审批任务. 审批任务的经办人只能审批自己辖区内的请假申请. 所有审批任务"通 ...

最新文章

  1. CSS+DIV-制作实用菜单
  2. [翻译] OrigamiEngine
  3. 【任务脚本】双十一将至,任务脚本预热,OrangeJs基于autojs全自动程序,向大神致敬...
  4. 八大排序算法图文讲解
  5. STL总结 (C++)
  6. C#中不失真生成缩略图
  7. gulpfile.js不断更新中...
  8. 《算法竞赛入门经典》 第二章 循环结构程序设计 习题
  9. Ubuntu18.04安装openjdk-7-jdk
  10. CSS类,ID,标签和伪类详细说明
  11. python中url是什么意思_Python中url标签使用详解
  12. 在页面上动态显示实时时间
  13. 京东java面试流程_java京东社招面试经历
  14. 天翼网关未欠费有信号且不能上网解决办法
  15. mybatis order by concat用法
  16. uniapp微信登陆
  17. PE格式之千里追踪输入表
  18. Oracle 11G安装出错(Oracle执行先决条件检查失败)
  19. 【优化求解】基于未来搜索算法FSA求解最优目标matlab代码
  20. NOIP2016提高组 第一天第二题 天天爱跑步running 题解

热门文章

  1. iOS:iOS 6.x越狱(evasi0n)
  2. 服务器虚拟机 哪个好,虚拟机 VMWare 对比 VMlite 用那个好?
  3. 利用Selenium爬取亚马逊商品review
  4. 将一个文件夹中的所有图片移到另外一个文件夹中,包含二级文件夹中的
  5. 打开旧的图纸属性窗口
  6. 电力防垂钓闪光警示牌
  7. 发送自动邮件时Could not connect to SMTP host: 10.1.1.195, port: 25;报错的解决方法
  8. Ubuntu20.04系统安装后,如何配置?
  9. 竖向打印二叉树、avl树
  10. PS CS2时,到到“正在读取文本全球资源”就开始没有响应了