在 BPM Metastorm 中获取地图变量列表
Getting list of Variables of map in BPM Metastorm
我正在尝试自动获取某些 map OUTSIDE 程序中的变量列表。我知道我可以在 .process 文件中找到它们,具有 xml 结构。
我还发现 "x:object" 变量包含 "x:Type" 以 "MboField}" 结尾。
但不幸的是我需要进一步缩小搜索条件,因为我仍然找不到将变量与其他对象分开的主要模式。
这是我当前在 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");
}
其中 "patches" 是我自己的 class 包含 .process 文件的补丁和变量组的可能名称,通常与地图名称相关。
我正在尝试自动获取某些 map OUTSIDE 程序中的变量列表。我知道我可以在 .process 文件中找到它们,具有 xml 结构。
我还发现 "x:object" 变量包含 "x:Type" 以 "MboField}" 结尾。
但不幸的是我需要进一步缩小搜索条件,因为我仍然找不到将变量与其他对象分开的主要模式。
这是我当前在 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");
}
其中 "patches" 是我自己的 class 包含 .process 文件的补丁和变量组的可能名称,通常与地图名称相关。