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

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

来源:网络收集 时间:2026-07-22
导读: Step7 replicatorActivity活动执行完成后,需要按照会签结果设置文档的状态。拖曳一个code活动到replicatorActivity活动后面,处理其ExecuteCode事件,代码如下。 //审批任务完成后的处理 private void codeActivit

Step7 replicatorActivity活动执行完成后,需要按照会签结果设置文档的状态。拖曳一个code活动到replicatorActivity活动后面,处理其ExecuteCode事件,代码如下。

//审批任务完成后的处理

private void codeActivity1_ExecuteCode(object sender, EventArgs e) {

bool allPassed = true; string allComments = \

foreach (SPWorkflowTaskProperties taskProp in this.taskPropertiesList) {

bool approval = Convert.ToBoolean(taskProp.ExtendedProperties

[\

if (approval == false) {

allPassed = false; }

//累加审批意见 if (allComments != \ allComments += \

allComments += taskProp.AssignedTo + \

[\

}

this.UpdateModerationStatus(allPassed, allComments); //修改内容审批状态 }

以上代码检测已经完成的任务中是否有未通过的,然后调用UpdateModerationStatus方法设置文档审批状态。

7.4.11 工作流日志的记录

工作流日志的记录可以实现两个功能。

l SharePoint工作流代码出错的时候,监控页面的信息很少,为了便于查找错误,可以捕获关键代码抛出的异常,并将其记录到日志中。

l 通过日志,可以记录一些审批的信息。

SharePoint工作流日志的记录有以下两种方法。

l 通过workflowProperties属性调用CreateHistoryEvent方法,代码如下。 private void replicatorActivity1_ChildInitialized(object sender, ReplicatorChildEventArgs e) {

TaskActivity activity = e.Activity as TaskActivity;

activity.TaskProperties = new SPWorkflowTaskProperties(); activity.TaskProperties.AssignedTo = e.InstanceData.ToString(); activity.TaskProperties.TaskType = 0; activity.TaskProperties.Title = \会签审批任务\

//记录日志

this.workflowProperties.Workflow.CreateHistoryEvent((int)

SPWorkflowHistoryEventType.WorkflowError, 0,

this.workflowProperties.OriginatorUser, \会签任务创建\审批用户:\

e.InstanceData , \

}

l 从ActivityExecutionContext中获取到ISharePointService接口的实现,调用其LogToHistoryList方法,这种方法只适合于重载基类方法的时候使用,代码如下。

protected override ActivityExecutionStatus HandleFault(ActivityExecutionContext executionContext, Exception exception) {

ISharePointService hostService = executionContext.GetService

();

if (hostService != null) { //记录日志

hostService.LogToHistoryList(this.workflowProperties.WorkflowId, SPWorkflowHistoryEventType.WorkflowError, 0, TimeSpan.MinValue, exception.Message, exception.StackTrace, \ }

return base.HandleFault(executionContext, exception); }

以上方法重载了工作流基类的HandleFault方法,将所有异常信息记录到日志中。

7.4.12 循环审批的实现

以上几节的实例都是标准的顺序工作流,任务依次创建,在实际的开发过程中我们经常要处理循环审批的情形,如图7-127所示。

图7-127 循环审批流程

循环审批需要采用While活动来实现。假设要把文档审批流程修改成如图7-127所示的流转逻辑,操作步骤如下。

Step1 设计提交人修改文档任务表单。审批人的审批表单继续使用

ApprovalForm.xsn,提交人修改文档时的任务表单需要重新设计,样式如图7-128所示。上级审批意见文本框用来显示审批人的审批意见,绑定到主数据源的“comments”域,默认值绑定到ItemMetadata辅助数据源的“comments”域中。表单设计好后,将其发布为“ReSubmitForm.xsn”。

Step2 修改工作流配置文件,将ReSubmitForm.xsn跟工作流进行关联。在feature.xml的ElementManifests节点下添加如下配置。

在workflow.xml的MetaData节点下添加如下配置。

urn:schemas-microsoft-com:office:infopath:ReSubmitForm: -myXSD-2008-10-02T19-07-06

Task1_FormURN节点的值通过表单的属性窗口获取。

图7-128 ReSubmitForm.xsn表单

Step3 添加While活动。拖曳While活动到工作流设计器,如图7-129所示。

图7-129 添加While活动

设置While活动的Condition为“NeedApproval”,代码如下。

private bool isFirstSubmit = true; private bool task1Result = false; ///

///循环条件 ///

///

private void NeedApproval(object sender, ConditionalEventArgs e) {

if (isFirstSubmit) //第一次提交的时候允许循环条件为true {

e.Result = true; }

else //审批任务完成后,若审批为通过,则继续循环 {

e.Result = !task1Result; } }

当第一次提交时(启动工作流),While活动执行条件为真,若审批任务为通过,则While需要继续执行,以便创建新的审批任务。

Step4 添加审批任务。拖曳Sequence活动到While活动内部。拖曳TaskActivity到Sequence活动内部,如图7-130所示。

图7-130 添加审批任务

处理taskActivity1的TaskCreating事件,代码如下。

///

///审批任务创建 ///

///

private void taskActivity1_TaskCreating(object sender, TaskEventArgs e) {

string approvalUser = this.GetConfigurationData().ApprovalUser[0].AccountId; e.TaskProperties.AssignedTo = approvalUser; //指定审批人 e.TaskProperties.Title = \审批任务\ e.TaskProperties.TaskType = 0; }

审批人从初始化表单配置数据中获取,TaskType指定为0,表示采用Task0_FormURN指定的表单。处理taskActivity1的TaskCompleted事件,代码如下。 private string task1Comments = \

private void taskActivity1_TaskCompleted(object sender, TaskEventArgs e) {

//记录审批结果 …… 此处隐藏:2644字,全部文档内容请下载后查看。喜欢就下载吧 ……

工作流开发sharepoint(VS2008)(9).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)