diff --git a/src/VersionInfo.cs b/src/VersionInfo.cs index 56aa0ea..a2695b7 100644 --- a/src/VersionInfo.cs +++ b/src/VersionInfo.cs @@ -22,7 +22,7 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary /// Build Number (MMDD) /// Revision (if any on the same day) /// - internal const string Version = "2.18.0318.0"; + internal const string Version = "2.18.1110.0"; /// /// File Version information for the assembly consists of the following four values: @@ -31,6 +31,6 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary /// Build Number (MMDD) /// Revision (if any on the same day) /// - internal const string FileVersion = "2.18.0318.0"; + internal const string FileVersion = "2.18.1110.0"; } } \ No newline at end of file diff --git a/src/WorkflowActivityLibrary/Activities/AddDelay.cs b/src/WorkflowActivityLibrary/Activities/AddDelay.cs index 747f7b5..0843457 100644 --- a/src/WorkflowActivityLibrary/Activities/AddDelay.cs +++ b/src/WorkflowActivityLibrary/Activities/AddDelay.cs @@ -13,9 +13,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie #region Namespaces Declarations using System; + using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Globalization; + using System.Linq; using System.Workflow.Activities; using System.Workflow.ComponentModel; using MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common; @@ -173,6 +175,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.AddDelayOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.AddDelayOnSequenceComplete); + } + } + /// /// Handles the ExecuteCode event of the ParseExpressions CodeActivity. /// diff --git a/src/WorkflowActivityLibrary/Activities/CreateResource.cs b/src/WorkflowActivityLibrary/Activities/CreateResource.cs index 4e69c23..5880e11 100644 --- a/src/WorkflowActivityLibrary/Activities/CreateResource.cs +++ b/src/WorkflowActivityLibrary/Activities/CreateResource.cs @@ -590,6 +590,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.CreateResourceOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.CreateResourceOnSequenceComplete); + } + } + /// /// Handles the ExecuteCode event of the ParseDefinitions CodeActivity. /// diff --git a/src/WorkflowActivityLibrary/Activities/DeleteResources.cs b/src/WorkflowActivityLibrary/Activities/DeleteResources.cs index 743583d..15a79b9 100644 --- a/src/WorkflowActivityLibrary/Activities/DeleteResources.cs +++ b/src/WorkflowActivityLibrary/Activities/DeleteResources.cs @@ -362,6 +362,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.DeleteResourcesOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.DeleteResourcesOnSequenceComplete); + } + } + /// /// Handles the ExecuteCode event of the PrepareResolve CodeActivity. /// diff --git a/src/WorkflowActivityLibrary/Activities/GenerateUniqueValue.cs b/src/WorkflowActivityLibrary/Activities/GenerateUniqueValue.cs index 585d58c..0da9602 100644 --- a/src/WorkflowActivityLibrary/Activities/GenerateUniqueValue.cs +++ b/src/WorkflowActivityLibrary/Activities/GenerateUniqueValue.cs @@ -412,6 +412,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.GenerateUniqueValueOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.GenerateUniqueValueOnSequenceComplete); + } + } + /// /// Resolves the value filter. /// diff --git a/src/WorkflowActivityLibrary/Activities/RequestApproval.cs b/src/WorkflowActivityLibrary/Activities/RequestApproval.cs index 67dd29d..b07c184 100644 --- a/src/WorkflowActivityLibrary/Activities/RequestApproval.cs +++ b/src/WorkflowActivityLibrary/Activities/RequestApproval.cs @@ -408,6 +408,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.RequestApprovalOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.RequestApprovalOnSequenceComplete); + } + } + /// /// Handles the ExecuteCode event of the ParseExpressions CodeActivity. /// diff --git a/src/WorkflowActivityLibrary/Activities/RunPowerShellScript.cs b/src/WorkflowActivityLibrary/Activities/RunPowerShellScript.cs index fe0d889..69ac063 100644 --- a/src/WorkflowActivityLibrary/Activities/RunPowerShellScript.cs +++ b/src/WorkflowActivityLibrary/Activities/RunPowerShellScript.cs @@ -21,6 +21,7 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; + using System.Linq; using System.Management.Automation; using System.Management.Automation.Runspaces; using System.Reflection; @@ -516,6 +517,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.RunPowerShellScriptOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.RunPowerShellScriptOnSequenceComplete); + } + } + /// /// Sets up the PowerShell shell stream event handlers. /// diff --git a/src/WorkflowActivityLibrary/Activities/SendEmailNotification.cs b/src/WorkflowActivityLibrary/Activities/SendEmailNotification.cs index 2cf9e0d..e11d94d 100644 --- a/src/WorkflowActivityLibrary/Activities/SendEmailNotification.cs +++ b/src/WorkflowActivityLibrary/Activities/SendEmailNotification.cs @@ -525,6 +525,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.SendEmailNotificationOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.SendEmailNotificationOnSequenceComplete); + } + } + /// /// Converts the specified email template resolved expression into a Guid object /// diff --git a/src/WorkflowActivityLibrary/Activities/UpdateResources.cs b/src/WorkflowActivityLibrary/Activities/UpdateResources.cs index dbb50a6..f9e21a0 100644 --- a/src/WorkflowActivityLibrary/Activities/UpdateResources.cs +++ b/src/WorkflowActivityLibrary/Activities/UpdateResources.cs @@ -440,6 +440,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.UpdateResourcesOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.UpdateResourcesOnSequenceComplete); + } + } + /// /// Handles the ExecuteCode event of the Prepare CodeActivity. /// diff --git a/src/WorkflowActivityLibrary/Activities/VerifyRequest.cs b/src/WorkflowActivityLibrary/Activities/VerifyRequest.cs index 8d78beb..7806079 100644 --- a/src/WorkflowActivityLibrary/Activities/VerifyRequest.cs +++ b/src/WorkflowActivityLibrary/Activities/VerifyRequest.cs @@ -388,6 +388,35 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Activitie } } + /// + /// Determines the action taken when the activity has completed execution. + /// + /// The execution context of the activity. + protected override void OnSequenceComplete(ActivityExecutionContext executionContext) + { + Logger.Instance.WriteMethodEntry(EventIdentifier.VerifyRequestOnSequenceComplete); + + try + { + // Clear the variable cache for the expression evaluator + // so that any variables, such as SqlParameter, not marked as serializable does not cause dehyration issues. + if (this.ActivityExpressionEvaluator != null + && this.ActivityExpressionEvaluator.VariableCache != null + && this.ActivityExpressionEvaluator.VariableCache.Keys != null) + { + List variables = this.ActivityExpressionEvaluator.VariableCache.Keys.ToList(); + foreach (string variable in variables) + { + this.ActivityExpressionEvaluator.VariableCache[variable] = null; + } + } + } + finally + { + Logger.Instance.WriteMethodExit(EventIdentifier.VerifyRequestOnSequenceComplete); + } + } + /// /// Handles the ExecuteCode event of the Prepare CodeActivity. /// diff --git a/src/WorkflowActivityLibrary/Common/EventIdentifier.cs b/src/WorkflowActivityLibrary/Common/EventIdentifier.cs index 8157560..978dd32 100644 --- a/src/WorkflowActivityLibrary/Common/EventIdentifier.cs +++ b/src/WorkflowActivityLibrary/Common/EventIdentifier.cs @@ -128,6 +128,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int CreateResourceActorIsNotValueExpressionCondition = 10115; + /// + /// The event identifier for CreateResource OnSequenceComplete events + /// + public const int CreateResourceOnSequenceComplete = 10116; + /// /// The event identifier for DeleteResources Constructor events /// @@ -188,6 +193,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int DeleteResourcesActorIsNotValueExpressionCondition = 10212; + /// + /// The event identifier for DeleteResources OnSequenceComplete events + /// + public const int DeleteResourcesOnSequenceComplete = 10213; + /// /// The event identifier for GenerateUniqueValue Constructor events /// @@ -263,6 +273,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int GenerateUniqueValueRepositionUniquenessKey = 10315; + /// + /// The event identifier for GenerateUniqueValue OnSequenceComplete events + /// + public const int GenerateUniqueValueOnSequenceComplete = 10316; + /// /// The event identifier for RunPowerShellScript Constructor events /// @@ -303,6 +318,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int RunPowerShellScriptActivityExecutionConditionSatisfiedCondition = 10408; + /// + /// The event identifier for RunPowerShellScript OnSequenceComplete events + /// + public const int RunPowerShellScriptOnSequenceComplete = 10409; + /// /// The event identifier for UpdateResources Constructor events /// @@ -368,6 +388,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int UpdateResourcesForEachDynamicStringForResolutionChildCompleted = 10513; + /// + /// The event identifier for UpdateResources OnSequenceComplete events + /// + public const int UpdateResourcesOnSequenceComplete = 10514; + /// /// The event identifier for VerifyRequest Constructor events /// @@ -433,6 +458,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int VerifyRequestActivityExecutionConditionSatisfiedCondition = 10613; + /// + /// The event identifier for VerifyRequest OnSequenceComplete events + /// + public const int VerifyRequestOnSequenceComplete = 10614; + /// /// The event identifier for AsynchronousCreateResource Constructor events /// @@ -1458,6 +1488,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int AddDelayTraceWakeupExecuteCode = 12506; + /// + /// The event identifier for AddDelay OnSequenceComplete events + /// + public const int AddDelayOnSequenceComplete = 12507; + /// /// The event identifier for SendEmailNotification Constructor events /// @@ -1611,6 +1646,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int SendEmailNotificationQueriesHaveNoValueExpressionsCondition = 12630; + /// + /// The event identifier for SendEmailNotification OnSequenceComplete events + /// + public const int SendEmailNotificationOnSequenceComplete = 12631; + /// /// The event identifier for RequestApproval Constructor events /// @@ -1761,6 +1801,11 @@ namespace MicrosoftServices.IdentityManagement.WorkflowActivityLibrary.Common /// public const int RequestApprovalFormatRecipient = 12729; + /// + /// The event identifier for RequestApproval OnSequenceComplete events + /// + public const int RequestApprovalOnSequenceComplete = 12730; + #endregion #region "Informational Events"