工作流开发sharepoint(VS2008)(9)
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节点下添加如下配置。 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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]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年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




