/* * Copyright 2012-2017 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. */ package com.amazonaws.services.simpleworkflow.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** * <p> * Specifies a decision made by the decider. A decision can be one of these types: * </p> * <ul> * <li><b>CancelTimer</b>: cancels a previously started timer and records a <code>TimerCanceled</code> event in the * history.</li> * <li><b>CancelWorkflowExecution</b>: closes the workflow execution and records a * <code>WorkflowExecutionCanceled</code> event in the history.</li> * <li><b>CompleteWorkflowExecution</b>: closes the workflow execution and records a * <code>WorkflowExecutionCompleted</code> event in the history .</li> * <li><b>ContinueAsNewWorkflowExecution</b>: 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 <code>WorkflowExecutionContinuedAsNew</code> event is * recorded in the history.</li> * <li><b>FailWorkflowExecution</b>: closes the workflow execution and records a <code>WorkflowExecutionFailed</code> * event in the history.</li> * <li><b>RecordMarker</b>: records a <code>MarkerRecorded</code> event in the history. Markers can be used for adding * custom information in the history for instance to let deciders know that they do not need to look at the history * beyond the marker event.</li> * <li><b>RequestCancelActivityTask</b>: attempts to cancel a previously scheduled activity task. If the activity task * was scheduled but has not been assigned to a worker, then it will be canceled. If the activity task was already * assigned to a worker, then the worker will be informed that cancellation has been requested in the response to * <a>RecordActivityTaskHeartbeat</a>.</li> * <li><b>RequestCancelExternalWorkflowExecution</b>: requests that a request be made to cancel the specified external * workflow execution and records a <code>RequestCancelExternalWorkflowExecutionInitiated</code> event in the history.</li> * <li><b>ScheduleActivityTask</b>: schedules an activity task.</li> * <li><b>ScheduleLambdaFunction</b>: schedules a AWS Lambda function.</li> * <li><b>SignalExternalWorkflowExecution</b>: requests a signal to be delivered to the specified external workflow * execution and records a <code>SignalExternalWorkflowExecutionInitiated</code> event in the history.</li> * <li><b>StartChildWorkflowExecution</b>: requests that a child workflow execution be started and records a * <code>StartChildWorkflowExecutionInitiated</code> event in the history. The child workflow execution is a separate * workflow execution with its own history.</li> * <li><b>StartTimer</b>: starts a timer for this workflow execution and records a <code>TimerStarted</code> event in * the history. This timer will fire after the specified delay and record a <code>TimerFired</code> event.</li> * </ul> * <p> * <b>Access Control</b> * </p> * <p> * If you grant permission to use <code>RespondDecisionTaskCompleted</code>, 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 <a href="http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to * Manage Access to Amazon SWF Workflows</a>. * </p> * <p> * <b>Decision Failure</b> * </p> * <p> * Decisions can fail for several reasons * </p> * <ul> * <li>The ordering of decisions should follow a logical flow. Some decisions might not make sense in the current * context of the workflow execution and will therefore fail.</li> * <li>A limit on your account was reached.</li> * <li>The decision lacks sufficient permissions.</li> * </ul> * <p> * One of the following events might be added to the history to indicate an error. The event attribute's <b>cause</b> * parameter indicates the cause. If <b>cause</b> is set to OPERATION_NOT_PERMITTED, the decision failed because it * lacked sufficient permissions. For details and example IAM policies, see <a * href="http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">Using IAM to Manage Access to * Amazon SWF Workflows</a>. * </p> * <ul> * <li><b>ScheduleActivityTaskFailed</b>: a ScheduleActivityTask decision failed. This could happen if the activity type * specified in the decision is not registered, is in a deprecated state, or the decision is not properly configured.</li> * <li><b>ScheduleLambdaFunctionFailed</b>: a ScheduleLambdaFunctionFailed decision failed. This could happen if the AWS * Lambda function specified in the decision does not exist, or the AWS Lambda service's limits are exceeded.</li> * <li><b>RequestCancelActivityTaskFailed</b>: a RequestCancelActivityTask decision failed. This could happen if there * is no open activity task with the specified activityId.</li> * <li><b>StartTimerFailed</b>: a StartTimer decision failed. This could happen if there is another open timer with the * same timerId.</li> * <li><b>CancelTimerFailed</b>: a CancelTimer decision failed. This could happen if there is no open timer with the * specified timerId.</li> * <li><b>StartChildWorkflowExecutionFailed</b>: a StartChildWorkflowExecution decision failed. This could happen if the * workflow type specified is not registered, is deprecated, or the decision is not properly configured.</li> * <li><b>SignalExternalWorkflowExecutionFailed</b>: a SignalExternalWorkflowExecution decision failed. This could * happen if the <code>workflowID</code> specified in the decision was incorrect.</li> * <li><b>RequestCancelExternalWorkflowExecutionFailed</b>: a RequestCancelExternalWorkflowExecution decision failed. * This could happen if the <code>workflowID</code> specified in the decision was incorrect.</li> * <li><b>CancelWorkflowExecutionFailed</b>: a CancelWorkflowExecution decision failed. This could happen if there is an * unhandled decision task pending in the workflow execution.</li> * <li><b>CompleteWorkflowExecutionFailed</b>: a CompleteWorkflowExecution decision failed. This could happen if there * is an unhandled decision task pending in the workflow execution.</li> * <li><b>ContinueAsNewWorkflowExecutionFailed</b>: 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.</li> * <li><b>FailWorkflowExecutionFailed</b>: a FailWorkflowExecution decision failed. This could happen if there is an * unhandled decision task pending in the workflow execution.</li> * </ul> * <p> * 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. * </p> * <note>A workflow execution may be closed by the decider by returning one of the following decisions when completing a * decision task: <code>CompleteWorkflowExecution</code>, <code>FailWorkflowExecution</code>, * <code>CancelWorkflowExecution</code> and <code>ContinueAsNewWorkflowExecution</code>. An UnhandledDecision fault will * be 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 * <a>RespondDecisionTaskCompleted</a> 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.</note> * <p> * <b>How to code a decision</b> * </p> * <p> * 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: * </p> * <ul> * <li><a>ScheduleActivityTaskDecisionAttributes</a></li> * <li><a>ScheduleLambdaFunctionDecisionAttributes</a></li> * <li><a>RequestCancelActivityTaskDecisionAttributes</a></li> * <li><a>CompleteWorkflowExecutionDecisionAttributes</a></li> * <li><a>FailWorkflowExecutionDecisionAttributes</a></li> * <li><a>CancelWorkflowExecutionDecisionAttributes</a></li> * <li><a>ContinueAsNewWorkflowExecutionDecisionAttributes</a></li> * <li><a>RecordMarkerDecisionAttributes</a></li> * <li><a>StartTimerDecisionAttributes</a></li> * <li><a>CancelTimerDecisionAttributes</a></li> * <li><a>SignalExternalWorkflowExecutionDecisionAttributes</a></li> * <li><a>RequestCancelExternalWorkflowExecutionDecisionAttributes</a></li> * <li><a>StartChildWorkflowExecutionDecisionAttributes</a></li> * </ul> */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class Decision implements Serializable, Cloneable, StructuredPojo { /** * <p> * Specifies the type of the decision. * </p> */ private String decisionType; /** * <p> * Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision types. * </p> */ private ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes; /** * <p> * Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision types. * </p> */ private RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes; /** * <p> * Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision types. * </p> */ private CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes; /** * <p> * Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision types. * </p> */ private FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes; /** * <p> * Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision types. * </p> */ private CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes; /** * <p> * Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other decision * types. * </p> */ private ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes; /** * <p> * Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. * </p> */ private RecordMarkerDecisionAttributes recordMarkerDecisionAttributes; /** * <p> * Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. * </p> */ private StartTimerDecisionAttributes startTimerDecisionAttributes; /** * <p> * Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. * </p> */ private CancelTimerDecisionAttributes cancelTimerDecisionAttributes; /** * <p> * Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other decision * types. * </p> */ private SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes; /** * <p> * Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for other * decision types. * </p> */ private RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes; /** * <p> * Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other decision * types. * </p> */ private StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes; private ScheduleLambdaFunctionDecisionAttributes scheduleLambdaFunctionDecisionAttributes; /** * <p> * Specifies the type of the decision. * </p> * * @param decisionType * Specifies the type of the decision. * @see DecisionType */ public void setDecisionType(String decisionType) { this.decisionType = decisionType; } /** * <p> * Specifies the type of the decision. * </p> * * @return Specifies the type of the decision. * @see DecisionType */ public String getDecisionType() { return this.decisionType; } /** * <p> * Specifies the type of the decision. * </p> * * @param decisionType * Specifies the type of the decision. * @return Returns a reference to this object so that method calls can be chained together. * @see DecisionType */ public Decision withDecisionType(String decisionType) { setDecisionType(decisionType); return this; } /** * <p> * Specifies the type of the decision. * </p> * * @param decisionType * Specifies the type of the decision. * @see DecisionType */ public void setDecisionType(DecisionType decisionType) { this.decisionType = decisionType.toString(); } /** * <p> * Specifies the type of the decision. * </p> * * @param decisionType * Specifies the type of the decision. * @return Returns a reference to this object so that method calls can be chained together. * @see DecisionType */ public Decision withDecisionType(DecisionType decisionType) { setDecisionType(decisionType); return this; } /** * <p> * Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision types. * </p> * * @param scheduleActivityTaskDecisionAttributes * Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision * types. */ public void setScheduleActivityTaskDecisionAttributes(ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes) { this.scheduleActivityTaskDecisionAttributes = scheduleActivityTaskDecisionAttributes; } /** * <p> * Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision * types. */ public ScheduleActivityTaskDecisionAttributes getScheduleActivityTaskDecisionAttributes() { return this.scheduleActivityTaskDecisionAttributes; } /** * <p> * Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision types. * </p> * * @param scheduleActivityTaskDecisionAttributes * Provides details of the <code>ScheduleActivityTask</code> decision. It is not set for other decision * types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withScheduleActivityTaskDecisionAttributes(ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes) { setScheduleActivityTaskDecisionAttributes(scheduleActivityTaskDecisionAttributes); return this; } /** * <p> * Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision types. * </p> * * @param requestCancelActivityTaskDecisionAttributes * Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision * types. */ public void setRequestCancelActivityTaskDecisionAttributes(RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes) { this.requestCancelActivityTaskDecisionAttributes = requestCancelActivityTaskDecisionAttributes; } /** * <p> * Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision * types. */ public RequestCancelActivityTaskDecisionAttributes getRequestCancelActivityTaskDecisionAttributes() { return this.requestCancelActivityTaskDecisionAttributes; } /** * <p> * Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision types. * </p> * * @param requestCancelActivityTaskDecisionAttributes * Provides details of the <code>RequestCancelActivityTask</code> decision. It is not set for other decision * types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withRequestCancelActivityTaskDecisionAttributes(RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes) { setRequestCancelActivityTaskDecisionAttributes(requestCancelActivityTaskDecisionAttributes); return this; } /** * <p> * Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @param completeWorkflowExecutionDecisionAttributes * Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision * types. */ public void setCompleteWorkflowExecutionDecisionAttributes(CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes) { this.completeWorkflowExecutionDecisionAttributes = completeWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision * types. */ public CompleteWorkflowExecutionDecisionAttributes getCompleteWorkflowExecutionDecisionAttributes() { return this.completeWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @param completeWorkflowExecutionDecisionAttributes * Provides details of the <code>CompleteWorkflowExecution</code> decision. It is not set for other decision * types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withCompleteWorkflowExecutionDecisionAttributes(CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes) { setCompleteWorkflowExecutionDecisionAttributes(completeWorkflowExecutionDecisionAttributes); return this; } /** * <p> * Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @param failWorkflowExecutionDecisionAttributes * Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision * types. */ public void setFailWorkflowExecutionDecisionAttributes(FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes) { this.failWorkflowExecutionDecisionAttributes = failWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision * types. */ public FailWorkflowExecutionDecisionAttributes getFailWorkflowExecutionDecisionAttributes() { return this.failWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @param failWorkflowExecutionDecisionAttributes * Provides details of the <code>FailWorkflowExecution</code> decision. It is not set for other decision * types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withFailWorkflowExecutionDecisionAttributes(FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes) { setFailWorkflowExecutionDecisionAttributes(failWorkflowExecutionDecisionAttributes); return this; } /** * <p> * Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @param cancelWorkflowExecutionDecisionAttributes * Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision * types. */ public void setCancelWorkflowExecutionDecisionAttributes(CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes) { this.cancelWorkflowExecutionDecisionAttributes = cancelWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision * types. */ public CancelWorkflowExecutionDecisionAttributes getCancelWorkflowExecutionDecisionAttributes() { return this.cancelWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision types. * </p> * * @param cancelWorkflowExecutionDecisionAttributes * Provides details of the <code>CancelWorkflowExecution</code> decision. It is not set for other decision * types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withCancelWorkflowExecutionDecisionAttributes(CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes) { setCancelWorkflowExecutionDecisionAttributes(cancelWorkflowExecutionDecisionAttributes); return this; } /** * <p> * Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @param continueAsNewWorkflowExecutionDecisionAttributes * Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other * decision types. */ public void setContinueAsNewWorkflowExecutionDecisionAttributes( ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes) { this.continueAsNewWorkflowExecutionDecisionAttributes = continueAsNewWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @return Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other * decision types. */ public ContinueAsNewWorkflowExecutionDecisionAttributes getContinueAsNewWorkflowExecutionDecisionAttributes() { return this.continueAsNewWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @param continueAsNewWorkflowExecutionDecisionAttributes * Provides details of the <code>ContinueAsNewWorkflowExecution</code> decision. It is not set for other * decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withContinueAsNewWorkflowExecutionDecisionAttributes( ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes) { setContinueAsNewWorkflowExecutionDecisionAttributes(continueAsNewWorkflowExecutionDecisionAttributes); return this; } /** * <p> * Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. * </p> * * @param recordMarkerDecisionAttributes * Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. */ public void setRecordMarkerDecisionAttributes(RecordMarkerDecisionAttributes recordMarkerDecisionAttributes) { this.recordMarkerDecisionAttributes = recordMarkerDecisionAttributes; } /** * <p> * Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. */ public RecordMarkerDecisionAttributes getRecordMarkerDecisionAttributes() { return this.recordMarkerDecisionAttributes; } /** * <p> * Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. * </p> * * @param recordMarkerDecisionAttributes * Provides details of the <code>RecordMarker</code> decision. It is not set for other decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withRecordMarkerDecisionAttributes(RecordMarkerDecisionAttributes recordMarkerDecisionAttributes) { setRecordMarkerDecisionAttributes(recordMarkerDecisionAttributes); return this; } /** * <p> * Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. * </p> * * @param startTimerDecisionAttributes * Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. */ public void setStartTimerDecisionAttributes(StartTimerDecisionAttributes startTimerDecisionAttributes) { this.startTimerDecisionAttributes = startTimerDecisionAttributes; } /** * <p> * Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. */ public StartTimerDecisionAttributes getStartTimerDecisionAttributes() { return this.startTimerDecisionAttributes; } /** * <p> * Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. * </p> * * @param startTimerDecisionAttributes * Provides details of the <code>StartTimer</code> decision. It is not set for other decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withStartTimerDecisionAttributes(StartTimerDecisionAttributes startTimerDecisionAttributes) { setStartTimerDecisionAttributes(startTimerDecisionAttributes); return this; } /** * <p> * Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. * </p> * * @param cancelTimerDecisionAttributes * Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. */ public void setCancelTimerDecisionAttributes(CancelTimerDecisionAttributes cancelTimerDecisionAttributes) { this.cancelTimerDecisionAttributes = cancelTimerDecisionAttributes; } /** * <p> * Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. * </p> * * @return Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. */ public CancelTimerDecisionAttributes getCancelTimerDecisionAttributes() { return this.cancelTimerDecisionAttributes; } /** * <p> * Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. * </p> * * @param cancelTimerDecisionAttributes * Provides details of the <code>CancelTimer</code> decision. It is not set for other decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withCancelTimerDecisionAttributes(CancelTimerDecisionAttributes cancelTimerDecisionAttributes) { setCancelTimerDecisionAttributes(cancelTimerDecisionAttributes); return this; } /** * <p> * Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @param signalExternalWorkflowExecutionDecisionAttributes * Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other * decision types. */ public void setSignalExternalWorkflowExecutionDecisionAttributes( SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes) { this.signalExternalWorkflowExecutionDecisionAttributes = signalExternalWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @return Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other * decision types. */ public SignalExternalWorkflowExecutionDecisionAttributes getSignalExternalWorkflowExecutionDecisionAttributes() { return this.signalExternalWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @param signalExternalWorkflowExecutionDecisionAttributes * Provides details of the <code>SignalExternalWorkflowExecution</code> decision. It is not set for other * decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withSignalExternalWorkflowExecutionDecisionAttributes( SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes) { setSignalExternalWorkflowExecutionDecisionAttributes(signalExternalWorkflowExecutionDecisionAttributes); return this; } /** * <p> * Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for other * decision types. * </p> * * @param requestCancelExternalWorkflowExecutionDecisionAttributes * Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for * other decision types. */ public void setRequestCancelExternalWorkflowExecutionDecisionAttributes( RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes) { this.requestCancelExternalWorkflowExecutionDecisionAttributes = requestCancelExternalWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for other * decision types. * </p> * * @return Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for * other decision types. */ public RequestCancelExternalWorkflowExecutionDecisionAttributes getRequestCancelExternalWorkflowExecutionDecisionAttributes() { return this.requestCancelExternalWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for other * decision types. * </p> * * @param requestCancelExternalWorkflowExecutionDecisionAttributes * Provides details of the <code>RequestCancelExternalWorkflowExecution</code> decision. It is not set for * other decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withRequestCancelExternalWorkflowExecutionDecisionAttributes( RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes) { setRequestCancelExternalWorkflowExecutionDecisionAttributes(requestCancelExternalWorkflowExecutionDecisionAttributes); return this; } /** * <p> * Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @param startChildWorkflowExecutionDecisionAttributes * Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other * decision types. */ public void setStartChildWorkflowExecutionDecisionAttributes(StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes) { this.startChildWorkflowExecutionDecisionAttributes = startChildWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @return Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other * decision types. */ public StartChildWorkflowExecutionDecisionAttributes getStartChildWorkflowExecutionDecisionAttributes() { return this.startChildWorkflowExecutionDecisionAttributes; } /** * <p> * Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other decision * types. * </p> * * @param startChildWorkflowExecutionDecisionAttributes * Provides details of the <code>StartChildWorkflowExecution</code> decision. It is not set for other * decision types. * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withStartChildWorkflowExecutionDecisionAttributes( StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes) { setStartChildWorkflowExecutionDecisionAttributes(startChildWorkflowExecutionDecisionAttributes); return this; } /** * @param scheduleLambdaFunctionDecisionAttributes */ public void setScheduleLambdaFunctionDecisionAttributes(ScheduleLambdaFunctionDecisionAttributes scheduleLambdaFunctionDecisionAttributes) { this.scheduleLambdaFunctionDecisionAttributes = scheduleLambdaFunctionDecisionAttributes; } /** * @return */ public ScheduleLambdaFunctionDecisionAttributes getScheduleLambdaFunctionDecisionAttributes() { return this.scheduleLambdaFunctionDecisionAttributes; } /** * @param scheduleLambdaFunctionDecisionAttributes * @return Returns a reference to this object so that method calls can be chained together. */ public Decision withScheduleLambdaFunctionDecisionAttributes(ScheduleLambdaFunctionDecisionAttributes scheduleLambdaFunctionDecisionAttributes) { setScheduleLambdaFunctionDecisionAttributes(scheduleLambdaFunctionDecisionAttributes); return this; } /** * Returns a string representation of this object; useful for testing and debugging. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getDecisionType() != null) sb.append("DecisionType: ").append(getDecisionType()).append(","); if (getScheduleActivityTaskDecisionAttributes() != null) sb.append("ScheduleActivityTaskDecisionAttributes: ").append(getScheduleActivityTaskDecisionAttributes()).append(","); if (getRequestCancelActivityTaskDecisionAttributes() != null) sb.append("RequestCancelActivityTaskDecisionAttributes: ").append(getRequestCancelActivityTaskDecisionAttributes()).append(","); if (getCompleteWorkflowExecutionDecisionAttributes() != null) sb.append("CompleteWorkflowExecutionDecisionAttributes: ").append(getCompleteWorkflowExecutionDecisionAttributes()).append(","); if (getFailWorkflowExecutionDecisionAttributes() != null) sb.append("FailWorkflowExecutionDecisionAttributes: ").append(getFailWorkflowExecutionDecisionAttributes()).append(","); if (getCancelWorkflowExecutionDecisionAttributes() != null) sb.append("CancelWorkflowExecutionDecisionAttributes: ").append(getCancelWorkflowExecutionDecisionAttributes()).append(","); if (getContinueAsNewWorkflowExecutionDecisionAttributes() != null) sb.append("ContinueAsNewWorkflowExecutionDecisionAttributes: ").append(getContinueAsNewWorkflowExecutionDecisionAttributes()).append(","); if (getRecordMarkerDecisionAttributes() != null) sb.append("RecordMarkerDecisionAttributes: ").append(getRecordMarkerDecisionAttributes()).append(","); if (getStartTimerDecisionAttributes() != null) sb.append("StartTimerDecisionAttributes: ").append(getStartTimerDecisionAttributes()).append(","); if (getCancelTimerDecisionAttributes() != null) sb.append("CancelTimerDecisionAttributes: ").append(getCancelTimerDecisionAttributes()).append(","); if (getSignalExternalWorkflowExecutionDecisionAttributes() != null) sb.append("SignalExternalWorkflowExecutionDecisionAttributes: ").append(getSignalExternalWorkflowExecutionDecisionAttributes()).append(","); if (getRequestCancelExternalWorkflowExecutionDecisionAttributes() != null) sb.append("RequestCancelExternalWorkflowExecutionDecisionAttributes: ").append(getRequestCancelExternalWorkflowExecutionDecisionAttributes()) .append(","); if (getStartChildWorkflowExecutionDecisionAttributes() != null) sb.append("StartChildWorkflowExecutionDecisionAttributes: ").append(getStartChildWorkflowExecutionDecisionAttributes()).append(","); if (getScheduleLambdaFunctionDecisionAttributes() != null) sb.append("ScheduleLambdaFunctionDecisionAttributes: ").append(getScheduleLambdaFunctionDecisionAttributes()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof Decision == false) return false; Decision other = (Decision) obj; if (other.getDecisionType() == null ^ this.getDecisionType() == null) return false; if (other.getDecisionType() != null && other.getDecisionType().equals(this.getDecisionType()) == false) return false; if (other.getScheduleActivityTaskDecisionAttributes() == null ^ this.getScheduleActivityTaskDecisionAttributes() == null) return false; if (other.getScheduleActivityTaskDecisionAttributes() != null && other.getScheduleActivityTaskDecisionAttributes().equals(this.getScheduleActivityTaskDecisionAttributes()) == false) return false; if (other.getRequestCancelActivityTaskDecisionAttributes() == null ^ this.getRequestCancelActivityTaskDecisionAttributes() == null) return false; if (other.getRequestCancelActivityTaskDecisionAttributes() != null && other.getRequestCancelActivityTaskDecisionAttributes().equals(this.getRequestCancelActivityTaskDecisionAttributes()) == false) return false; if (other.getCompleteWorkflowExecutionDecisionAttributes() == null ^ this.getCompleteWorkflowExecutionDecisionAttributes() == null) return false; if (other.getCompleteWorkflowExecutionDecisionAttributes() != null && other.getCompleteWorkflowExecutionDecisionAttributes().equals(this.getCompleteWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getFailWorkflowExecutionDecisionAttributes() == null ^ this.getFailWorkflowExecutionDecisionAttributes() == null) return false; if (other.getFailWorkflowExecutionDecisionAttributes() != null && other.getFailWorkflowExecutionDecisionAttributes().equals(this.getFailWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getCancelWorkflowExecutionDecisionAttributes() == null ^ this.getCancelWorkflowExecutionDecisionAttributes() == null) return false; if (other.getCancelWorkflowExecutionDecisionAttributes() != null && other.getCancelWorkflowExecutionDecisionAttributes().equals(this.getCancelWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getContinueAsNewWorkflowExecutionDecisionAttributes() == null ^ this.getContinueAsNewWorkflowExecutionDecisionAttributes() == null) return false; if (other.getContinueAsNewWorkflowExecutionDecisionAttributes() != null && other.getContinueAsNewWorkflowExecutionDecisionAttributes().equals(this.getContinueAsNewWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getRecordMarkerDecisionAttributes() == null ^ this.getRecordMarkerDecisionAttributes() == null) return false; if (other.getRecordMarkerDecisionAttributes() != null && other.getRecordMarkerDecisionAttributes().equals(this.getRecordMarkerDecisionAttributes()) == false) return false; if (other.getStartTimerDecisionAttributes() == null ^ this.getStartTimerDecisionAttributes() == null) return false; if (other.getStartTimerDecisionAttributes() != null && other.getStartTimerDecisionAttributes().equals(this.getStartTimerDecisionAttributes()) == false) return false; if (other.getCancelTimerDecisionAttributes() == null ^ this.getCancelTimerDecisionAttributes() == null) return false; if (other.getCancelTimerDecisionAttributes() != null && other.getCancelTimerDecisionAttributes().equals(this.getCancelTimerDecisionAttributes()) == false) return false; if (other.getSignalExternalWorkflowExecutionDecisionAttributes() == null ^ this.getSignalExternalWorkflowExecutionDecisionAttributes() == null) return false; if (other.getSignalExternalWorkflowExecutionDecisionAttributes() != null && other.getSignalExternalWorkflowExecutionDecisionAttributes().equals(this.getSignalExternalWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getRequestCancelExternalWorkflowExecutionDecisionAttributes() == null ^ this.getRequestCancelExternalWorkflowExecutionDecisionAttributes() == null) return false; if (other.getRequestCancelExternalWorkflowExecutionDecisionAttributes() != null && other.getRequestCancelExternalWorkflowExecutionDecisionAttributes().equals( this.getRequestCancelExternalWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getStartChildWorkflowExecutionDecisionAttributes() == null ^ this.getStartChildWorkflowExecutionDecisionAttributes() == null) return false; if (other.getStartChildWorkflowExecutionDecisionAttributes() != null && other.getStartChildWorkflowExecutionDecisionAttributes().equals(this.getStartChildWorkflowExecutionDecisionAttributes()) == false) return false; if (other.getScheduleLambdaFunctionDecisionAttributes() == null ^ this.getScheduleLambdaFunctionDecisionAttributes() == null) return false; if (other.getScheduleLambdaFunctionDecisionAttributes() != null && other.getScheduleLambdaFunctionDecisionAttributes().equals(this.getScheduleLambdaFunctionDecisionAttributes()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getDecisionType() == null) ? 0 : getDecisionType().hashCode()); hashCode = prime * hashCode + ((getScheduleActivityTaskDecisionAttributes() == null) ? 0 : getScheduleActivityTaskDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getRequestCancelActivityTaskDecisionAttributes() == null) ? 0 : getRequestCancelActivityTaskDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getCompleteWorkflowExecutionDecisionAttributes() == null) ? 0 : getCompleteWorkflowExecutionDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getFailWorkflowExecutionDecisionAttributes() == null) ? 0 : getFailWorkflowExecutionDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getCancelWorkflowExecutionDecisionAttributes() == null) ? 0 : getCancelWorkflowExecutionDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getContinueAsNewWorkflowExecutionDecisionAttributes() == null) ? 0 : getContinueAsNewWorkflowExecutionDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getRecordMarkerDecisionAttributes() == null) ? 0 : getRecordMarkerDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getStartTimerDecisionAttributes() == null) ? 0 : getStartTimerDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getCancelTimerDecisionAttributes() == null) ? 0 : getCancelTimerDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getSignalExternalWorkflowExecutionDecisionAttributes() == null) ? 0 : getSignalExternalWorkflowExecutionDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getRequestCancelExternalWorkflowExecutionDecisionAttributes() == null) ? 0 : getRequestCancelExternalWorkflowExecutionDecisionAttributes() .hashCode()); hashCode = prime * hashCode + ((getStartChildWorkflowExecutionDecisionAttributes() == null) ? 0 : getStartChildWorkflowExecutionDecisionAttributes().hashCode()); hashCode = prime * hashCode + ((getScheduleLambdaFunctionDecisionAttributes() == null) ? 0 : getScheduleLambdaFunctionDecisionAttributes().hashCode()); return hashCode; } @Override public Decision clone() { try { return (Decision) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } @com.amazonaws.annotation.SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { com.amazonaws.services.simpleworkflow.model.transform.DecisionMarshaller.getInstance().marshall(this, protocolMarshaller); } }