创建自定义网站工作流活动
首先,创建一个用来包含和测试自定义工作流活动的项目。
1. 通过指向“文件”菜单上的“新建”并单击“新建项目”,显示“新建项目”对话框。
2. 展开“Visual C#”下的“SharePoint”节点,然后单击“2010”。
3. 在“模板”窗格中选择“顺序工作流”。
4. 在“名称”框中,键入 YunCode.WorkFlow.CustomActivity,然后单击“确定”。
这将显示“SharePoint 自定义向导”。
5. 在“要使用哪个本地网站进行调试?”页中,单击“下一步”以接受默认网站。
此步骤还会将解决方案的信任级别设置为场解决方案(工作流项目的唯一可用选项)。
在“指定用于调试的工作流名称”页上,接受默认名称 (YunCode.WorkFlow.CustomActivity – CAWorkflow)
6. 将工作流模板类型更改为“网站工作流”,然后单击“下一步”。
7. 单击“完成”以接受剩余的默认设置。
添加自定义工作流活动类
接下来,向项目中添加一个类以包含自定义工作流活动的代码。
1. 单击“项目”菜单上的“添加新项”以显示“添加新项”对话框。
2. 在“已安装的模板”树视图中,单击“代码”节点,然后在项目项模板列表中单击“类”。 使用默认名称 Class1。
3. 将 Class1 中的所有代码替换为:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint; namespace YunCode.WorkFlow.CustomActivity { public class Class1 : System.Workflow.ComponentModel.Activity { public Class1() { } protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext) { try { SPSite site = new SPSite("http://" + System.Environment.MachineName); SPWeb web = site.OpenWeb("/"); SPList aList = web.GetList("/Lists/Announcements"); try { SPList bList = web.GetList("/Lists/Announcements Backup"); bList.Delete(); } catch { } Guid newAnnID = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements); SPList bakList = web.Lists[newAnnID]; foreach (SPListItem item in aList.Items) { SPListItem newAnnItem = bakList.Items.Add(); foreach (SPField field in aList.Fields) { if (!field.ReadOnlyField) newAnnItem[field.Id] = item[field.Id]; } newAnnItem.Update(); } bakList.OnQuickLaunch = true; bakList.Update(); } catch (Exception errx) { System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString()); } return base.Execute(executionContext); } } }
4. 保存项目,然后单击“生成”菜单上的“生成解决方案”。
Class1 将作为工具箱中“SharePoint 工作流”选项卡下的“工具箱”中的自定义操作出现。
向网站工作流中添加自定义活动
接下来,向工作流中添加一个活动以包含自定义代码。
1. 在设计视图中,在工作流设计器内打开 Workflow1。
2. 单击 Class1 并将其从工具箱中拖放到 onWorkflowActivated1 活动下方。
3. 保存项目
测试网站工作流自定义活动
紧接着,运行项目并启动网站工作流。 自定义活动会创建一个备份的公告列表,然后将当前公告列表中的内容复制到该列表中。 在创建备份列表之前,代码还会检查是否已存在备份列表。 如果已存在备份列表,则会将其删除。 代码还会向 SharePoint 网站的快速启动栏上的新列表中添加链接。
1. 按 F5 运行项目,并将其部署到 SharePoint。
2. 在快速启动栏上,单击“列表”以显示 SharePoint 网站中可用的所有列表。 请注意,仅有一个名为“公告”的公告列表。
3. 在 SharePoint 网页顶部,单击“网站操作”按钮,再单击“网站工作流”。 在“启动新工作流”部分下,单击 YunCode.WorkFlow.CustomActivity – CAWorkflow 的链接。 这将启动网站工作流,并运行自定义操作中的代码。
4. 单击快速启动栏上显示的名为“Announcements Backup”(通知备份)的链接。 请注意,“通知”列表中包含的所有公告已复制到此新列表中。