设为首页 收藏本站
查看: 930|回复: 0

[经验分享] sharepoint 2010 beta Workflow

[复制链接]

尚未签到

发表于 2015-9-27 07:51:42 | 显示全部楼层 |阅读模式
  一、准备条件
  
  系统: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与流程关联。
  下列以创建任务表单为例,如下图:
  新建项目:
   DSC0000.png
  
  选择模板,SharePoint下面的2010,在选择2010模板下的Application Page。
   DSC0001.png
  
  2、流程设计器
  打开vs2010,创建顺序工作流:
  如下图:
   DSC0002.png
  
  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
DSC0003.png
  
  Workflow的Elements.xml的流程Workflow节点
DSC0004.png
  
  5、效果图
  打开SharePoint站点,给Test文档库添加工作流;
  Test 文档库
DSC0005.png
  
  工作流设置
DSC0006.png
  
  添加工作流
DSC0007.png
  
  选择该Demo的工作流模板
DSC0008.png
  
  创建wf工作流
DSC0009.png
  启动流程
DSC00010.png
  选择创建好的流程模板
DSC00011.png
  
  链接到初始化表单,填写一级审批者;
DSC00012.png
  流程已启动并给管理员分配任务,点击进行中,进入流程管理页面;
DSC00013.png
  
  流程管理页面,任务列表中有未启动的任务。
DSC00014.png
  
  编辑任务
DSC00015.png
  
  弹出任务审批表单,审批流程。
DSC00016.png
  审批完成
DSC00017.png
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119255-1-1.html 上篇帖子: 将你的Asp.NET应用程序嵌入到SharePoint 下篇帖子: sharepoint 特别信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表