Sharepoint 2007 SharePoint:在StartWorkflow()终止后访问工作流变量

Sharepoint 2007 SharePoint:在StartWorkflow()终止后访问工作流变量,sharepoint-2007,workflow,Sharepoint 2007,Workflow,我正在通过调用workflowManager.StartWorkflow()从SharePoint事件接收器以编程方式运行SharePoint工作流 工作流正在执行期间设置一些工作流变量。是否有方法在工作流终止后访问这些变量的最后一个值(例如,对StartWorkflow()的调用返回) 下面是我的示例代码,演示了我的意图: public override void ItemAdded(SPItemEventProperties properties) { SPW

我正在通过调用workflowManager.StartWorkflow()从SharePoint事件接收器以编程方式运行SharePoint工作流

工作流正在执行期间设置一些工作流变量。是否有方法在工作流终止后访问这些变量的最后一个值(例如,对StartWorkflow()的调用返回)

下面是我的示例代码,演示了我的意图:

    public override void ItemAdded(SPItemEventProperties properties)
    {
        SPWorkflow workflow = null;
        SPWorkflowManager workflowManager = null;
        try
        {
            base.ItemAdded(properties);

            workflowManager = properties.OpenWeb().Site.WorkflowManager;
            var workflowAssociation = properties.ListItem.ParentList.WorkflowAssociations[0];

            workflow = workflowManager.StartWorkflow(properties.ListItem, workflowAssociation, "<Data></Data>");

            // I can read any fields that were updated by the WF
            SPListItem item = properties.ListItem.ParentList.GetItemById(properties.ListItemId);
            string validationResult = (string) item["ValidationResult"];

            // how can I access any workflow variables created during execution?
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
            if (workflow != null && workflowManager != null)
            {
                SPWorkflowManager.CancelWorkflow(workflow);
            }
            throw;
        }
   }
添加了公共覆盖无效项(SPItemEventProperties属性) { SPWorkflow=null; SPWorkflowManager workflowManager=null; 尝试 { 基本。添加的项目(属性); workflowManager=properties.OpenWeb().Site.workflowManager; var workflowAssociation=properties.ListItem.ParentList.WorkflowAssociations[0]; 工作流=workflowManager.StartWorkflow(properties.ListItem,workflowAssociation,“”); //我可以读取WF更新的任何字段 SPListItem=properties.ListItem.ParentList.GetItemById(properties.ListItemId); 字符串validationResult=(字符串)项[“validationResult”]; //如何访问执行期间创建的任何工作流变量? } 捕获(例外情况除外) { Debug.WriteLine(ex); if(工作流!=null&&workflowManager!=null) { SPWorkflowManager.CancelWorkflow(工作流); } 投 } }
是否可以将它们写在列表中?这可能是你最不麻烦的选择

或者,还有一个SPWorkflow.Xml属性“返回一个以Xml格式表示工作流实例的字符串”,但我从未尝试过。尽管将此信息传递回SharePoint可能会很尴尬