工作流开发sharepoint(VS2008)(10)
图7-132 添加TaskActivity
处理taskActivity2的TaskCreating事件,代码如下。
///
///
private void taskActivity2_TaskCreating(object sender, TaskEventArgs e) {
e.TaskProperties.AssignedTo = this.workflowProperties.Originator; e.TaskProperties.Title = \修改文档\
e.TaskProperties.TaskType = 1; //指定使用Task1_FormURN标识的表单 //设置表单辅助数据源值
e.TaskProperties.ExtendedProperties[\ }
以上代码创建新的任务,任务分配用户为流程的启动人,并且将审批意见同步到任务表单的辅助数据源。TaskType指定为1,表示采用Task1_FormURN指定的表单。
7.4.13 多状态工作流的实现
多状态工作流指的是在一个审批过程中存在多个审批状态(审批步骤)的工作流,每个状态可以按照条件跳转到其他任意状态,如图7-133所示。
图7-133 多状态工作流
WF支持状态机工作流,利用状态机工作流可以很容易地实现这种类型的流程,下一节将会具体讲述。SharePoint状态机工作流对每个状态单个审批任务支持得很好,但是如果某个审批状态需要多人审批,比如一个会签的场景,状态机工作流支持起来就很困难了。
WF提供了一个ConditionedActivityGroup活动,内部可以放置多个子活动,每个子活动都有一个是否执行的条件。利用ConditionedActivityGroup活动,可以采用顺序工作流实现多状态工作流。下面是具体的操作步骤。
Step1 设计任务表单。需要设计两个表单模板:提交人修改文档的表单我们直接采用上一节设计的ReSubmitForm.xsn。状态2和状态3审批任务的表单使用同一个表单,样式如图7-134所示,approvalState域是一个文本域,采用下拉列表,供审批人选择下一步的审批状态,表单发布为StateApprovalForm.xsn。
图7-134 StateApprovalForm.xsn
Step2 修改工作流配置文件。在feature.xml的ElementManifests节点下添加以下配置。
在workflow.xml的MetaData节点下添加以下配置。 -myXSD-2008-10-02T19-07-06 -myXSD-2008-10-02T19-07-06 Task0_FormURN为StateApprovalForm.xsn的ID,Task1_FormURN为ReSubmitForm.xsn的ID。 Step3 声明一个枚举类型,用来表示工作流的状态,代码如下。 /// public enum ApprovalState { //重新修改 ReSubmit, ///文档初审 PreApproval , //文档终审 Approval, //审批完成 Complete } 在工作流类中添加ApprovalState类型的字段,代码如下。 private ApprovalState approvalState = ApprovalState.PreApproval; Step4 添加ConditionedActivityGroup活动,如图7-135所示。设置其UntilCondition的规则条件为: this.approvalState == ApprovalState.Complete 当审批状态变成审批完成时,即结束ConditionedActivityGroup的执行。 图7-135 添加ConditionedActivityGroup活动 Step5 添加文档初审审批任务。在ConditionedActivityGroup中添加一个TaskActivity,名称改为preApprovalActivity,如图7-136所示。 图7-136 添加preApprovalActivity 设置preApprovalActivity的WhenCondition为条件规则,条件名称为IsPreApproval,表达式为: this.approvalState == ApprovalState.PreApproval 这个规则指定当审批状态处于PreApproval时preApprovalActivity执行。 处理preApprovalActivity的TaskCreating事件,代码如下。 private void preApprovalActivity_TaskCreating(object sender, TaskEventArgs e) { e.TaskProperties.Title = \文档初审\ e.TaskProperties.TaskType = 0; //指定使用Task0_FormURN标识的表单 e.TaskProperties.AssignedTo = \ } 以上代码将文档初审任务分配给user1用户,并指定TaskType为0,使审批任务使用StateApprovalForm.xsn表单。 处理preApprovalActivity的TaskCompleted事件,代码如下。 private void approvalActivity _TaskCompleted(object sender, TaskEventArgs e) { ////按照表单中approvalState域设置审批状态 this.approvalState = (ApprovalState)Enum.Parse(typeof(ApprovalState), e.TaskProperties.ExtendedProperties[\ string comments = \ //记录日志 string approval = Convert.ToBoolean(e.TaskProperties.ExtendedProperties [\批准\拒绝\ this.workflowProperties.Workflow.CreateHistoryEvent( (int)SPWorkflowHistoryEventType.WorkflowComment, 0, this.workflowProperties.OriginatorUser, this.approvalState.ToString(), \审批用户:\审批时间:\审批意见:\ } 以上代码将审批表单中的审批状态域的值同步到工作流的approvalState字段,并且把审批意见域的值记录到工作流日志中。 Step6 添加文档终审审批任务。在ConditionedActivityGroup中添加一个TaskActivity,名称改为“approvalActivity”。设置approvalActivity的WhenCondition为条件规则,条件名称为“IsApproval”,表达式为: this.approvalState == ApprovalState.Approval 这个规则指定当审批状态处于Approval时approvalActivity执行。处理preApprovalActivity的TaskCreating事件,代码如下。 private void approvalActivity_TaskCreating(object sender, TaskEventArgs e) { e.TaskProperties.Title = \文档终审\ e.TaskProperties.TaskType = 0; //指定使用Task0_FormURN标识的表单 e.TaskProperties.AssignedTo = \ } 指定approvalActivity的TaskCompleted事件为approvalActivity_TaskCompleted。approvalActivity和preApprovalActivity两个任务活动的任务结束处理逻辑是一样的,所以使用同一个TaskCompleted事件处理函数。 Step7 添加文档修改任务。在ConditionedActivityGroup中添加一个 TaskActivity,名称改为“reSubmitActivity”。设置reSubmitActivity的WhenCondition为条件规则,条件名称为“IsApproval”,表达式为: this.approvalState == ApprovalState.ReSubmit
相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]2018年上海市徐汇区中考物理二模试卷(
- [资格考试]坐标转换及方里网的相关问题(椭球体、
- [资格考试]语文教研组活动记录表
- [资格考试]广东省2006年高应变考试试题
- [资格考试]LTE学习总结—后台操作-数据配置步骤很
- [资格考试]北京市医疗美容主诊医师和外籍整形外科
- [资格考试]中学生广播稿400字3篇
- [资格考试]CL800双模站点CDMA主分集RSSI差异过大
- [资格考试]泵与泵站考试复习题
- [资格考试]4个万能和弦搞定尤克里里即兴弹唱(入
- [资格考试]咽喉与经络的关系
- [资格考试]《云南省国家通用语言文字条例》学习心
- [资格考试]标准化第三范式
- [资格考试]GB-50016-2014-建筑设计防火规范2018修
- [资格考试]五年级上册品社复习资料(第二单元)
- [资格考试]2.对XX公司领导班子和班子成员意见建议
- [资格考试]关于市区违法建设情况的调研报告
- 二0一五年下半年经营管理目标考核方案
- 2014年春八年级英语下第三次月考
- 北师大版语文二年级上册第十五单元《松
- 2016国网江苏省电力公司招聘高校毕业生
- 多渠道促家长督导家长共育和谐 - 图文
- 2018 - 2019学年高中数学第2章圆锥曲线
- 竞争比合作更重要( - 辩论准备稿)课
- “案例积淀式”校本研训的实践与探索
- 新闻必须客观vs新闻不必客观一辩稿
- 福师大作业 比较视野下的外国文学
- 新编大学英语第二册1-7单元课文翻译及
- 年产13万吨天然气蛋白项目可行性研究报
- 河南省洛阳市2018届高三第二次统一考试
- 地下车库建筑设计探讨
- 南京大学应用学科教授研究方向汇编
- 2018年八年级物理全册 第6章 第4节 来
- 毕业论文-浅析余华小说的悲悯性 - 以《
- 2019年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




