2009-11-12 66 views
0

我已經創建了SharePoint 2007順序工作流,並試圖以編程方式激活兩個工作流(一個批准和一個反饋)。通過SharePoint中的自定義順序工作流調用工作流

workflowProperties.Site.WorkflowManager.StartWorkflow(workflowProperties.Item, association, association.AssociationData, true); 

我使用此代碼來啓動工作流程,並且關聯在飛行中創建。當我嘗試訪問其他列表以創建關聯對象時,問題就出現了。

SPList approvalsList = workflowProperties.Web.Lists["Tasks"]; 
SPList historyList = workflowProperties.Web.Lists["Workflow History"]; 

這就是我得到:

Unable to cast COM object of type 'Microsoft.SharePoint.Library.SPRequestInternalClass' to interface type 'Microsoft.SharePoint.Library.ISPRequest'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{BDEADEBE-C265-11D0-BCED-00A0C90AB50F}' failed due to the following error: Bad variable type. (Exception from HRESULT: 0x80020008 (DISP_E_BADVARTYPE)). 

可訪問的唯一列表是通過workflowProperties.List。我如何完成這項工作,或者是否有更好的方法來調用自定義工作流中的其他工作流?

回答

0

我使用Useful Sharepoint Designer Custom Workflow Activities來啓動另一個工作流程。
如果您不能按原樣使用它,請查看其源代碼。它看起來不像他們手動設置任務和歷史列表: http://spdactivities.codeplex.com/SourceControl/changeset/view/22637#201408

+0

我會接受這個答案,雖然我不能真正地使用它作爲我的項目已提交=)另外,我做了相當多的在我來到SO之前我自己的搜索;這是除了使用我們最終使用的破解之外最後的手段(實際上更多的是妥協而不是任何事情)。另外,調用兩個工作流程的問題是你必須在同一個線程中。由於某些原因,您無法從自定義工作流程訪問確切的SP上下文,因爲它不會在相同的執行線程中運行。我不知道你的答案是否有效,但我們希望它能幫助其他人。 – Jaryl 2009-12-02 17:10:59

+0

Hey Jaryl。對不起,我忍不住。雖然我喜歡接受的答案,但更好的做法是添加並接受自己的答案 - 它確實解決了您的問題,並且更可能幫助某人:) – Kobi 2009-12-03 05:23:28