设计工作流模板的任务表单
上一节已经看到了默认的任务编辑页面,这显然是不符合实际要求,普通的审批页面一般具有一个意见框、一个批准和拒绝的选项。本节讲述如何采用InfoPath来开发自定义的任务操作界面。
设计表单
Step1 新建表单。打开InfoPath,选择"表单模板"单选按钮,确认选中"仅启动浏览器兼容性功能"复选框,如图1所示。
图1 新建表单
Step2 添加数据源域。在数据源中添加两个字段域,一个名称为"comments",数据类型为"文本";另一个名称为"approval",数据类型为"boolean",如图2和图3所示。
图2添加数据源域
图3 添加数据源域
Step3 插入布局表格。选择"插入"菜单中的"版式表格"选项,插入一个3行1列的布局表格,如图4和图5所示。
图4 插入布局表格
图5 插入布局表格
Step4 设计表单字段。将审批意见域拖曳到布局表格上,并调整高度。将审批结果域拖曳到布局表格上,并且更改为选项按钮,分别在两个单项框后面添加批准和拒绝文字,如图6所示。
图6 设计表单字段
Step5 添加"提交"按钮。通过设计任务转到插入控件面板,拖曳一个按钮控件到布局表格中,双击按钮,在属性窗口中将按钮标签改为"提交",如图7所示。
图7 添加提交按钮
Step6 添加按钮规则。单击"规则"按钮,在规则编辑窗口中单击"添加"按钮,如图8所示。在添加规则窗口单击"添加操作"按钮,如图9所示。
图8 添加按钮规则 图9 "添加操作"按钮
选择使用数据连结进行提交操作,单击"添加"按钮,如图10所示。在"数据连接向导"窗口中,选择"新建连接"和"仅提交数据"单选按钮,如图11所示。
图10 使用数据连接进行提交操作 图11 选择"新建连接"和"仅提交数据"
单击"下一步"按钮,选择"提交到宿主环境"单选按钮,如图12所示,再单击"下一步"按钮,在弹出的窗口中单击"完成"按钮,然后依次单击"确定"按钮,返回规则编辑窗口。在规则编辑窗口中添加关闭表单操作,如图13所示,最终设计好的表单如图14所示。
图12 选择提交到宿主环境 图13 添加关闭表单操作
图14 设计好的表单
2.发布表单
Step1 确认表单的安全级别为"完全信任"。通过"工具"菜单调出"表单选项"窗口,在"安全和信任"类别中选中表单的安全级别为"完全信任",如图15和图16所示。
图15 调出"表单选项"窗口 图16 确认表单的安全级别为"完全信任"
Step2 单击设计任务面板中的"发布表单模板"链接,如图17所示。在"发布向导"窗口中选择"网络位置"单选按钮,单击"下一步"按钮,如图18所示。
图17 任务面板 图18 "发布向导"窗口
Step3 指定表单模板的发布位置为项目所在的目录,指定文件名为"ApprovalForm.xsn",单击"下一步"按钮,如图19所示。确保如图20所示的路径输入框为空,单击"下一步"按钮完成表单发布。
图19 指定表单模板的发布位置 |
图20 路径输入框 |
3.修改工作流的配置文件和代码
Step1 确保表单正确发布到项目目录中,如图21所示。
图21 确保表单正确发布到项目目录
Step2 修改feature.xml文件。在feature.xml文件的ElementManifests节点下添加如下代码,确保infopath表单能被Visual Studio自动发布。
<ElementFile Location="ApprovalForm.xsn" />
最终的feature.xml文件如下所示。
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="cb022cd6-9eb8-4102-9fb0-103ea0580283"
Title="CodeArt.WorkflowDemo1 feature"
Description="My SharePoint Workflow Feature"
Version="12.0.0.0"
Scope="Site"
ReceiverAssembly="Microsoft.Office.Workflow.Feature, Version=12.0.0.0,
Culture=neutral, PublicKeyToken=71e9bce111e9429c"
ReceiverClass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="workflow.xml" />
<ElementFile Location="ApprovalForm.xsn" />
</ElementManifests>
<Properties>
<Property Key="GloballyAvailable" Value="true" />
<!-- Value for RegisterForms key indicates the path to the forms relative to
feature file location -->
<!-- if you don't have forms, use *.xsn -->
<Property Key="RegisterForms" Value="*.xsn" />
</Properties>
</Feature>
Step3 修改workflow.xml文件。在workflow.xml文件的Workflow节点下添加如下属性,确保工作流创建的任务采用infopath表单内容类型。
TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160"
在MetaData节点下添加任务的FormURN注册,代码如下所示。
<Task0_FormURN>urn:schemas-microsoft-com:office:infopath:Task0:-myXSD-2008-10-02T19-07-06</Task0_FormURN>
FormURN的实际值可以通过infopath表单的"文件"→"属性"命令获得,如图22所示的ID域即是表单的FormURL。
图22 表单模板属性
Step4 修改greateTask的MethodInvoking事件处理方法,指定TaskType为0,代码如下。
private void createTask1_MethodInvoking(object sender, EventArgs e)
{
this.task1Id = Guid.NewGuid(); //生产任务ID
this.task1Properties.Title = "文档审批";
this.task1Properties.AssignedTo = "codeart\\user1"; //指定任务操作人
this.task1Properties.TaskType = 0; //设置任务采用第一个任务表单
//将任务编辑权限分配给任务操作人
this.specialPermissions1.Add(this.task1Properties.AssignedTo,
SPRoleType.Contributor);
}
以上操作完成后可以再次部署工作流,启动流程后可以看到如图23所示的任务编辑页面。
图23 任务编辑页面
4.表单的校验步骤
InfoPath表单发布后,访问任务页面的时候可能会出现表单加载错误,这个现象大多数情形下是由表单本身引起的,可以先通过SharePoint管理中心的管理表单模板模块进行校验,确保表单校验成功。表单校验步骤如下。
Step1 访问应用程序管理中的管理表单模板模块,如图24所示。
图24 管理表单模板模块
Step2 单击"上载表单模板"链接,如图25所示。
图25 "上载表单模板"链接
Step3 单击"浏览"按钮找到项目目录中发布后的模板,再单击"校验"按钮,确定表单验证状态为"成功",如图26和图27所示。若表单校验不成功,则按照提示信息操作。
图26 验证表单模板
图27 表单验证成功
转载:http://book.csdn.net/bookfiles/936/10093629438.shtml