在每个批准部分创建规则之前,你需要理解“作为整体,逻辑是如何为表单工作”的基础。重申一下,表单有自己的工作的流(通过使用表单加载规则和许多不同格式和操作规则创建)。有一个域叫Form Status表单状态,是大部分表单逻辑的基础。
表单状态会随着表单经过的审批流程变化而变化。状态级别有:
1. 新建
这是第一个状态。初始默认值。
2. Manager批准
表单第一次被提交后,因为manager是第一个审批者,状态立刻被设置为“Manager批准”。
3. VP批准
Manager批准表单后的状态。
4. 已完结
当VP批准表单后,流程结束,表单完成。
5. 已拒绝
如果任何一个审批者拒绝表单时的状态。
表单状态域也将被提升到SharePoint表单库中的栏,这样可以被筛选和排序。任何发送邮件的SharePoint工作流将使用状态作为工作流条件。
当思考全局,创建许多表单和审批流程,你将发现表单状态域将是架构中常见的元素。因为需要在表单和工作流中使用它,这个域可以作为网站列被创建。
下面练习中,你将创建表单状态作为网站列,并作为reimbursement表单的域。然后,这两个通过发布表单被绑定到一起,并提升此域为SharePoint中的栏。
对于工作流以及其他对用户透明的活动中使用的InfoPath域,保证他们在域列表中处于预定义的位置时好的实践,这样你稍后可以快速发现它们。一组域Hidden将在表单中被创建,其中就有表单状态。
准备:以设计模式打开ContosoReimbursementform.xsn。决定发布表单到那个SharePoint站点。本例中,站点是http://forms.contoso.com。在浏览器中打开你的SharePoint站点。
1. 点击“网站操作”,选择“网站设置”。
2. 在“库”节,选择“网站列”。
3. 点击“创建”按钮。
4. 命名列Form Status。选择“单行文本”。滚动滚轮到“将此网站栏放置到”,“新建用户组”输入Contoso Forms。其余默认,点击“确定”。
5. 重复步骤3、4,创建另一个文本栏Next Approver。在“现有组”下拉框选择“Contoso Forms”。
6. 在InfoPath Designer中,创建隐藏域组,并在其中创建表单状态域。通过点击myFields下拉框,点击“添加”。
7. 命名Hidden,类型为“组”,点击“确定”。
8. 点击下拉框,点击“添加”。
9. 命名域FormStatus,作为文本数据类型,点击“确定”。
10. 重复步骤8、9,创建域NextApprover。
11. 双击FormStatus域,默认值输入“New”。然后点击“确定”。
这个值很重要,后面表单加载规则将依靠它。
12. 在“文件”选项卡,点击“发布”。点击SharePoint服务器。
13. 输入你的SharePoint站点URL,点击“下一步”。
注意:关于更多发布和提交表单到SharePoint,查看第六章节“发布和提交表单数据”。
14. 选择“表单库”,点击“下一步”,选择“新建表单库”点击“下一步”。
15. 命名新表单库Reimbursement,点击“下一步”。
注意到已经有几个域被添加到这里。
16. 点击“添加”,从Hidden组中选择FormStatus域,点击“确定”。
注意网站栏组下拉框自动显示Contoso Forms组的值,栏名下拉框展示Form Status----这是网站栏。
小贴士:InfoPath辨别你选择的域名和现有网站栏同名。如果InfoPath中域被命名为FormStatus(有小写s),这个域不会自动域网站栏目匹配,因为InfoPath将大写字母或下划线字符看做轮廓标。
17. 重复步骤16,添加NextApprover作为第二个栏。
18. 点击“下一步”,选择“修改数据连接到新的位置”复选框,点击“发布”。
重要:选择这个复选框是重要的,因为模板提供给你的数据连接到的地址是你自己环境不存在的。当你允许InfoPath自动修改数据连接时,现有提交连接和用户配置文件服务连接将改变指向你自己的站点。
19. 发布成功后,点击“关闭”。
表单现在有个状态域,网站栏目FormStatus在表单库Reimbursement中使用。这个状态每次提交按钮被点击时发生改变,它的值在表单规则中将会使用。
附加:调整数据连接
当表单被第一次发布时,它可能必须手动修改数据连接,如果它们不自动修改时。在“数据”选项卡,选择“SharePoint Library Submit”连接,点击“修改”按钮。代替文档库URL为你自己的库。点击“下一步”完成向导。(查看第六章节获得关于提交到SharePoint的详细信息)。GetUserProfileByName数据连接也这样修改(查看第九章节“使用SharePoint User Profile Web Service“获得关于这个web service更多详细信息)。