2011-01-31 18 views
1

私はコードを開始しているカスタムワークフローを持っています。私はワークフローを開始するために次のコードを使用しています。Sharepointワークフローを開始する際の問題

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イベントハンドラcode.Wheneverが取り付けられている、それはしかし、時にはワークフローがある正常に動作しているitem.Though同じのため、すでに新しいワークフローを添付して作成されたワークフローをキャンセルしかし、以前のワークフローはキャンセルされています。 私が得ているスタックトレースは以下の通りです。

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) 

これに関するお手伝いをしてください。あなたが昇格コンテキスト内で参照

答えて

2

複雑なオブジェクトする必要がありますので、このことに関連

内に作成され

elevatedItem = calendarList.GetItemById(itemBeforeUpdate.Id) 
elevatedSite.WorkflowManager.StartWorkflow(elevatedItem, ... 

elevatedSite.WorkflowManager.StartWorkflow(itemBeforeUpdate, ... 

はこのようなものに変更する必要があります

関連する問題