教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

工作流开发sharepoint(VS2008)(10)

来源:网络收集 时间:2026-07-22
导读: 图7-132 添加TaskActivity 处理taskActivity2的TaskCreating事件,代码如下。 /// ///修改任务创建 /// /// private void taskActivity2_TaskCreating(object sender, TaskEventArgs e) { e.TaskProperties.Assigne

图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节点下添加以下配置。

urn:schemas-microsoft-com:office:infopath:StateApprovalForm:

-myXSD-2008-10-02T19-07-06

urn:schemas-microsoft-com:office:infopath:ReSubmitForm:

-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

…… 此处隐藏:2047字,全部文档内容请下载后查看。喜欢就下载吧 ……
工作流开发sharepoint(VS2008)(10).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/413329.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)