代码之家  ›  专栏  ›  技术社区  ›  Philipp Schmid

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

  •  0
  • Philipp Schmid  · 技术社区  · 15 年前

    我正在通过调用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;
            }
       }
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Mike    15 年前

    也许把它们写在清单上?这可能是你最不麻烦的选择。

    另外,还有一个spworkflow.xml属性“返回以XML格式表示工作流实例的字符串”,但我从未尝试过。不过,将此内容传回SharePoint可能会很尴尬。

    推荐文章