sharepoint 2010 beta Workflow
一、准备条件
系统: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相关推荐
- sharepoint 2010学习资源汇总
上周五微软宣布 SharePoint 2010 RTM 发布了,这两天一直等着邮件,今天(美国太平洋时间22日上午10时,北京时间23日凌晨1时),MSDN 和 TechNet 订阅用户终于可以下载了 ...
- 体验:Office SharePoint foundation 2010 Beta版安装使用
近期Microsoft发布了Office 2010系列的Beta版软件.在此将一些实验.测试报告发出来来,供大家体验.本篇介绍Office SharePoint foundation的安装记录. Sh ...
- SharePoint 2010中的客户端AJAX应用——ASP.NET AJAX模板
WCF Data Services是SharePoint 2010中一个极具吸引力的新特性.然而,因为它的强大,直接对其进行编程仍然会有点痛苦.幸运的是,一个新的相关技术 -- ASP.Net AJA ...
- sharepoint 2010 内容类型
SharePoint 2010 在上一版本的基础上进一步发展了内容类型对象.本系列作为一个专题,试图对其进行一个深入的剖析.方便大家在自己的自定义解决方案中对其进行定制. 内容类型的定义 Share ...
- SharePoint 2010 沙盒解决方案以及 Visual Studio 2010 模板
SharePoint 2010中的沙盒解决方案为SharePoint开发提供了很好的支持.我们在不做场部署的情况下,可以使用很多伟大的功能.但是,沙盒解决方案也有它自有的限制,不是所有的项目模板(pr ...
- Introducing Document Management in SharePoint 2010 介绍SharePoint 2010中的文档管理
Introducing Document Management in SharePoint 2010 介绍SharePoint 2010中的文档管理 This time I want to talk ...
- SharePoint 2010: 设计BCS工作流
一起使用SharePoint工作流和BCS可以实现很多复杂的业务场景. 为什么使用BCS工作流? 比如,有一个简单的费用报销流程,客户希望:仅当总费用超过某个限额时,工作流会把费用报告发送给审批者:如 ...
- SharePoint 2010 初体验(二)搭建一个简单的三态工作流
SharePoint 2010对工作流的创建与使用提供了友好的支持,我们有四种选择: SharePoint 2010:脱箱(Out-Of-The-Box)工作流 Visio 2010:可视化工作流,可 ...
- 【SharePoint 2010】将Sharepoint Server 2010部署到WINDOWS 7
1.部署-安装环境: 在这里先说明一下:2007的版本中我们只能装在WINDOWS 2003 SERVER 上,这种限制在2010被彻底打破了.我们可以将它安装在VISTA/WINDOWS 7/SER ...
最新文章
- 8月12笔记-安卓文件扫描
- 机械爪的带有压力反馈的控制实验
- 关于树论【LCA树上倍增算法】
- python第三方库有哪些常用的、请列举15个-阿里巴巴Python开发工程师面试题
- 一场面试,用20秒介绍自己顺便教训了领导
- linux lvs公网ip,Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive...
- 怎么修剪_幸福树怎么修剪——武汉花卉租摆
- C语言课后习题(32)
- 50-000-040-配置-MAC 安装MySQL my.cnf配置文件
- 吃豆人动态模型创建---canvas
- 抛物型方程向前差分matlab,(整理)微分方程数值解(学生复习题).
- 3dmax人物表情动画、骨骼动画、半透明材质导出FBX文件、导入unity的方法
- 王树尧老师运筹学课程笔记 07 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)
- ArcGIS地形图地形标注详解(附练习数据下载)
- html怎么导航栏中加边框,html – 使用CSS在导航栏中显示边框三角形
- 入门 HTML JavaScript Jquery学习回顾 有小案例
- 云服务器Docker安装ElasticSearch却启动不了怎么办?
- elasticsearch7.1.1入门之集群的基础配置
- 常州工学院Java作业03
- 亲属卡额度是什么意思_卡神养卡15条心得!教你如何卡奴变卡神!
热门文章
- 层展开/关闭 - 运动缓冲效果
- jsx怎么往js里传参数_实践Vue 3.0做JSX(TSX)风格的组件开发
- mysql binlog_checksum_【原创】研发应该懂的binlog知识(下)
- linux管理用户组,技术|如何在 Linux 系统中通过用户组来管理用户
- 把脉Linux上USB数据流
- 使用此代码可以解决python包导入路径问题?
- LSTM训练手写数字识别
- JavaScript9x9乘法表
- Istio如何使用相同的端口访问网格外服务
- Kubernetes搭建Zookeeper和Kafka集群