Sharepoint 2007 启动Sharepoint工作流时出现问题
我有一个自定义工作流,我正在通过代码启动。我正在使用以下代码启动工作流Sharepoint 2007 启动Sharepoint工作流时出现问题,sharepoint-2007,workflow-foundation,Sharepoint 2007,Workflow Foundation,我有一个自定义工作流,我正在通过代码启动。我正在使用以下代码启动工作流 DeleteWorkflowTasks(properties.ListItem.ID); Thread thread = new Thread(delegate() { StartApprovalWorkflow(); }); thread.Start(); private void StartApprovalWorkflow(
DeleteWorkflowTasks(properties.ListItem.ID);
Thread thread = new Thread(delegate() { StartApprovalWorkflow(); });
thread.Start();
private void StartApprovalWorkflow()
{
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
try
{
using (SPSite elevatedSite = new SPSite(siteID))
{
using (SPWeb elevatedWeb = elevatedSite.OpenWeb(webID))
{
SPList calendarList = elevatedWeb.Lists[listID];
SPWorkflowAssociation workflowAssociation = calendarList.WorkflowAssociations.GetAssociationByName(currentWorkflowName, System.Threading.Thread.CurrentThread.CurrentCulture);
elevatedSite.WorkflowManager.StartWorkflow(itemBeforeUpdate, workflowAssociation, workflowAssociation.AssociationData);
}
}
}
catch (SPException ex)
{
}
catch (Exception ex)
{
}
});
}
catch (SPException ex)
{
}
catch (Exception ex)
{
}
}
此代码随ItemUpdated eventhandler代码一起附加。每当我更新项目时,它都会取消已附加的工作流,并为同一项目创建新工作流。虽然工作正常,但有时工作流无法启动,但会取消以前的工作流。
我得到的堆栈跟踪如下
Object reference not set to an instance of an object. at Microsoft.SharePoint.Library.SPRequestInternalClass.OpenWeb(String bstrUrl, String& pbstrServerRelativeUrl, String& pbstrTitle, String& pbstrDescription, Guid& pguidID, String& pbstrRequestAccessEmail, UInt32& pwebVersion, Guid& pguidScopeId, UInt32& pnAuthorID, UInt32& pnLanguage, UInt32& pnLocale, UInt16& pnTimeZone, Boolean& bTime24, Int16& pnCollation, UInt32& pnCollationLCID, Int16& pnCalendarType, Int16& pnAdjustHijriDays, Int16& pnAltCalendarType, Boolean& pbShowWeeks, Int16& pnFirstWeekOfYear, UInt32& pnFirstDayOfWeek, Int16& pnWorkDays, Int16& pnWorkDayStartHour, Int16& pnWorkDayEndHour, Int16& pnMeetingCount, Int32& plFlags, Boolean& bConnectedToPortal, String& pbstrPortalUrl, String& pbstrPortalName, Int32& plWebTemplateId, Int16& pnProvisionConfig, String& pbstrDefaultTheme, String& pbstrDefaultThemeCSSUrl, String& pbstrAlternateCSSUrl, String& pbstrCustomizedCssFileList, String& pbstrCustomJSUrl, String& pbstrAlternateHeaderUrl, String& pbstrMasterUrl, String& pbstrCustomMasterUrl, String& pbstrSiteLogoUrl, String& pbstrSiteLogoDescription, Object& pvarUser, Boolean& pvarIsAuditor, UInt64& ppermMask, Boolean& bUserIsSiteAdmin, Boolean& bHasUniquePerm, Guid& pguidUserInfoListID, Guid& pguidUniqueNavParent, Int32& plSiteFlags, DateTime& pdtLastContentChange, DateTime& pdtLastSecurityChange, String& pbstrWelcomePage)
at Microsoft.SharePoint.Library.SPRequest.OpenWeb(String bstrUrl, String& pbstrServerRelativeUrl, String& pbstrTitle, String& pbstrDescription, Guid& pguidID, String& pbstrRequestAccessEmail, UInt32& pwebVersion, Guid& pguidScopeId, UInt32& pnAuthorID, UInt32& pnLanguage, UInt32& pnLocale, UInt16& pnTimeZone, Boolean& bTime24, Int16& pnCollation, UInt32& pnCollationLCID, Int16& pnCalendarType, Int16& pnAdjustHijriDays, Int16& pnAltCalendarType, Boolean& pbShowWeeks, Int16& pnFirstWeekOfYear, UInt32& pnFirstDayOfWeek, Int16& pnWorkDays, Int16& pnWorkDayStartHour, Int16& pnWorkDayEndHour, Int16& pnMeetingCount, Int32& plFlags, Boolean& bConnectedToPortal, String& pbstrPortalUrl, String& pbstrPortalName, Int32& plWebTemplateId, Int16& pnProvisionConfig, String& pbstrDefaultTheme, String& pbstrDefaultThemeCSSUrl, String& pbstrAlternateCSSUrl, String& pbstrCustomizedCssFileList, String& pbstrCustomJSUrl, String& pbstrAlternateHeaderUrl, String& pbstrMasterUrl, String& pbstrCustomMasterUrl, String& pbstrSiteLogoUrl, String& pbstrSiteLogoDescription, Object& pvarUser, Boolean& pvarIsAuditor, UInt64& ppermMask, Boolean& bUserIsSiteAdmin, Boolean& bHasUniquePerm, Guid& pguidUserInfoListID, Guid& pguidUniqueNavParent, Int32& plSiteFlags, DateTime& pdtLastContentChange, DateTime& pdtLastSecurityChange, String& pbstrWelcomePage)
at Microsoft.SharePoint.SPWeb.InitWeb()
at Microsoft.SharePoint.SPWeb.get_UserInfoListId()
at Microsoft.SharePoint.SPListItem.CalculateEffectivePermMask(SPBasePermissions permIn)
at Microsoft.SharePoint.SPListItem.get_EffectiveBasePermissions()
at Microsoft.SharePoint.SPListItem.DoesUserHavePermissions(SPBasePermissions permissionMask)
at Microsoft.SharePoint.Workflow.SPWorkflowManager.StartWorkflow(SPListItem item, SPWorkflowAssociation association, String eventData, Boolean isAutoStart)
at Microsoft.SharePoint.Workflow.SPWorkflowManager.StartWorkflow(SPListItem item, SPWorkflowAssociation association, String eventData)
感谢您在这方面的帮助。在提升上下文中引用的复杂对象必须在该上下文中创建 因此:
elevatedSite.WorkflowManager.StartWorkflow(itemBeforeUpdate, ...
需要更改为以下内容:
elevatedItem = calendarList.GetItemById(itemBeforeUpdate.Id)
elevatedSite.WorkflowManager.StartWorkflow(elevatedItem, ...