/************************************************************************* * Copyright 2014 Eucalyptus Systems, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * * Please contact Eucalyptus Systems, Inc., 6755 Hollister Ave., Goleta * CA 93117, USA or visit http://www.eucalyptus.com/licenses/ if you * need additional information or have any questions. * * This file may incorporate work covered under the following copyright * and permission notice: * Copyright 2010-2015 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.eucalyptus.simpleworkflow.common.model; import static com.eucalyptus.simpleworkflow.common.model.SimpleWorkflowMessage.FieldRegex; import static com.eucalyptus.simpleworkflow.common.model.SimpleWorkflowMessage.FieldRegexValue; import java.io.Serializable; import javax.annotation.Nonnull; /** * <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 RecordActivityTaskHeartbeat.</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> * <p> * <b>NOTE:</b>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 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 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. * </p> * <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> ScheduleActivityTaskDecisionAttributes </li> * <li> ScheduleLambdaFunctionDecisionAttributes </li> * <li> RequestCancelActivityTaskDecisionAttributes </li> * <li> CompleteWorkflowExecutionDecisionAttributes </li> * <li> FailWorkflowExecutionDecisionAttributes </li> * <li> CancelWorkflowExecutionDecisionAttributes </li> * <li> ContinueAsNewWorkflowExecutionDecisionAttributes </li> * <li> RecordMarkerDecisionAttributes </li> * <li> StartTimerDecisionAttributes </li> * <li> CancelTimerDecisionAttributes </li> * <li> SignalExternalWorkflowExecutionDecisionAttributes </li> * <li> RequestCancelExternalWorkflowExecutionDecisionAttributes </li> * <li> StartChildWorkflowExecutionDecisionAttributes </li> * * </ul> */ public class Decision implements Serializable { /** * Specifies the type of the decision. * <p> * <b>Constraints:</b><br/> * <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution, ScheduleLambdaFunction */ @Nonnull @FieldRegex( FieldRegexValue.DECISION ) private String decisionType; /** * Provides details of the <code>ScheduleActivityTask</code> decision. It * is not set for other decision types. */ private ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes; /** * Provides details of the <code>RequestCancelActivityTask</code> * decision. It is not set for other decision types. */ private RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes; /** * Provides details of the <code>CompleteWorkflowExecution</code> * decision. It is not set for other decision types. */ private CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes; /** * Provides details of the <code>FailWorkflowExecution</code> decision. * It is not set for other decision types. */ private FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes; /** * Provides details of the <code>CancelWorkflowExecution</code> decision. * It is not set for other decision types. */ private CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes; /** * Provides details of the <code>ContinueAsNewWorkflowExecution</code> * decision. It is not set for other decision types. */ private ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes; /** * Provides details of the <code>RecordMarker</code> decision. It is not * set for other decision types. */ private RecordMarkerDecisionAttributes recordMarkerDecisionAttributes; /** * Provides details of the <code>StartTimer</code> decision. It is not * set for other decision types. */ private StartTimerDecisionAttributes startTimerDecisionAttributes; /** * Provides details of the <code>CancelTimer</code> decision. It is not * set for other decision types. */ private CancelTimerDecisionAttributes cancelTimerDecisionAttributes; /** * Provides details of the <code>SignalExternalWorkflowExecution</code> * decision. It is not set for other decision types. */ private SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes; /** * Provides details of the * <code>RequestCancelExternalWorkflowExecution</code> decision. It is * not set for other decision types. */ private RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes; /** * Provides details of the <code>StartChildWorkflowExecution</code> * decision. It is not set for other decision types. */ private StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes; /** * Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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>. */ private ScheduleLambdaFunctionDecisionAttributes scheduleLambdaFunctionDecisionAttributes; /** * Specifies the type of the decision. * <p> * <b>Constraints:</b><br/> * <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution, ScheduleLambdaFunction * * @return Specifies the type of the decision. * * @see DecisionType */ public String getDecisionType() { return decisionType; } /** * Specifies the type of the decision. * <p> * <b>Constraints:</b><br/> * <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution, ScheduleLambdaFunction * * @param decisionType Specifies the type of the decision. * * @see DecisionType */ public void setDecisionType(String decisionType) { this.decisionType = decisionType; } /** * Specifies the type of the decision. * <p> * Returns a reference to this object so that method calls can be chained together. * <p> * <b>Constraints:</b><br/> * <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution, ScheduleLambdaFunction * * @param decisionType Specifies the type of the decision. * * @return A reference to this updated object so that method calls can be chained * together. * * @see DecisionType */ public Decision withDecisionType(String decisionType) { this.decisionType = decisionType; return this; } /** * Specifies the type of the decision. * <p> * <b>Constraints:</b><br/> * <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution, ScheduleLambdaFunction * * @param decisionType Specifies the type of the decision. * * @see DecisionType */ public void setDecisionType(DecisionType decisionType) { this.decisionType = decisionType.toString(); } /** * Specifies the type of the decision. * <p> * Returns a reference to this object so that method calls can be chained together. * <p> * <b>Constraints:</b><br/> * <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution, ScheduleLambdaFunction * * @param decisionType Specifies the type of the decision. * * @return A reference to this updated object so that method calls can be chained * together. * * @see DecisionType */ public Decision withDecisionType(DecisionType decisionType) { this.decisionType = decisionType.toString(); return this; } /** * Provides details of the <code>ScheduleActivityTask</code> decision. It * is not set for other decision types. * * @return Provides details of the <code>ScheduleActivityTask</code> decision. It * is not set for other decision types. */ public ScheduleActivityTaskDecisionAttributes getScheduleActivityTaskDecisionAttributes() { return scheduleActivityTaskDecisionAttributes; } /** * Provides details of the <code>ScheduleActivityTask</code> decision. It * is not set for other decision types. * * @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; } /** * Provides details of the <code>ScheduleActivityTask</code> decision. It * is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param scheduleActivityTaskDecisionAttributes Provides details of the <code>ScheduleActivityTask</code> decision. It * is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withScheduleActivityTaskDecisionAttributes(ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes) { this.scheduleActivityTaskDecisionAttributes = scheduleActivityTaskDecisionAttributes; return this; } /** * Provides details of the <code>RequestCancelActivityTask</code> * decision. It is not set for other decision types. * * @return Provides details of the <code>RequestCancelActivityTask</code> * decision. It is not set for other decision types. */ public RequestCancelActivityTaskDecisionAttributes getRequestCancelActivityTaskDecisionAttributes() { return requestCancelActivityTaskDecisionAttributes; } /** * Provides details of the <code>RequestCancelActivityTask</code> * decision. It is not set for other decision types. * * @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; } /** * Provides details of the <code>RequestCancelActivityTask</code> * decision. It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param requestCancelActivityTaskDecisionAttributes Provides details of the <code>RequestCancelActivityTask</code> * decision. It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withRequestCancelActivityTaskDecisionAttributes(RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes) { this.requestCancelActivityTaskDecisionAttributes = requestCancelActivityTaskDecisionAttributes; return this; } /** * Provides details of the <code>CompleteWorkflowExecution</code> * decision. It is not set for other decision types. * * @return Provides details of the <code>CompleteWorkflowExecution</code> * decision. It is not set for other decision types. */ public CompleteWorkflowExecutionDecisionAttributes getCompleteWorkflowExecutionDecisionAttributes() { return completeWorkflowExecutionDecisionAttributes; } /** * Provides details of the <code>CompleteWorkflowExecution</code> * decision. It is not set for other decision types. * * @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; } /** * Provides details of the <code>CompleteWorkflowExecution</code> * decision. It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param completeWorkflowExecutionDecisionAttributes Provides details of the <code>CompleteWorkflowExecution</code> * decision. It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withCompleteWorkflowExecutionDecisionAttributes(CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes) { this.completeWorkflowExecutionDecisionAttributes = completeWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the <code>FailWorkflowExecution</code> decision. * It is not set for other decision types. * * @return Provides details of the <code>FailWorkflowExecution</code> decision. * It is not set for other decision types. */ public FailWorkflowExecutionDecisionAttributes getFailWorkflowExecutionDecisionAttributes() { return failWorkflowExecutionDecisionAttributes; } /** * Provides details of the <code>FailWorkflowExecution</code> decision. * It is not set for other decision types. * * @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; } /** * Provides details of the <code>FailWorkflowExecution</code> decision. * It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param failWorkflowExecutionDecisionAttributes Provides details of the <code>FailWorkflowExecution</code> decision. * It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withFailWorkflowExecutionDecisionAttributes(FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes) { this.failWorkflowExecutionDecisionAttributes = failWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the <code>CancelWorkflowExecution</code> decision. * It is not set for other decision types. * * @return Provides details of the <code>CancelWorkflowExecution</code> decision. * It is not set for other decision types. */ public CancelWorkflowExecutionDecisionAttributes getCancelWorkflowExecutionDecisionAttributes() { return cancelWorkflowExecutionDecisionAttributes; } /** * Provides details of the <code>CancelWorkflowExecution</code> decision. * It is not set for other decision types. * * @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; } /** * Provides details of the <code>CancelWorkflowExecution</code> decision. * It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param cancelWorkflowExecutionDecisionAttributes Provides details of the <code>CancelWorkflowExecution</code> decision. * It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withCancelWorkflowExecutionDecisionAttributes(CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes) { this.cancelWorkflowExecutionDecisionAttributes = cancelWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the <code>ContinueAsNewWorkflowExecution</code> * decision. It is not set for other decision types. * * @return Provides details of the <code>ContinueAsNewWorkflowExecution</code> * decision. It is not set for other decision types. */ public ContinueAsNewWorkflowExecutionDecisionAttributes getContinueAsNewWorkflowExecutionDecisionAttributes() { return continueAsNewWorkflowExecutionDecisionAttributes; } /** * Provides details of the <code>ContinueAsNewWorkflowExecution</code> * decision. It is not set for other decision types. * * @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; } /** * Provides details of the <code>ContinueAsNewWorkflowExecution</code> * decision. It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param continueAsNewWorkflowExecutionDecisionAttributes Provides details of the <code>ContinueAsNewWorkflowExecution</code> * decision. It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withContinueAsNewWorkflowExecutionDecisionAttributes(ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes) { this.continueAsNewWorkflowExecutionDecisionAttributes = continueAsNewWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the <code>RecordMarker</code> decision. It is not * set for other decision types. * * @return Provides details of the <code>RecordMarker</code> decision. It is not * set for other decision types. */ public RecordMarkerDecisionAttributes getRecordMarkerDecisionAttributes() { return recordMarkerDecisionAttributes; } /** * Provides details of the <code>RecordMarker</code> decision. It is not * set for other decision types. * * @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; } /** * Provides details of the <code>RecordMarker</code> decision. It is not * set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param recordMarkerDecisionAttributes Provides details of the <code>RecordMarker</code> decision. It is not * set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withRecordMarkerDecisionAttributes(RecordMarkerDecisionAttributes recordMarkerDecisionAttributes) { this.recordMarkerDecisionAttributes = recordMarkerDecisionAttributes; return this; } /** * Provides details of the <code>StartTimer</code> decision. It is not * set for other decision types. * * @return Provides details of the <code>StartTimer</code> decision. It is not * set for other decision types. */ public StartTimerDecisionAttributes getStartTimerDecisionAttributes() { return startTimerDecisionAttributes; } /** * Provides details of the <code>StartTimer</code> decision. It is not * set for other decision types. * * @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; } /** * Provides details of the <code>StartTimer</code> decision. It is not * set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param startTimerDecisionAttributes Provides details of the <code>StartTimer</code> decision. It is not * set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withStartTimerDecisionAttributes(StartTimerDecisionAttributes startTimerDecisionAttributes) { this.startTimerDecisionAttributes = startTimerDecisionAttributes; return this; } /** * Provides details of the <code>CancelTimer</code> decision. It is not * set for other decision types. * * @return Provides details of the <code>CancelTimer</code> decision. It is not * set for other decision types. */ public CancelTimerDecisionAttributes getCancelTimerDecisionAttributes() { return cancelTimerDecisionAttributes; } /** * Provides details of the <code>CancelTimer</code> decision. It is not * set for other decision types. * * @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; } /** * Provides details of the <code>CancelTimer</code> decision. It is not * set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param cancelTimerDecisionAttributes Provides details of the <code>CancelTimer</code> decision. It is not * set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withCancelTimerDecisionAttributes(CancelTimerDecisionAttributes cancelTimerDecisionAttributes) { this.cancelTimerDecisionAttributes = cancelTimerDecisionAttributes; return this; } /** * Provides details of the <code>SignalExternalWorkflowExecution</code> * decision. It is not set for other decision types. * * @return Provides details of the <code>SignalExternalWorkflowExecution</code> * decision. It is not set for other decision types. */ public SignalExternalWorkflowExecutionDecisionAttributes getSignalExternalWorkflowExecutionDecisionAttributes() { return signalExternalWorkflowExecutionDecisionAttributes; } /** * Provides details of the <code>SignalExternalWorkflowExecution</code> * decision. It is not set for other decision types. * * @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; } /** * Provides details of the <code>SignalExternalWorkflowExecution</code> * decision. It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param signalExternalWorkflowExecutionDecisionAttributes Provides details of the <code>SignalExternalWorkflowExecution</code> * decision. It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withSignalExternalWorkflowExecutionDecisionAttributes(SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes) { this.signalExternalWorkflowExecutionDecisionAttributes = signalExternalWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the * <code>RequestCancelExternalWorkflowExecution</code> decision. It is * not set for other decision types. * * @return Provides details of the * <code>RequestCancelExternalWorkflowExecution</code> decision. It is * not set for other decision types. */ public RequestCancelExternalWorkflowExecutionDecisionAttributes getRequestCancelExternalWorkflowExecutionDecisionAttributes() { return requestCancelExternalWorkflowExecutionDecisionAttributes; } /** * Provides details of the * <code>RequestCancelExternalWorkflowExecution</code> decision. It is * not set for other decision types. * * @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; } /** * Provides details of the * <code>RequestCancelExternalWorkflowExecution</code> decision. It is * not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param requestCancelExternalWorkflowExecutionDecisionAttributes Provides details of the * <code>RequestCancelExternalWorkflowExecution</code> decision. It is * not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withRequestCancelExternalWorkflowExecutionDecisionAttributes(RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes) { this.requestCancelExternalWorkflowExecutionDecisionAttributes = requestCancelExternalWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the <code>StartChildWorkflowExecution</code> * decision. It is not set for other decision types. * * @return Provides details of the <code>StartChildWorkflowExecution</code> * decision. It is not set for other decision types. */ public StartChildWorkflowExecutionDecisionAttributes getStartChildWorkflowExecutionDecisionAttributes() { return startChildWorkflowExecutionDecisionAttributes; } /** * Provides details of the <code>StartChildWorkflowExecution</code> * decision. It is not set for other decision types. * * @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; } /** * Provides details of the <code>StartChildWorkflowExecution</code> * decision. It is not set for other decision types. * <p> * Returns a reference to this object so that method calls can be chained together. * * @param startChildWorkflowExecutionDecisionAttributes Provides details of the <code>StartChildWorkflowExecution</code> * decision. It is not set for other decision types. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withStartChildWorkflowExecutionDecisionAttributes(StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes) { this.startChildWorkflowExecutionDecisionAttributes = startChildWorkflowExecutionDecisionAttributes; return this; } /** * Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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>. * * @return Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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>. */ public ScheduleLambdaFunctionDecisionAttributes getScheduleLambdaFunctionDecisionAttributes() { return scheduleLambdaFunctionDecisionAttributes; } /** * Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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>. * * @param scheduleLambdaFunctionDecisionAttributes Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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>. */ public void setScheduleLambdaFunctionDecisionAttributes(ScheduleLambdaFunctionDecisionAttributes scheduleLambdaFunctionDecisionAttributes) { this.scheduleLambdaFunctionDecisionAttributes = scheduleLambdaFunctionDecisionAttributes; } /** * Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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> * Returns a reference to this object so that method calls can be chained together. * * @param scheduleLambdaFunctionDecisionAttributes Provides details of the <code>ScheduleLambdaFunction</code> decision. * <p><b>Access Control</b> <p>You can use IAM policies to control this * decision's access to Amazon SWF resources as follows: <ul> <li>Use a * <code>Resource</code> element with the domain name to limit the action * to only specified domains.</li> <li>Use an <code>Action</code> element * to allow or deny permission to call this action.</li> <li>Constrain * the following parameters by using a <code>Condition</code> element * with the appropriate keys. <ul> <li><code>activityType.name</code>: * String constraint. The key is <code>swf:activityType.name</code>.</li> * <li><code>activityType.version</code>: String constraint. The key is * <code>swf:activityType.version</code>.</li> <li><code>taskList</code>: * String constraint. The key is <code>swf:taskList.name</code>.</li> * </ul> </li> </ul> <p>If the caller does not have sufficient * permissions to invoke the action, or the parameter values fall outside * the specified constraints, the action fails. The associated event * attribute's <b>cause</b> parameter will be set to * OPERATION_NOT_PERMITTED. 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>. * * @return A reference to this updated object so that method calls can be chained * together. */ public Decision withScheduleLambdaFunctionDecisionAttributes(ScheduleLambdaFunctionDecisionAttributes scheduleLambdaFunctionDecisionAttributes) { this.scheduleLambdaFunctionDecisionAttributes = 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: " + getDecisionType() + ","); if (getScheduleActivityTaskDecisionAttributes() != null) sb.append("ScheduleActivityTaskDecisionAttributes: " + getScheduleActivityTaskDecisionAttributes() + ","); if (getRequestCancelActivityTaskDecisionAttributes() != null) sb.append("RequestCancelActivityTaskDecisionAttributes: " + getRequestCancelActivityTaskDecisionAttributes() + ","); if (getCompleteWorkflowExecutionDecisionAttributes() != null) sb.append("CompleteWorkflowExecutionDecisionAttributes: " + getCompleteWorkflowExecutionDecisionAttributes() + ","); if (getFailWorkflowExecutionDecisionAttributes() != null) sb.append("FailWorkflowExecutionDecisionAttributes: " + getFailWorkflowExecutionDecisionAttributes() + ","); if (getCancelWorkflowExecutionDecisionAttributes() != null) sb.append("CancelWorkflowExecutionDecisionAttributes: " + getCancelWorkflowExecutionDecisionAttributes() + ","); if (getContinueAsNewWorkflowExecutionDecisionAttributes() != null) sb.append("ContinueAsNewWorkflowExecutionDecisionAttributes: " + getContinueAsNewWorkflowExecutionDecisionAttributes() + ","); if (getRecordMarkerDecisionAttributes() != null) sb.append("RecordMarkerDecisionAttributes: " + getRecordMarkerDecisionAttributes() + ","); if (getStartTimerDecisionAttributes() != null) sb.append("StartTimerDecisionAttributes: " + getStartTimerDecisionAttributes() + ","); if (getCancelTimerDecisionAttributes() != null) sb.append("CancelTimerDecisionAttributes: " + getCancelTimerDecisionAttributes() + ","); if (getSignalExternalWorkflowExecutionDecisionAttributes() != null) sb.append("SignalExternalWorkflowExecutionDecisionAttributes: " + getSignalExternalWorkflowExecutionDecisionAttributes() + ","); if (getRequestCancelExternalWorkflowExecutionDecisionAttributes() != null) sb.append("RequestCancelExternalWorkflowExecutionDecisionAttributes: " + getRequestCancelExternalWorkflowExecutionDecisionAttributes() + ","); if (getStartChildWorkflowExecutionDecisionAttributes() != null) sb.append("StartChildWorkflowExecutionDecisionAttributes: " + getStartChildWorkflowExecutionDecisionAttributes() + ","); if (getScheduleLambdaFunctionDecisionAttributes() != null) sb.append("ScheduleLambdaFunctionDecisionAttributes: " + getScheduleLambdaFunctionDecisionAttributes() ); sb.append("}"); return sb.toString(); } @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 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; } }