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

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

来源:网络收集 时间:2026-07-22
导读: 图7-117 工作流设置 Step2 在添加或更改工作流页面,选择要附加的工作流 (CodeArt.WorkflowDemo1),输入工作流名称,如图7-118所示,单击“下一步”按钮。 图7-118 添加工作流 Step3 配置关联表单。在关联表单设

图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节点下添加如下属性。

urn:schemas-microsoft-com:office:infopath:InitiationForm: -myXSD-2008-10-04T07-45-17

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 TaskCreating; Step9 处理createTask的MethodInvoking事件,代码如下。

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…… 此处隐藏:2253字,全部文档内容请下载后查看。喜欢就下载吧 ……

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