in src/MIMConfigDocumenter/MIMServicePolicyDocumenter.cs [1538:1633]
protected void FillWorkflowActivityDetails(bool pilotConfig)
{
Logger.Instance.WriteMethodEntry("Pilot Config: '{0}'.", pilotConfig);
try
{
var dataSet = pilotConfig ? this.PilotDataSet : this.ProductionDataSet;
var activityBaseTable = dataSet.Tables[0];
var activityAssemblyVersionTable = dataSet.Tables[1];
var activitySelectedOptionsTable = dataSet.Tables[2];
var activityConfigurationMultivaluesTable = dataSet.Tables[3];
var activityValueExpressionsTable = dataSet.Tables[4];
var activityUpdateExpressionsTable = dataSet.Tables[5];
var xomlChange = this.GetAttributeChange("XOML");
var xomlXml = ServiceCommonDocumenter.ConvertXomlToSimplifiedXml(pilotConfig ? xomlChange.NewValueText : xomlChange.OldValueText);
if (xomlXml != null)
{
var activities = xomlXml.Elements();
for (var activityIndex = 0; activityIndex < activities.Count(); ++activityIndex)
{
var activity = activities.ElementAt(activityIndex);
var activityType = activity.Name.LocalName;
if (activityType == "AuthenticationGateActivity")
{
activity = activity.XPathSelectElement("AuthenticationGateActivity.AuthenticationGate/child::node()");
activityType = activity.Name.LocalName;
}
var assemblyVersion = activity.Attribute("AssemblyVersion");
var activityDisplayName = (string)activity.Attribute("ActivityDisplayName");
activityDisplayName = string.IsNullOrEmpty(activityDisplayName) ? activityType : activityDisplayName + " (" + activityType + ")";
Documenter.AddRow(activityBaseTable, new object[] { activityIndex, activityType, activityDisplayName });
Documenter.AddRow(activityAssemblyVersionTable, new object[] { activityIndex, assemblyVersion });
foreach (var attribute in activity.Attributes().Where(attribute => !attribute.IsNamespaceDeclaration))
{
if (attribute.Name == "AssemblyVersion")
{
continue;
}
var selectedOption = attribute.Name.LocalName;
var optionValue = attribute.Value;
var optionValueMarkup = attribute.Value;
if (ServiceCommonDocumenter.IsGuid(optionValue))
{
var valueModificationType = this.Environment == ConfigEnvironment.PilotOnly ? DataRowState.Added : this.Environment == ConfigEnvironment.ProductionOnly ? DataRowState.Deleted : DataRowState.Unchanged; // Or should it be modified?
var resolvedValue = TryResolveReferences(optionValue, pilotConfig, valueModificationType);
optionValueMarkup = resolvedValue.Item1;
optionValue = resolvedValue.Item2;
}
if (optionValue != "{x:Null}" && optionValue != "00000000-0000-0000-0000-000000000000" && selectedOption != "Name" && selectedOption != "ActivityDisplayName")
{
Documenter.AddRow(activitySelectedOptionsTable, new object[] { activityIndex, selectedOption, WebUtility.HtmlEncode(optionValueMarkup), optionValue });
}
}
switch (activityType)
{
case "QAAuthenticationGate":
this.FillWorkflowActivityExpressionsList(activityConfigurationMultivaluesTable, activity.XPathSelectElement("QAAuthenticationGate.Questions/Array"), activityIndex);
break;
case "VerifyRequest":
this.FillWorkflowActivityValueExpressions(activityValueExpressionsTable, activity.XPathSelectElement("VerifyRequest.ConditionsTable/Hashtable"), activityIndex, 1);
break;
case "CreateResource":
this.FillWorkflowActivityValueExpressions(activityValueExpressionsTable, activity.XPathSelectElement("CreateResource.QueriesTable/Hashtable"), activityIndex, 1);
this.FillWorkflowActivityValueExpressions(activityValueExpressionsTable, activity.XPathSelectElement("CreateResource.AttributesTable/Hashtable"), activityIndex, 2);
break;
case "UpdateResources":
this.FillWorkflowActivityValueExpressions(activityValueExpressionsTable, activity.XPathSelectElement("UpdateResources.QueriesTable/Hashtable"), activityIndex, 1);
this.FillWorkflowActivityValueExpressions(activityUpdateExpressionsTable, activity.XPathSelectElement("UpdateResources.UpdatesTable/Hashtable"), activityIndex, 2);
break;
case "GenerateUniqueValue":
this.FillWorkflowActivityValueExpressions(activityValueExpressionsTable, activity.XPathSelectElement("GenerateUniqueValue.LdapQueriesTable/Hashtable"), activityIndex, 1);
this.FillWorkflowActivityExpressionsList(activityConfigurationMultivaluesTable, activity.XPathSelectElement("GenerateUniqueValue.ValueExpressions/ArrayList"), activityIndex);
break;
case "RunPowerShellScript":
this.FillWorkflowActivityValueExpressions(activityValueExpressionsTable, activity.XPathSelectElement("RunPowerShellScript.ParametersTable/Hashtable"), activityIndex, 1);
this.FillWorkflowActivityExpressionsList(activityConfigurationMultivaluesTable, activity.XPathSelectElement("RunPowerShellScript.Arguments/ArrayList"), activityIndex);
break;
}
}
}
}
finally
{
Logger.Instance.WriteMethodExit("Pilot Config: '{0}'.", pilotConfig);
}
}