/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the swf-2012-01-25.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.SimpleWorkflow.Model { /// /// Specifies a decision made by the decider. A decision can be one of these types: /// /// /// /// Access Control /// /// /// /// If you grant permission to use RespondDecisionTaskCompleted, you can /// use IAM policies to express permissions for the list of decisions returned by this /// action as if they were members of the API. Treating decisions as a pseudo API maintains /// a uniform conceptual model and helps keep policies readable. For details and example /// IAM policies, see Using /// IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. /// /// /// /// Decision Failure /// /// /// /// Decisions can fail for several reasons /// /// /// /// One of the following events might be added to the history to indicate an error. The /// event attribute's cause parameter indicates the cause. If cause /// is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked /// sufficient permissions. For details and example IAM policies, see Using /// IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF Developer Guide. /// /// /// /// The preceding error events might occur due to an error in the decider logic, which /// might put the workflow execution in an unstable state The cause field in the event /// structure for the error event indicates the cause of the error. /// /// /// /// A workflow execution may be closed by the decider by returning one of the following /// decisions when completing a decision task: CompleteWorkflowExecution, /// FailWorkflowExecution, CancelWorkflowExecution and ContinueAsNewWorkflowExecution. /// An UnhandledDecision fault is returned if a workflow closing decision /// is specified and a signal or activity event had been added to the history while the /// decision task was being performed by the decider. Unlike the above situations which /// are logic issues, this fault is always possible because of race conditions in a distributed /// system. The right action here is to call RespondDecisionTaskCompleted without /// any decisions. This would result in another decision task with these new events included /// in the history. The decider should handle the new events and may decide to close the /// workflow execution. /// /// /// /// How to Code a Decision /// /// /// /// You code a decision by first setting the decision type field to one of the above decision /// values, and then set the corresponding attributes field shown below: /// /// /// public partial class Decision { private CancelTimerDecisionAttributes _cancelTimerDecisionAttributes; private CancelWorkflowExecutionDecisionAttributes _cancelWorkflowExecutionDecisionAttributes; private CompleteWorkflowExecutionDecisionAttributes _completeWorkflowExecutionDecisionAttributes; private ContinueAsNewWorkflowExecutionDecisionAttributes _continueAsNewWorkflowExecutionDecisionAttributes; private DecisionType _decisionType; private FailWorkflowExecutionDecisionAttributes _failWorkflowExecutionDecisionAttributes; private RecordMarkerDecisionAttributes _recordMarkerDecisionAttributes; private RequestCancelActivityTaskDecisionAttributes _requestCancelActivityTaskDecisionAttributes; private RequestCancelExternalWorkflowExecutionDecisionAttributes _requestCancelExternalWorkflowExecutionDecisionAttributes; private ScheduleActivityTaskDecisionAttributes _scheduleActivityTaskDecisionAttributes; private ScheduleLambdaFunctionDecisionAttributes _scheduleLambdaFunctionDecisionAttributes; private SignalExternalWorkflowExecutionDecisionAttributes _signalExternalWorkflowExecutionDecisionAttributes; private StartChildWorkflowExecutionDecisionAttributes _startChildWorkflowExecutionDecisionAttributes; private StartTimerDecisionAttributes _startTimerDecisionAttributes; /// /// Gets and sets the property CancelTimerDecisionAttributes. /// /// Provides the details of the CancelTimer decision. It isn't set for other /// decision types. /// /// public CancelTimerDecisionAttributes CancelTimerDecisionAttributes { get { return this._cancelTimerDecisionAttributes; } set { this._cancelTimerDecisionAttributes = value; } } // Check to see if CancelTimerDecisionAttributes property is set internal bool IsSetCancelTimerDecisionAttributes() { return this._cancelTimerDecisionAttributes != null; } /// /// Gets and sets the property CancelWorkflowExecutionDecisionAttributes. /// /// Provides the details of the CancelWorkflowExecution decision. It isn't /// set for other decision types. /// /// public CancelWorkflowExecutionDecisionAttributes CancelWorkflowExecutionDecisionAttributes { get { return this._cancelWorkflowExecutionDecisionAttributes; } set { this._cancelWorkflowExecutionDecisionAttributes = value; } } // Check to see if CancelWorkflowExecutionDecisionAttributes property is set internal bool IsSetCancelWorkflowExecutionDecisionAttributes() { return this._cancelWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property CompleteWorkflowExecutionDecisionAttributes. /// /// Provides the details of the CompleteWorkflowExecution decision. It isn't /// set for other decision types. /// /// public CompleteWorkflowExecutionDecisionAttributes CompleteWorkflowExecutionDecisionAttributes { get { return this._completeWorkflowExecutionDecisionAttributes; } set { this._completeWorkflowExecutionDecisionAttributes = value; } } // Check to see if CompleteWorkflowExecutionDecisionAttributes property is set internal bool IsSetCompleteWorkflowExecutionDecisionAttributes() { return this._completeWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property ContinueAsNewWorkflowExecutionDecisionAttributes. /// /// Provides the details of the ContinueAsNewWorkflowExecution decision. /// It isn't set for other decision types. /// /// public ContinueAsNewWorkflowExecutionDecisionAttributes ContinueAsNewWorkflowExecutionDecisionAttributes { get { return this._continueAsNewWorkflowExecutionDecisionAttributes; } set { this._continueAsNewWorkflowExecutionDecisionAttributes = value; } } // Check to see if ContinueAsNewWorkflowExecutionDecisionAttributes property is set internal bool IsSetContinueAsNewWorkflowExecutionDecisionAttributes() { return this._continueAsNewWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property DecisionType. /// /// Specifies the type of the decision. /// /// [AWSProperty(Required=true)] public DecisionType DecisionType { get { return this._decisionType; } set { this._decisionType = value; } } // Check to see if DecisionType property is set internal bool IsSetDecisionType() { return this._decisionType != null; } /// /// Gets and sets the property FailWorkflowExecutionDecisionAttributes. /// /// Provides the details of the FailWorkflowExecution decision. It isn't /// set for other decision types. /// /// public FailWorkflowExecutionDecisionAttributes FailWorkflowExecutionDecisionAttributes { get { return this._failWorkflowExecutionDecisionAttributes; } set { this._failWorkflowExecutionDecisionAttributes = value; } } // Check to see if FailWorkflowExecutionDecisionAttributes property is set internal bool IsSetFailWorkflowExecutionDecisionAttributes() { return this._failWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property RecordMarkerDecisionAttributes. /// /// Provides the details of the RecordMarker decision. It isn't set for other /// decision types. /// /// public RecordMarkerDecisionAttributes RecordMarkerDecisionAttributes { get { return this._recordMarkerDecisionAttributes; } set { this._recordMarkerDecisionAttributes = value; } } // Check to see if RecordMarkerDecisionAttributes property is set internal bool IsSetRecordMarkerDecisionAttributes() { return this._recordMarkerDecisionAttributes != null; } /// /// Gets and sets the property RequestCancelActivityTaskDecisionAttributes. /// /// Provides the details of the RequestCancelActivityTask decision. It isn't /// set for other decision types. /// /// public RequestCancelActivityTaskDecisionAttributes RequestCancelActivityTaskDecisionAttributes { get { return this._requestCancelActivityTaskDecisionAttributes; } set { this._requestCancelActivityTaskDecisionAttributes = value; } } // Check to see if RequestCancelActivityTaskDecisionAttributes property is set internal bool IsSetRequestCancelActivityTaskDecisionAttributes() { return this._requestCancelActivityTaskDecisionAttributes != null; } /// /// Gets and sets the property RequestCancelExternalWorkflowExecutionDecisionAttributes. /// /// /// Provides the details of the RequestCancelExternalWorkflowExecution decision. /// It isn't set for other decision types. /// /// public RequestCancelExternalWorkflowExecutionDecisionAttributes RequestCancelExternalWorkflowExecutionDecisionAttributes { get { return this._requestCancelExternalWorkflowExecutionDecisionAttributes; } set { this._requestCancelExternalWorkflowExecutionDecisionAttributes = value; } } // Check to see if RequestCancelExternalWorkflowExecutionDecisionAttributes property is set internal bool IsSetRequestCancelExternalWorkflowExecutionDecisionAttributes() { return this._requestCancelExternalWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property ScheduleActivityTaskDecisionAttributes. /// /// Provides the details of the ScheduleActivityTask decision. It isn't set /// for other decision types. /// /// public ScheduleActivityTaskDecisionAttributes ScheduleActivityTaskDecisionAttributes { get { return this._scheduleActivityTaskDecisionAttributes; } set { this._scheduleActivityTaskDecisionAttributes = value; } } // Check to see if ScheduleActivityTaskDecisionAttributes property is set internal bool IsSetScheduleActivityTaskDecisionAttributes() { return this._scheduleActivityTaskDecisionAttributes != null; } /// /// Gets and sets the property ScheduleLambdaFunctionDecisionAttributes. /// /// Provides the details of the ScheduleLambdaFunction decision. It isn't /// set for other decision types. /// /// public ScheduleLambdaFunctionDecisionAttributes ScheduleLambdaFunctionDecisionAttributes { get { return this._scheduleLambdaFunctionDecisionAttributes; } set { this._scheduleLambdaFunctionDecisionAttributes = value; } } // Check to see if ScheduleLambdaFunctionDecisionAttributes property is set internal bool IsSetScheduleLambdaFunctionDecisionAttributes() { return this._scheduleLambdaFunctionDecisionAttributes != null; } /// /// Gets and sets the property SignalExternalWorkflowExecutionDecisionAttributes. /// /// Provides the details of the SignalExternalWorkflowExecution decision. /// It isn't set for other decision types. /// /// public SignalExternalWorkflowExecutionDecisionAttributes SignalExternalWorkflowExecutionDecisionAttributes { get { return this._signalExternalWorkflowExecutionDecisionAttributes; } set { this._signalExternalWorkflowExecutionDecisionAttributes = value; } } // Check to see if SignalExternalWorkflowExecutionDecisionAttributes property is set internal bool IsSetSignalExternalWorkflowExecutionDecisionAttributes() { return this._signalExternalWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property StartChildWorkflowExecutionDecisionAttributes. /// /// Provides the details of the StartChildWorkflowExecution decision. It /// isn't set for other decision types. /// /// public StartChildWorkflowExecutionDecisionAttributes StartChildWorkflowExecutionDecisionAttributes { get { return this._startChildWorkflowExecutionDecisionAttributes; } set { this._startChildWorkflowExecutionDecisionAttributes = value; } } // Check to see if StartChildWorkflowExecutionDecisionAttributes property is set internal bool IsSetStartChildWorkflowExecutionDecisionAttributes() { return this._startChildWorkflowExecutionDecisionAttributes != null; } /// /// Gets and sets the property StartTimerDecisionAttributes. /// /// Provides the details of the StartTimer decision. It isn't set for other /// decision types. /// /// public StartTimerDecisionAttributes StartTimerDecisionAttributes { get { return this._startTimerDecisionAttributes; } set { this._startTimerDecisionAttributes = value; } } // Check to see if StartTimerDecisionAttributes property is set internal bool IsSetStartTimerDecisionAttributes() { return this._startTimerDecisionAttributes != null; } } }