现在的位置: 首页 > 综合 > 正文

用EventHandler在列表中创建启动工作流栏

2016年10月27日 ⁄ 综合 ⁄ 共 1813字 ⁄ 字号 评论关闭

一、用EventHandler在列表中创建启动工作流栏,先获取触发事件的列表,组合启动的url,其中TemplateId
通过读相关列表的工作流(list.WorkflowAssociations)得到,获得触发事件的列表项得到列表项的ID,将 url赋值给列表项,更新列表项。

public
class Meeting :
SPItemEventReceiver

{

public
string startWFString = string.Empty;

public
override void ItemAdded(SPItemEventProperties properties)
//
重载ItemAdded函数,监控新建列表条目事件

{

SPSecurity.RunWithElevatedPrivileges(delegate()
//
用此方法模拟管理员账户运行此事件处理程序

{

using (SPSite site =
new SPSite(properties.SiteId))
//
用此方法的话就不用dispose()

{

using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID))
//
注意获得web的方法!!!

{

try

{

startWFString = web.Url ;

if (!startWFString.EndsWith("/"))

startWFString = startWFString +
"/";

startWFString +=
"_layouts/IniWrkflIP.aspx?List=";

SPList list = web.Lists[properties.ListId];
//
获得触发事件的列表

SPWorkflowAssociationCollection wfCollection = list.WorkflowAssociations;

//启动工作流的列

System.Xml.XmlDocument doc =
new System.Xml.XmlDocument();

doc.LoadXml(wfCollection.SoapXml);

System.Xml.XmlNode node = doc.SelectSingleNode("WorkflowTemplates/WorkflowTemplate/WorkflowTemplateIdSet/@TemplateId");

if (list.EnableMinorVersions)

{

list.EnableMinorVersions =
false;

}

startWFString += list.ID +
"&ID=";

SPListItem item = list.Items.GetItemById(properties.ListItemId);
//
获得触发事件的列表条目

startWFString += properties.ListItemId+
"&TemplateID=";

startWFString += node.InnerText +
"&Source=";

string pUrl = web.ParentWeb.Url;

string listUrl = list.DefaultViewUrl;

startWFString += pUrl + listUrl;

item["StartWorkflow"] = startWFString;

item["Title"] = item.File.Name;

item.Update();

string tmp = item["StartWorkflow"].ToString();

if (tmp.Contains(","))

{

string[] arr = tmp.Split(new
char[]{','});

item["StartWorkflow"] = arr[0] +
",
启动工作流";

item.Update();

}

list.EnableMinorVersions =
true;

}

catch (Exception ex)

{

properties.ErrorMessage = ex.Message;

}

}

}

});

}

}

二、 部署EventHandler

利用D:"MOSS"EventHandlerExplorer"EventHandlerExplorer工程部署,点击EventHandlerExplorer.exe

U2UCamlCreator.exe可以查询列表的基本信息。

SPCAMLEditor.exe 修改列表的基本信息。

抱歉!评论已关闭.