SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

SP2010开发和VS2010专家

        上一篇文章是没有人参与的顺序工作流的好例子。我们这次创建自己的贷款应用程序审批系统。本文章中,我们将创建网站工作流,完成我们的贷款应用程序审批过程。因为网站工作流并不与任何列表关联,这里没有输入数据和启动工作流的开箱即用表单。因此,我们也会创建初始表单,提交时可以启动工作流。为了使工作流简单,工作流将基于贷款请求数量进行决策。如果贷款数量少于1000美元,自动批准,否则拒绝。

Get ready

        必须成功完成之前练习,以进行此练习。

How to do it…

1. 管理员身份打开VS2010。
2. 新建项目“顺序工作流”。
3. 命名为SiteWF,点击确定。
4. 默认部署为场解决方案,点击“下一步”。

5. 命名,并选择网站工作流。

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

6. 点击“下一步”,接受默认值。
7. 网站工作流唯一的选择就是手动启动工作流。点击完成结束项目创建向导。

8. 和“创建顺序工作流”文章中相似,放置LogToHistoryListActivity和IfElse活动,并创建工作流流图。命名代码条件为CheckCreditAmount。最终结果如下图:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

9. 在工作流代码文件中,添加CheckCreditAmount方法的代码,这样当贷款请求数量少于1000美元时,条件为真。如下:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

10. 右击Workflow1文件夹,从上下文菜单中,添加新项目,选择“工作流启动窗体”并命名CreditApplication.aspx,如下:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

11. Visual Studio自动添加代码。创建用户接口没有设计器支持。Visual Studio默认添加一些按钮Start Workflow和Cancel。在这些按钮之前,添加一个标签控件,其文本内容设置为Credit Amount Requested:,添加文本框控件命名txtCreditRequested。如下:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

12. 打开ASPX页面文件后的代码,找到方法GetInitiationData并从方法返回txtCreditAmount文本框的内容。你的代码应该是这样:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

13. 点击F5生成并运行项目。因为和工作流没有关联的列表,网站主页会显示出来。导航到所有网站内容—网站工作流—启动新工作流,点击下图显示的工作流名称启动工作流:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

14. 出现下图的启动窗体:

SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流

15. 输入1000,点击启动工作流。你将看到完成的状态,可以在历史记录列表查看添加的工作流实例。

How it works…

        工作流代码和过程流与“创建顺序工作流”文章相似。启动窗体提供数据,以用来执行条件核查。启动表单是呈现给用户输入数据到工作流的ASPX页面。这个表单在每个工作流启动时出现。你也可以提供关联表单适用于所有工作流实例。添加关联表单和添加启动窗体相似。也可以添加InfoPath表单。和ASPX页面相比,InfoPath表单部署过程不同。因为启动表单是ASPX页面,你可以做如添加验证控件等操作,写入业务逻辑等。使用设计器设计ASPX页面是不被支持的。因为不使用设计器支持来设计格式良好的ASPX页面比较难,此时InfoPath表单就显现出它的优势。稍后我们将了解部署InfoPath表单。本文中,我们使用ASPX页面,因为Visual Studio提供模板。InfoPath表单不能使用VS创建。VS之前的版本提供此功能,但是从2010版本移除了。
        启动窗体并不只为网站工作流。同样适用于列表工作流。实际上,可以适用于各种SharePoint工作流。工作流管理器管理这些表单。无论何时启动窗体或关联表单被提交,工作流管理器传递信息到创建的工作流实例中。如果没有初始化数据,则传递空字符串。
        和应用程序页面相似,初始化页面也储存在根布局文件夹。VS部署创建了和项目同名的文件夹,和子文件夹(工作流文件夹名)。本文中是SiteWF和Workflow1。如果你部署这个工作流,你可以导航到根布局文件夹核实启动页面。之前说过,InstantiationUrl是工作流元素的属性之一,在Element.xml文件中。VS自动用合适的启动窗体URL更新这个属性。如果你想更改启动页面的名称,在这里确认和修改。
        VS中启动窗体模板也添加一个默认代码启动工作流。工作流基于工作流模板ID启动,此ID从工作流运行时作为启动窗体查询字符串参数传递到表单。因为这是网站工作流,只有工作流模板ID在查询字符串中传递。如果是列表工作流,列表ID和项目ID也会传递到启动窗体。
        提交时,工作流通过调用SPWorkflowManager的StartWorkflow方法。SPWorkflowManager是网站集层次的,负责管理网站集内工作流模板和实例的对象。StartWorkflow是一个重载方法,将初始化数据作为参数之一。是字符串类型。如果你有多个值要传递,建立一个XML字符串,传递它到这个参数。

There’s more…

        我们之前说过,InfoPath表单成为偏好的方法,开发SharePoint工作流中初始化、关联或任务表单。这是因为InfoPath设计器提供更简单的开发和设计支持来开发自定义的表单。InfoPath表单与SharePoint工作流伴随使用时,在浏览器窗口打开此表单。这个由SharePoint中InfoPath form services控制。在SharePoint Foundation中不可用。

See also

1. 创建顺序工作流。
2. 部署InfoPath表单到工作流。