一、准备条件

系统:Windows  Server2008,Windows Server 2008 R2;

软件:

1、SharePoint Server 2010 Beta:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=77c30c6c-47fc-416d-88e7-8122534b3f37

2、Microsoft Visual Studio 2010 Ultimate Beta :http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=dc333ac8-596d-41e3-ba6c-84264e761b81

3、Microsoft® SQL Server® 2008 Enterprise Evaluation: Trial Experience for Developers:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=6b10c7c1-4f97-42c4-9362-58d4d088cd38

4、Office 2010 beta

二、主体

阅读该Demo需要有moss 2007 开发WF 的基础。下载代码

2010 相对于2007创建workflow简单了许多,2010已经将关联任务的内容类型内置到Workflow的Elements.xml文件中,初始化表单和关联表单都可以直接创建。

1、表单

初始化表单:

2010中初始化表单已经将创建流程实例的代码自动生成,只需在 GetInitiationData()方法中将初始化表单的数据返回即可。

任务表单:

在工程中添加新项选择应用程序模板,创建任务表单.将表单与关联任务的内容类型连续起来。在任务的内容类型的节点中ContentType〉XmlDocuments>XmlDocument〉FormUrls〉Edit添加任务表单页面。通过Workflow节点的属性TaskListContentTypeId与流程关联。

下列以创建任务表单为例,如下图:

新建项目:

选择模板,SharePoint下面的2010,在选择2010模板下的Application Page。

2、流程设计器

打开vs2010,创建顺序工作流:

如下图:

3、代码

初始化表单GetInitiationData()的代码:

      //Build the AssociationData XML

StringBuilder associtionDataXML = new StringBuilder();

associtionDataXML.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");

associtionDataXML.AppendLine("<workflow>");

associtionDataXML.AppendLine("<" + this.txtApprover.ID + ">");

associtionDataXML.AppendLine(this.txtApprover.Text);

associtionDataXML.AppendLine("</" + this.txtApprover.ID + ">");

associtionDataXML.AppendLine("</workflow>");

//End of Build the AssociationData XML

return associtionDataXML.ToString();

任务表单的代码:

protected void btnReject_Click(object sender, EventArgs e)

{

Hashtable htData = new Hashtable();

htData["TaskStatus"] = "Completed";

htData["TaskData"] = "Reject";

SPListItem _taskItem = this.Web.Lists[new Guid(this.Request.QueryString["List"])].GetItemById(Convert.ToInt32(this.Request.QueryString["ID"]));

SPWorkflowTask.AlterTask(_taskItem, htData, true);

Guid workflowInstanceId = new Guid(_taskItem["WorkflowInstanceID"].ToString());

_workflowInstance = new SPWorkflow(this.Web, workflowInstanceId);

this.RedirectToListDefaultView();

}

protected void btnApproved_Click(object sender, EventArgs e)

{

Hashtable htData = new Hashtable();

htData["TaskStatus"] = "Completed";

htData["TaskData"] = "Approved";

SPListItem _taskItem = this.Web.Lists[new Guid(this.Request.QueryString["List"])].GetItemById(Convert.ToInt32(this.Request.QueryString["ID"]));

SPWorkflowTask.AlterTask(_taskItem, htData, true);

Guid workflowInstanceId = new Guid(_taskItem["WorkflowInstanceID"].ToString());

_workflowInstance = new SPWorkflow(this.Web, workflowInstanceId);

this.RedirectToListDefaultView();

}

/// <summary>

/// 跳转到列表默认视图页面

/// </summary>

protected void RedirectToListDefaultView()

{

SPUtility.Redirect(this.WorkflowInstance.TaskList.DefaultViewUrl, SPRedirectFlags.UseSource, this.Context);

}

流程设计器活动的代码

活动的属性:

#region Properties
        public Guid workflowId = default(System.Guid);
        public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
        public Guid TaskId = default(System.Guid);
        public SPWorkflowTaskProperties TaskProperties = new Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties();
        public String TaskOutcome = default(System.String);

private string _approver;
        private string _approvalResult;
        #endregion

启动流程:

private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
        {
            workflowId = workflowProperties.WorkflowId;

if (!string.IsNullOrEmpty(workflowProperties.InitiationData))
            {
                XmlDocument AssociationDataXML = new XmlDocument();
                AssociationDataXML.LoadXml(workflowProperties.InitiationData);
                _approver = AssociationDataXML.FirstChild.NextSibling.InnerText.ToString().Trim();
            }
        }

创建任务:

private void createTask1_MethodInvoking(object sender, EventArgs e)
        {
            TaskId = Guid.NewGuid();
            TaskProperties.AssignedTo = _approver;
            TaskProperties.Title = "Test Title";
        }

审批任务:

private void onTaskChanged1_Invoked(object sender, ExternalDataEventArgs e)
        {
            _approvalResult = TaskProperties.ExtendedProperties["TaskData"].ToString();

if (_approvalResult == "Approved")
            {
                this.TaskOutcome = "同意!";
            }
            else if (_approvalResult == "Reject")
            {
                this.TaskOutcome = "拒绝!";
            }
        }
    }

4、 xml文件

Workflow的Elements.xml的任务内容类型节点ContentType

Workflow的Elements.xml的流程Workflow节点

5、效果图

打开SharePoint站点,给Test文档库添加工作流;

Test 文档库

工作流设置

添加工作流

选择该Demo的工作流模板

创建wf工作流

启动流程

选择创建好的流程模板

链接到初始化表单,填写一级审批者;

流程已启动并给管理员分配任务,点击进行中,进入流程管理页面;

流程管理页面,任务列表中有未启动的任务。

编辑任务

弹出任务审批表单,审批流程。

审批完成

转载于:https://www.cnblogs.com/sumh/archive/2009/12/13/1623220.html

sharepoint 2010 beta Workflow相关推荐

  1. sharepoint 2010学习资源汇总

    上周五微软宣布 SharePoint 2010 RTM 发布了,这两天一直等着邮件,今天(美国太平洋时间22日上午10时,北京时间23日凌晨1时),MSDN 和 TechNet 订阅用户终于可以下载了 ...

  2. 体验:Office SharePoint foundation 2010 Beta版安装使用

    近期Microsoft发布了Office 2010系列的Beta版软件.在此将一些实验.测试报告发出来来,供大家体验.本篇介绍Office SharePoint foundation的安装记录. Sh ...

  3. SharePoint 2010中的客户端AJAX应用——ASP.NET AJAX模板

    WCF Data Services是SharePoint 2010中一个极具吸引力的新特性.然而,因为它的强大,直接对其进行编程仍然会有点痛苦.幸运的是,一个新的相关技术 -- ASP.Net AJA ...

  4. sharepoint 2010 内容类型

    SharePoint 2010  在上一版本的基础上进一步发展了内容类型对象.本系列作为一个专题,试图对其进行一个深入的剖析.方便大家在自己的自定义解决方案中对其进行定制. 内容类型的定义 Share ...

  5. SharePoint 2010 沙盒解决方案以及 Visual Studio 2010 模板

    SharePoint 2010中的沙盒解决方案为SharePoint开发提供了很好的支持.我们在不做场部署的情况下,可以使用很多伟大的功能.但是,沙盒解决方案也有它自有的限制,不是所有的项目模板(pr ...

  6. Introducing Document Management in SharePoint 2010 介绍SharePoint 2010中的文档管理

    Introducing Document Management in SharePoint 2010 介绍SharePoint 2010中的文档管理 This time I want to talk ...

  7. SharePoint 2010: 设计BCS工作流

    一起使用SharePoint工作流和BCS可以实现很多复杂的业务场景. 为什么使用BCS工作流? 比如,有一个简单的费用报销流程,客户希望:仅当总费用超过某个限额时,工作流会把费用报告发送给审批者:如 ...

  8. SharePoint 2010 初体验(二)搭建一个简单的三态工作流

    SharePoint 2010对工作流的创建与使用提供了友好的支持,我们有四种选择: SharePoint 2010:脱箱(Out-Of-The-Box)工作流 Visio 2010:可视化工作流,可 ...

  9. 【SharePoint 2010】将Sharepoint Server 2010部署到WINDOWS 7

    1.部署-安装环境: 在这里先说明一下:2007的版本中我们只能装在WINDOWS 2003 SERVER 上,这种限制在2010被彻底打破了.我们可以将它安装在VISTA/WINDOWS 7/SER ...

最新文章

  1. 8月12笔记-安卓文件扫描
  2. 机械爪的带有压力反馈的控制实验
  3. 关于树论【LCA树上倍增算法】
  4. python第三方库有哪些常用的、请列举15个-阿里巴巴Python开发工程师面试题
  5. 一场面试,用20秒介绍自己顺便教训了领导
  6. linux lvs公网ip,Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive...
  7. 怎么修剪_幸福树怎么修剪——武汉花卉租摆
  8. C语言课后习题(32)
  9. 50-000-040-配置-MAC 安装MySQL my.cnf配置文件
  10. 吃豆人动态模型创建---canvas
  11. 抛物型方程向前差分matlab,(整理)微分方程数值解(学生复习题).
  12. 3dmax人物表情动画、骨骼动画、半透明材质导出FBX文件、导入unity的方法
  13. 王树尧老师运筹学课程笔记 07 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)
  14. ArcGIS地形图地形标注详解(附练习数据下载)
  15. html怎么导航栏中加边框,html – 使用CSS在导航栏中显示边框三角形
  16. 入门 HTML JavaScript Jquery学习回顾 有小案例
  17. 云服务器Docker安装ElasticSearch却启动不了怎么办?
  18. elasticsearch7.1.1入门之集群的基础配置
  19. 常州工学院Java作业03
  20. 亲属卡额度是什么意思_卡神养卡15条心得!教你如何卡奴变卡神!

热门文章

  1. 层展开/关闭 - 运动缓冲效果
  2. jsx怎么往js里传参数_实践Vue 3.0做JSX(TSX)风格的组件开发
  3. mysql binlog_checksum_【原创】研发应该懂的binlog知识(下)
  4. linux管理用户组,技术|如何在 Linux 系统中通过用户组来管理用户
  5. 把脉Linux上USB数据流
  6. 使用此代码可以解决python包导入路径问题?
  7. LSTM训练手写数字识别
  8. JavaScript9x9乘法表
  9. Istio如何使用相同的端口访问网格外服务
  10. Kubernetes搭建Zookeeper和Kafka集群