/*
* 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:
///
/// -
///
///
CancelTimer
– Cancels a previously started timer and records a TimerCanceled
/// event in the history.
///
/// -
///
///
CancelWorkflowExecution
– Closes the workflow execution and records
/// a WorkflowExecutionCanceled
event in the history.
///
/// -
///
///
CompleteWorkflowExecution
– Closes the workflow execution and records
/// a WorkflowExecutionCompleted
event in the history .
///
/// -
///
///
ContinueAsNewWorkflowExecution
– Closes the workflow execution and starts
/// a new workflow execution of the same type using the same workflow ID and a unique
/// run Id. A WorkflowExecutionContinuedAsNew
event is recorded in the history.
///
/// -
///
///
FailWorkflowExecution
– Closes the workflow execution and records a
/// WorkflowExecutionFailed
event in the history.
///
/// -
///
///
RecordMarker
– Records a MarkerRecorded
event in the history.
/// Markers can be used for adding custom information in the history for instance to let
/// deciders know that they don't need to look at the history beyond the marker event.
///
/// -
///
///
RequestCancelActivityTask
– Attempts to cancel a previously scheduled
/// activity task. If the activity task was scheduled but has not been assigned to a worker,
/// then it is canceled. If the activity task was already assigned to a worker, then the
/// worker is informed that cancellation has been requested in the response to RecordActivityTaskHeartbeat.
///
/// -
///
///
RequestCancelExternalWorkflowExecution
– Requests that a request be
/// made to cancel the specified external workflow execution and records a RequestCancelExternalWorkflowExecutionInitiated
/// event in the history.
///
/// -
///
///
ScheduleActivityTask
– Schedules an activity task.
///
/// -
///
///
SignalExternalWorkflowExecution
– Requests a signal to be delivered
/// to the specified external workflow execution and records a SignalExternalWorkflowExecutionInitiated
/// event in the history.
///
/// -
///
///
StartChildWorkflowExecution
– Requests that a child workflow execution
/// be started and records a StartChildWorkflowExecutionInitiated
event in
/// the history. The child workflow execution is a separate workflow execution with its
/// own history.
///
/// -
///
///
StartTimer
– Starts a timer for this workflow execution and records
/// a TimerStarted
event in the history. This timer fires after the specified
/// delay and record a TimerFired
event.
///
///
///
/// 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
///
/// -
///
/// The ordering of decisions should follow a logical flow. Some decisions might not make
/// sense in the current context of the workflow execution and therefore fails.
///
///
-
///
/// A limit on your account was reached.
///
///
-
///
/// The decision lacks sufficient permissions.
///
///
///
/// 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.
///
/// -
///
///
ScheduleActivityTaskFailed
– A ScheduleActivityTask
decision
/// failed. This could happen if the activity type specified in the decision isn't registered,
/// is in a deprecated state, or the decision isn't properly configured.
///
/// -
///
///
RequestCancelActivityTaskFailed
– A RequestCancelActivityTask
/// decision failed. This could happen if there is no open activity task with the specified
/// activityId.
///
/// -
///
///
StartTimerFailed
– A StartTimer
decision failed. This could
/// happen if there is another open timer with the same timerId.
///
/// -
///
///
CancelTimerFailed
– A CancelTimer
decision failed. This
/// could happen if there is no open timer with the specified timerId.
///
/// -
///
///
StartChildWorkflowExecutionFailed
– A StartChildWorkflowExecution
/// decision failed. This could happen if the workflow type specified isn't registered,
/// is deprecated, or the decision isn't properly configured.
///
/// -
///
///
SignalExternalWorkflowExecutionFailed
– A SignalExternalWorkflowExecution
/// decision failed. This could happen if the workflowID
specified in the
/// decision was incorrect.
///
/// -
///
///
RequestCancelExternalWorkflowExecutionFailed
– A RequestCancelExternalWorkflowExecution
/// decision failed. This could happen if the workflowID
specified in the
/// decision was incorrect.
///
/// -
///
///
CancelWorkflowExecutionFailed
– A CancelWorkflowExecution
/// decision failed. This could happen if there is an unhandled decision task pending
/// in the workflow execution.
///
/// -
///
///
CompleteWorkflowExecutionFailed
– A CompleteWorkflowExecution
/// decision failed. This could happen if there is an unhandled decision task pending
/// in the workflow execution.
///
/// -
///
///
ContinueAsNewWorkflowExecutionFailed
– A ContinueAsNewWorkflowExecution
/// decision failed. This could happen if there is an unhandled decision task pending
/// in the workflow execution or the ContinueAsNewWorkflowExecution decision was not configured
/// correctly.
///
/// -
///
///
FailWorkflowExecutionFailed
– A FailWorkflowExecution
decision
/// failed. This could happen if there is an unhandled decision task pending in the workflow
/// execution.
///
///
///
/// 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;
}
}
}