本文讲述VS2012 开发SharePoint 2013 声明式workflow action 之 HelloWorld。

使用VS2012开发客户化的workflow action是SharePoint 2013 自带的action的一种补充,用于实现较为复杂的业务逻辑,需要它的理由有三:

1.满足客户复杂逻辑的定制化需求

2.可以由专业第三方的公司开发更多友好和适合特定行业的action库,以满足用户需求,有利于构件更完善的SharePoint 2013 生态系统

3. 代码和业务逻辑重用

下图是Custom activity 所处的SharePoint 2013 workflow 的体系结构中的位置: 

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_用户需求

接下来说明如何使用VS2012实现一个最简单的声明式workflow action (需求是接受一个message参数,将该message写到Workflow history list中,实际工作中肯定不会有这种需求,这里是举个简单的例子):

准备工作参考前一篇的准备工作: 

​javascript:void(0)​

外加安装VS2012 + Office 2013 development tool


新建SharePoint 2013 solution

1.新建SharePoint 2013 empty solution(选择farm solution或sandbox solution均可)

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_用户需求_02

2. 新建Custom action

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_用户需求_03

3. 添加输入参数

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_解决方案_04

4. 在Toolbox中搜索WriteToHistory,并拖拽至 HelloWorldAction中

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_客户化_05

5. 将输入参数HelloMessage设置为WriteToHistory的Message属性

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_解决方案_06

6. 编辑HelloWorldAction.actions4, 绑定输入参数和RuleDesigner

 

<Action Name="HelloWorldAction" ClassName="HelloWorldAction.HelloWorldAction" Category="Custom" AppliesTo="all">
<RuleDesigner Sentence="Hello message is %1">
<!-- Define the UI widgets SharePoint designer should use for configuring this action -->
<FieldBind Field="HelloMessage" Text="Hello message" Id="1" DesignerType="TextOnly" DisplayName="Hello message" />
</RuleDesigner>
<Parameters>
<Parameter Name="HelloMessage" Type="System.String, mscorlib" Direction="In" DesignerType="TextOnly" Description="Set the HelloMessage" />
</Parameters>
</Action>


7. 使用VS部署该解决方案

 

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_业务逻辑_07

在SharePoint designer 2013中使用custom action

1. 清空SharePoint designer 2013 的cache文件 C:\Users\v-abchen\AppData\Local\Microsoft\WebsiteCache ,这是因为部署了新的action,否则使用SharePoint designer 2013 新建workflow时会出现如下错误:

Sever-side activities have been updated. You need to restart SharePoint designer to use the updated version of activities.

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_业务逻辑_08

2.打开SharePoint  designer 2013 新建一个命名为TestHelloWordAction 的site workflow

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_javascript_09

3.在新建的workflow 中加入HelloWorldAction

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_业务逻辑_10

4.设置Message参数

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_解决方案_11

5.给workflow添加结束语句,并发布

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_业务逻辑_12


调试custom action

1. 在VS2012的activity 上设置调试断点

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_业务逻辑_13

2. 启动VS2012调试

3. 到 http://SP2013Site/_layouts/15/workflow.aspx 页面启动site workflow TestHelloWordAction 

4. VS2012中的断点将被激活

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_用户需求_14


5.按F5工作流完成后可以看到我们写入Workflow History 的HelloMessage

VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld_业务逻辑_15