static SuspensionStateChange GetSuspensionReason(SaveWorkflowCommand saveWorkflowCommand, out string suspensionReason, out string suspensionExceptionName)
        {
            IDictionary <XName, InstanceValue> instanceMetadataChanges = saveWorkflowCommand.InstanceMetadataChanges;
            SuspensionStateChange suspensionStateChange = SuspensionStateChange.NoChange;
            InstanceValue         propertyValue;

            suspensionReason        = null;
            suspensionExceptionName = null;

            if (instanceMetadataChanges.TryGetValue(WorkflowServiceNamespace.SuspendReason, out propertyValue))
            {
                if (!propertyValue.IsDeletedValue)
                {
                    suspensionStateChange = SuspensionStateChange.SuspendInstance;
                    suspensionReason      = (string)propertyValue.Value;

                    if (instanceMetadataChanges.TryGetValue(WorkflowServiceNamespace.SuspendException, out propertyValue) && !propertyValue.IsDeletedValue)
                    {
                        suspensionExceptionName = ((Exception)propertyValue.Value).GetType().ToString();
                    }
                }
                else
                {
                    suspensionStateChange = SuspensionStateChange.UnsuspendInstance;
                }
            }

            return(suspensionStateChange);
        }
Beispiel #2
0
        private static SuspensionStateChange GetSuspensionReason(SaveWorkflowCommand saveWorkflowCommand, out string suspensionReason, out string suspensionExceptionName)
        {
            InstanceValue value2;
            IDictionary <XName, InstanceValue> instanceMetadataChanges = saveWorkflowCommand.InstanceMetadataChanges;
            SuspensionStateChange noChange = SuspensionStateChange.NoChange;

            suspensionReason        = null;
            suspensionExceptionName = null;
            if (!instanceMetadataChanges.TryGetValue(WorkflowServiceNamespace.SuspendReason, out value2))
            {
                return(noChange);
            }
            if (!value2.IsDeletedValue)
            {
                noChange         = SuspensionStateChange.SuspendInstance;
                suspensionReason = (string)value2.Value;
                if (instanceMetadataChanges.TryGetValue(WorkflowServiceNamespace.SuspendException, out value2) && !value2.IsDeletedValue)
                {
                    suspensionExceptionName = ((Exception)value2.Value).GetType().ToString();
                }
                return(noChange);
            }
            return(SuspensionStateChange.UnsuspendInstance);
        }