2017-02-28 1 views
1


J'essaie d'obtenir la liste des variables dans un programme OUTSIDE de la carte automatiquement. Je sais que je peux les trouver dans le fichier .process, avec la structure xml.
J'ai également compris que "x: object" avec variable contient "x: Type" se terminant par "MboField}".
Mais malheureusement, j'ai besoin de resserrer davantage les critères de recherche, car je ne trouve toujours pas le modèle principal pour séparer les variables des autres objets.
Ceci est mon code actuel en C#:Obtenir la liste des variables de la carte dans BPM Metastorm

  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(); 

Toute autre façons de trouver des variables entre autres?

Répondre

0
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"); 
    } 

Où « patches » est mon propre timbre contenant classe pour les noms de fichiers poids.Procédé et possibles du groupe de variables, généralement liée au nom de la carte.