void GetDependenciesForWorkflowService(XElement xml)
{
var loadXml = xml.Descendants("XamlDefinition").ToList();
if(loadXml.Count != 1)
{
return;
}
using(var textReader = new StringReader(loadXml[0].Value))
{
var errors = new StringBuilder();
try
{
var elementToUse = loadXml[0].HasElements ? loadXml[0] : XElement.Load(textReader, LoadOptions.None);
var dependenciesFromXml = from desc in elementToUse.Descendants()
where
(desc.Name.LocalName.Contains("DsfDatabaseActivity") ||
desc.Name.LocalName.Contains("DsfPluginActivity") ||
desc.Name.LocalName.Contains("DsfWebserviceActivity") ||
desc.Name.LocalName.Contains("DsfActivity")) &&
desc.Attribute("UniqueID") != null
select desc;
var xElements = dependenciesFromXml as List<XElement> ?? dependenciesFromXml.ToList();
var count = xElements.Count;
if(count > 0)
{
Dependencies = new List<IResourceForTree>();
xElements.ForEach(element =>
{
var uniqueIdAsString = element.AttributeSafe("UniqueID");
var resourceIdAsString = element.AttributeSafe("ResourceID");
var resourceName = element.AttributeSafe("ServiceName");
var actionTypeStr = element.AttributeSafe("Type");
var resourceType = GetResourceTypeFromString(actionTypeStr);
Guid uniqueId;
Guid.TryParse(uniqueIdAsString, out uniqueId);
Guid resId;
Guid.TryParse(resourceIdAsString, out resId);
Dependencies.Add(CreateResourceForTree(resId, uniqueId, resourceName, resourceType));
AddRemoteServerDependencies(element);
});
}
AddEmailSources(elementToUse);
AddDatabaseSourcesForSqlBulkInsertTool(elementToUse);
}
catch(Exception e)
{
var resName = xml.AttributeSafe("Name");
errors.AppendLine("Loading dependencies for [ " + resName + " ] caused " + e.Message);
}
}
}