获取BPM转移型中MAP变量的列表




我正在尝试在某些地图外部程序中自动获取变量列表。我知道我可以在.process文件中找到它们,并带有XML结构。
我还发现带有变量的" x:对象"包含" x:type"以" mbofield}"结尾。
但是不幸的是,我需要更狭窄的搜索标准,因为我仍然找不到主要的patern来将变量与其他对象分开。
这是我当前的C#中的代码:

            var xdoc = XDocument.Load(patches.ProcessFilePatch);
        var xmlns = XNamespace.Get("http://schema.metastorm.com/Metastorm.Common.Markup");
        IEnumerable<string> values = from x in xdoc.Descendants(xmlns+"Object")
                                     where x.Attribute(xmlns+"Type").Value.ToString().EndsWith("MboField}")
                                     select x.Attribute(xmlns+"Name").Value.ToString();
        VariablesInProcessFile = values.ToList();

其他任何找到变量的方法?

    private void getVariablesInProcessFile()
    {
        var xdoc = XDocument.Load(patches.ProcessFilePatch);
        var xmlns = XNamespace.Get("http://schema.metastorm.com/Metastorm.Common.Markup");
       var dane = xdoc.Descendants(xmlns + "Object").Where(x => CheckAttributes(x, xmlns)).ToArray();
        IEnumerable<string> valuesE = from x in dane.Descendants(xmlns + "Object")
                                       where x.Attribute(xmlns + "Type").Value.ToString().EndsWith("MboField}")
                                       select x.Attribute(xmlns + "Name").Value.ToString();
        VariablesInProcessFile = valuesE.ToList();
    }
    private bool CheckAttributes(XElement x, XNamespace xmlns)
    {
        var wynik = x.Attribute(xmlns + "Name");
        return wynik != null && (wynik.Value == patches.MapName + "Data" || wynik.Value == patches.altMapName + "Data");
    }

其中"补丁"是我自己的类,其中包含对.process文件的补丁程序和变量组的可能名称,通常与地图的名称有关。

最新更新