protected void ProcessWorkflow()

in src/MIMConfigDocumenter/MIMServicePolicyDocumenter.cs [1317:1416]


        protected void ProcessWorkflow()
        {
            Logger.Instance.WriteMethodEntry();

            try
            {
                this.PrintSimpleSectionHeader(4);

                // General Info
                this.CreateSimpleMultivalueOrderedSettingsDiffgramDataSet();
                this.FillSimpleMultivalueOrderedSettingsDiffgramDataSet(new KeyValuePair<string, string>[]
                {
                    new KeyValuePair<string, string>("Resource Type", "ObjectType"),
                    new KeyValuePair<string, string>("Display Name", "DisplayName"),
                    new KeyValuePair<string, string>("Description", "Description"),
                    new KeyValuePair<string, string>("Workflow Type", "RequestPhase"),
                    new KeyValuePair<string, string>("Run On Policy Update", "RunOnPolicyUpdate"),
                });
                this.PrintSimpleSettingsSectionTable(new OrderedDictionary { { "General", 30 }, { string.Empty, 70 } }, HtmlTableSize.Large);

                // Workflow Activties
                this.CreateWorkflowActivityDetailsDataSets();
                this.FillWorkflowActivityDetails(true);
                this.FillWorkflowActivityDetails(false);

                this.CreateWorkflowActivityAssemblyVersionDiffgramDataSet();
                this.CreateWorkflowActivitySelectedOptionsDiffgramDataSet();
                this.CreateWorkflowActivityMultiValuesDiffgramDataSet();
                this.CreateWorkflowActivityValueExpressionsDiffgramDataSet();
                this.CreateWorkflowActivityUpdateExpressionsDiffgramDataSet();

                foreach (DataRow row in this.DiffgramDataSets[0].Tables[0].Rows)
                {
                    this.WriteBreakTag();

                    var activityIndex = (int)row["ActivityIndex"];
                    var activityType = (string)row["Activity Type"];
                    this.PrintWorkflowAssemblyVersion(activityIndex);
                    this.PrintWorkflowSelectedOptions(activityIndex);
                    switch (activityType)
                    {
                        case "QAAuthenticationGate":
                            this.PrintWorkflowActivityMultiValuesTable(activityIndex, new OrderedDictionary { { "QAGate Questions", 100 } });
                            break;
                        case "VerifyRequest":
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 1, "Contitions", new OrderedDictionary { { "Required Condition for the Request", 50 }, { "Denial Message if Condition is not Satisfied", 50 } });
                            break;
                        case "CreateResource":
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 1, "Query Resources", new OrderedDictionary { { "Query Key", 20 }, { "XPath Filter", 80 } });
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 2, "Attributes", new OrderedDictionary { { "Source Expression", 70 }, { "Target", 30 } });
                            break;
                        case "UpdateResources":
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 1, "Query Resources", new OrderedDictionary { { "Query Key", 20 }, { "XPath Filter", 80 } });
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 2, "Updates", new OrderedDictionary { { "Source Expression", 70 }, { "Target", 25 }, { "Allow Null", 5 } });
                            break;
                        case "GenerateUniqueValue":
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 1, "LDAP Queries", new OrderedDictionary { { "Directory Entry Path", 35 }, { "LDAP Filter", 65 } });
                            this.PrintWorkflowActivityMultiValuesTable(activityIndex, new OrderedDictionary { { "UniqueValue Expression", 100 } });
                            break;
                        case "RunPowerShellScript":
                            this.PrintWorkflowActivityValueExpressionsTable(activityIndex, 1, "Parameters", new OrderedDictionary { { "Parameter", 30 }, { "Value Expression", 70 } });
                            this.PrintWorkflowActivityMultiValuesTable(activityIndex, new OrderedDictionary { { "Arguments", 100 } });
                            break;
                        case "DeleteResources":
                        case "AddDelay":
                        case "SendEmailNotification":
                        case "RequestApproval":
                        case "PWResetActivity":
                        case "ApprovalActivity":
                        case "FilterValidationActivity":
                        case "FunctionActivity":
                        case "GroupValidationActivity":
                        case "EmailNotificationActivity":
                        case "RequestorValidationActivity":
                        case "SynchronizationRuleActivity":
                        case "CreateResourceActivity":
                        case "ReadResourceActivity":
                        case "UpdateResourceActivity":
                        case "DeleteResourceActivity":
                        case "PAMRequestHandlerActivity":
                        case "AddUserToGroupActivity":
                        case "PAMRequestValidationActivity":
                        case "PAMRequestMFASequenceActivity":
                        case "PAMRequestApprovalSequenceActivity":
                        case "PAMRequestDelayedValidationSequenceActivity":
                        case "PAMRequestAvailabilityWindowValidationActivity":
                        case "PasswordCheckGate":
                        case "LockoutGate":
                            break;
                        default:
                            this.PrintWorkflowActivityUnhandledWarning(activityType);
                            break;
                    }
                }
            }
            finally
            {
                Logger.Instance.WriteMethodExit();
            }
        }