工作流开发sharepoint(VS2008)(7)
图7-117 工作流设置
Step2 在添加或更改工作流页面,选择要附加的工作流
(CodeArt.WorkflowDemo1),输入工作流名称,如图7-118所示,单击“下一步”按钮。
图7-118 添加工作流
Step3 配置关联表单。在关联表单设置页面(如图7-119所示),输入相关信息,单击“提交”按钮完成工作流关联操作。
图7-119 关联表单
7.4.8 工作流模板的初始化表单
初始化表单是启动流程时调用的表单,供启动流程的用户填写一些数据。在流程代码中,可以通过workflowProperties字段的InitiationData属性获取到初始化表单的数据。InitiationData放置的是初始化的xml格式的数据。 若存在关联表单,初始化表单的数据源架构必须跟关联表单一致,关联表单的数据将作为初始化表单的默认值。为了保持架构一致,初始化表单可以直接将关联表单另存为一份副本进行修改。
下面给文档审批流程示例添加一个功能:当启动文档审批流程时,用户可以重新指定审批人,重新指定接受提醒邮件的人员。
1.设计表单模板
Step1 将AssociationForm.xsn另存为InitiationForm.xsn。 Step2 修改表单,如图7-120所示。
图7-120 InitiationForm表单样式
Step3 发布表单。确认表单的安全级别为“完全信息”,将表单发布到项目所在目录,发布文件名为“InitiationForm.xsn”。
2.修改配置文件
接下来需要修改配置文件,将InitiationForm.xsn跟工作流模板进行关联。 Step1 修改feature.xml。在ElementManifests节点下添加如下代码。
Step2 修改workflow.xml文件。在Workflow节点下添加如下属性。 InstantiationUrl=\ 在MetaData节点下添加如下属性。 FormURN可以通过infopath属性窗口获得。 3.修改工作流代码 修改工作流代码,从初始化表单数据中获取数据,进行分配任务和发送邮件操作。只需要将ConfigurationData属性的获取逻辑修改如下。 private ConfigurationData _ConfigurationData; /// public ConfigurationData ConfigurationData { get { if (_ConfigurationData == null) { //将初始表单数据反序列化为相应的对象 XmlSerializer serializer = new XmlSerializer(typeof( ConfigurationData)); XmlTextReader reader = new XmlTextReader(new System.IO.StringReader( this.workflowProperties.InitiationData)); _ConfigurationData = (ConfigurationData)serializer.Deserialize( reader); } return _ConfigurationData; } } 因为初始化表单和关联表单的数据源架构一致,所以仍然可以直接把初始化表单数据直接反序列化为ConfigurationData类型。 7.4.9 复合任务活动和多步审批流程 读者如果按照7.4.2节的描述来实现多步的审批流程时会发现,每次创建任务都需要createTask、onTaskChanged和completeTask 3个活动配合来完成,这是一个很烦琐的过程,并且流程图的可视化效果也变差了。WF工作流框架中的活动支持复合,即多个单一的活动可以组合成一个活动,本节实现这样一个任务复合活动并用它来实现多步的文档审批流程。创建任务复合活动步骤如下。 Step1 新建一个活动,名称为“TaskActivity”。 Step2 拖曳createTask、onTaskChanged和completeTask 3个活动到设计器中。 Step3 拖曳一个code活动到设计器中,如图7-121所示。 图7-121 TaskActivity Step4 设置createTask、onTaskChanged和completeTask的correlationToken属性为“taskToken”。 Step5 将createTask、onTaskChanged和CompleteTask的TaskId绑定到活动类的taskId字段,将createTask的SpecialPermission属性绑定到活动类的specialPermission字段。 Step6 将createTask的TaskProperties属性绑定到活动类的TaskProperties属性。TaskActivity的任务数据应该公开供外部调用,所以将TaskProperties声明为属性,而不是字段,如图7-122所示。 图7-122 绑定到活动类的TaskProperties属性 Step7 将onTaskChanged的BeforeProperties和AfterProperties属性均绑定到活动类的TaskProperties属性。 Step8 任务的操作人需要由外部代码来指定,TaskActivity需要提供一个事件,供外部代码处理,以便指定任务操作人。首先定义一个事件参数类。 /// public class TaskEventArgs : EventArgs { /// public readonly SPWorkflowTaskProperties TaskProperties; public TaskEventArgs(SPWorkflowTaskProperties taskProperties) { TaskProperties = taskProperties; } } 在TaskActivity类中添加事件声明代码。 //任务创建前触发的事件 [DesignerSerializationVisibilityAttribute( DesignerSerializationVisibility.Visible)] [BrowsableAttribute(true)] [CategoryAttribute(\杂项\ public event EventHandler private void createTask1_MethodInvoking(object sender, EventArgs e) { this.taskId = Guid.NewGuid(); if(this.TaskProperties == null ) //实例化TaskProperties this.TaskProperties = new SPWorkflowTaskProperties (); if (TaskCreating != null) //触发事件 TaskCreating(this, new TaskEventArgs(this.TaskProperties)); //设置任务编辑权限 if (!String.IsNullOrEmpty(this.TaskProperties.AssignedTo)) this.specialPermissions.Add(this.TaskProperties.AssignedTo, SPRoleType.Contributor); } 以上代码创建了任务ID,执行了TaskCreating方法,并将任务的操作权限赋给任务操作人。 Step10 在任务完成后,希望外部代码也会进行处理,所以在Step3中添加了一个code活动,用这个code活动来调用任务完成事件。在TaskActivity类中添加任务完成事件声明代码。 //任务完成后触发的事件 [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility. Visible)] [BrowsableAttribute(true)] [CategoryAttribute(\杂项\ public event EventHandler
相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]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年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




