图7-99 选择域 图7-100 设置初始值
Step5 表单修改好后,需要重新发布表单到工作流项目所在的目录。最后修改工作流代码,来给辅助数据源中的ows_comments域赋值。修改createTask的MethodInvoking事件处理方法如下。 private void createTask1_MethodInvoking(object sender, EventArgs e) {
this.task1Id = Guid.NewGuid(); this.task1Properties.Title = \文档审批\
this.task1Properties.AssignedTo = \
this.task1Properties.TaskType = 0; //设置任务使用第一个任务表单 //设置infopath表单中的comments字段值
this.task1Properties.ExtendedProperties[\请在此输入您的审批意见\ //分配任务编辑权限
this.specialPermissions1.Add(this.task1Properties.AssignedTo,
SPRoleType.Contributor);
}
通过SPWorkflowTaskProperties类的ExtendedProperties属性可控制辅助数据源的值。
尽管辅助数据源中的域全部是以ows_开头,但是代码访问时不需要带ows_。
7.4.6 工作流代码获取任务表单域的值
在以上几节的示例中,任务提交完成后工作流代码并没有处理,在本章的文档审批示例流程中,审批人批准之后,文档才应该正式发布,若没有批准则不能发布。
SharePoint文档库本身支持内容审批功能,启用内容审批功能后,文档新建或上传后处于草稿状态,只有当有权限的用户审批之后,文档才能被普通用户浏览。
通过文档库设置中的版本控制设置可以启动内容审批功能,如图7-101所示。在“提交的项目是否需要内容审批”选项中选择“是”单选按钮,在“哪些用户可查看此文档库中的草稿项目”选项中选择“仅限可批准项目的用户(以及该项目的作者)”单选按钮可以查看草稿项目。
图7-101 启用内容审批
下面修改工作流代码,实现当用户操作任务表单时,选择“批准”则将文档的审批状态改为“已批准”,选择“拒绝”则将文档的状态改为“已拒绝”。 双击工作流设计器上的“onTaskChange”活动,在自动生成的Invoked事件处理函数中添加如下代码。
private void onTaskChanged1_Invoked(object sender, ExternalDataEventArgs e) {
//获取到任务表单中的approval字段
bool approval = Convert.ToBoolean(this.task1Properties.
ExtendedProperties[\
//获取到任务表单中的comments字段
string comments = \ SPModerationStatusType approvalState = approval ? SPModerationStatusType.
Approved : SPModerationStatusType.Denied;
SPListItem item = this.workflowProperties.Item;
item[\设置内容审批状态 item[\//设置内容审批批注 item.Update(); }
可以通过SPWorkflowTaskProperties类的ExtendedProperties属性获取表单域的数据。以上代码按照approval域的值设置列表项的_ModerationStatus字段为相应值,并把comments表单域的值赋给列表项的_ModerationComments字段。
7.4.7 工作流模板的关联表单
工作流模板的关联表单是当把一个工作流模板和某个列表(或文档库)关联起来时调用的表单,一般用来实现一些流程相关的配置。
在流程代码中,可以通过workflowProperties字段的AssociationData属性获取到关联表单的数据。AssociationData放置的是关联表单的XML格式的数据。
下面给文档审批流程示例添加一个功能为管理员将文档审批工作流模板附加到某个文档库时可以指定审批人,并且可以指定一些人员,发送提醒邮件。
1.设计表单模板
Step1 新建表单模板,保存为“AssociationForm.xsn”。
Step2 通过属性菜单,把数据源根节点的名称由“myFields”修改为“ConfigurationData”。
Step3 添加人员选择控件。在“设计任务”的“插入控件”面板单击“添加或删除自定义控件”链接,如图7-102所示。
图7-102 “插入控件”面板
在“添加或删除自定义控件”窗口中单击“添加”按钮,在弹出的窗口中选择“ActiveX控件”单选按钮,如图7-103所示。选择“Contact Selector”控件,如图7-104所示。
图7-103 选择控件类型 图7-104 选择控件
选择“不包括.cab文件”单选按钮,如图7-105所示。指定绑定属性为
“Value”,如图7-106所示。指定数据类型为“域或组”,如图7-107所示。
图7-105 指定安装选项 图7-106 指定绑定类型
图7-107 指定控件数据类型
Step4 配置人员选择控件的数据源。人员选择控件必须绑定到格式固定的组,首先添加一个名为“ApprovalUser”的组,然后在ApprovalUser组下添加一个名为“Person”的可重复组,如图7-108所示。在Person组下分别添加“DisplayName”、“AccountId”和“AccountType”3个文本域,最终数据源结构如图7-109所示。
图7-108 添加Person组
图7-109 数据源结构
Step5 将Contract Selector拖放到表单上,利用右键菜单的“更改绑定”命令绑定到ApprovalUser组,如图7-110所示。
图7-110 更改绑定
Step6 按照Step4、Step5的操作,添加一个“MailTo”组,并添加“MailSubject”和“MailBody”两个文本字段,如图7-111所示。
图7-111 数据源
Step7 按照如图7-81所示的向导完成表单设计(参考7.4.4节的添加“提交”按钮操作),完成后的效果如图7-112所示。