amazonka-swf-2.0: gen/Amazonka/SWF/Types/Decision.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.SWF.Types.Decision
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SWF.Types.Decision where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SWF.Types.CancelTimerDecisionAttributes
import Amazonka.SWF.Types.CancelWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.CompleteWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.ContinueAsNewWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.DecisionType
import Amazonka.SWF.Types.FailWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.RecordMarkerDecisionAttributes
import Amazonka.SWF.Types.RequestCancelActivityTaskDecisionAttributes
import Amazonka.SWF.Types.RequestCancelExternalWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.ScheduleActivityTaskDecisionAttributes
import Amazonka.SWF.Types.ScheduleLambdaFunctionDecisionAttributes
import Amazonka.SWF.Types.SignalExternalWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.StartChildWorkflowExecutionDecisionAttributes
import Amazonka.SWF.Types.StartTimerDecisionAttributes
-- | Specifies a decision made by the decider. A decision can be one of these
-- types:
--
-- - @CancelTimer@ – Cancels a previously started timer and records a
-- @TimerCanceled@ event in the history.
--
-- - @CancelWorkflowExecution@ – Closes the workflow execution and
-- records a @WorkflowExecutionCanceled@ event in the history.
--
-- - @CompleteWorkflowExecution@ – Closes the workflow execution and
-- records a @WorkflowExecutionCompleted@ event in the history .
--
-- - @ContinueAsNewWorkflowExecution@ – Closes the workflow execution and
-- starts a new workflow execution of the same type using the same
-- workflow ID and a unique run Id. A @WorkflowExecutionContinuedAsNew@
-- event is recorded in the history.
--
-- - @FailWorkflowExecution@ – Closes the workflow execution and records
-- a @WorkflowExecutionFailed@ event in the history.
--
-- - @RecordMarker@ – Records a @MarkerRecorded@ event in the history.
-- Markers can be used for adding custom information in the history for
-- instance to let deciders know that they don\'t need to look at the
-- history beyond the marker event.
--
-- - @RequestCancelActivityTask@ – Attempts to cancel a previously
-- scheduled activity task. If the activity task was scheduled but has
-- not been assigned to a worker, then it is canceled. If the activity
-- task was already assigned to a worker, then the worker is informed
-- that cancellation has been requested in the response to
-- RecordActivityTaskHeartbeat.
--
-- - @RequestCancelExternalWorkflowExecution@ – Requests that a request
-- be made to cancel the specified external workflow execution and
-- records a @RequestCancelExternalWorkflowExecutionInitiated@ event in
-- the history.
--
-- - @ScheduleActivityTask@ – Schedules an activity task.
--
-- - @SignalExternalWorkflowExecution@ – Requests a signal to be
-- delivered to the specified external workflow execution and records a
-- @SignalExternalWorkflowExecutionInitiated@ event in the history.
--
-- - @StartChildWorkflowExecution@ – Requests that a child workflow
-- execution be started and records a
-- @StartChildWorkflowExecutionInitiated@ event in the history. The
-- child workflow execution is a separate workflow execution with its
-- own history.
--
-- - @StartTimer@ – Starts a timer for this workflow execution and
-- records a @TimerStarted@ event in the history. This timer fires
-- after the specified delay and record a @TimerFired@ event.
--
-- __Access Control__
--
-- If you grant permission to use @RespondDecisionTaskCompleted@, you can
-- use IAM policies to express permissions for the list of decisions
-- returned by this action as if they were members of the API. Treating
-- decisions as a pseudo API maintains a uniform conceptual model and helps
-- keep policies readable. For details and example IAM policies, see
-- <https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html Using IAM to Manage Access to Amazon SWF Workflows>
-- in the /Amazon SWF Developer Guide/.
--
-- __Decision Failure__
--
-- Decisions can fail for several reasons
--
-- - The ordering of decisions should follow a logical flow. Some
-- decisions might not make sense in the current context of the
-- workflow execution and therefore fails.
--
-- - A limit on your account was reached.
--
-- - The decision lacks sufficient permissions.
--
-- One of the following events might be added to the history to indicate an
-- error. The event attribute\'s @cause@ parameter indicates the cause. If
-- @cause@ is set to @OPERATION_NOT_PERMITTED@, the decision failed because
-- it lacked sufficient permissions. For details and example IAM policies,
-- see
-- <https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html Using IAM to Manage Access to Amazon SWF Workflows>
-- in the /Amazon SWF Developer Guide/.
--
-- - @ScheduleActivityTaskFailed@ – A @ScheduleActivityTask@ decision
-- failed. This could happen if the activity type specified in the
-- decision isn\'t registered, is in a deprecated state, or the
-- decision isn\'t properly configured.
--
-- - @RequestCancelActivityTaskFailed@ – A @RequestCancelActivityTask@
-- decision failed. This could happen if there is no open activity task
-- with the specified activityId.
--
-- - @StartTimerFailed@ – A @StartTimer@ decision failed. This could
-- happen if there is another open timer with the same timerId.
--
-- - @CancelTimerFailed@ – A @CancelTimer@ decision failed. This could
-- happen if there is no open timer with the specified timerId.
--
-- - @StartChildWorkflowExecutionFailed@ – A
-- @StartChildWorkflowExecution@ decision failed. This could happen if
-- the workflow type specified isn\'t registered, is deprecated, or the
-- decision isn\'t properly configured.
--
-- - @SignalExternalWorkflowExecutionFailed@ – A
-- @SignalExternalWorkflowExecution@ decision failed. This could happen
-- if the @workflowID@ specified in the decision was incorrect.
--
-- - @RequestCancelExternalWorkflowExecutionFailed@ – A
-- @RequestCancelExternalWorkflowExecution@ decision failed. This could
-- happen if the @workflowID@ specified in the decision was incorrect.
--
-- - @CancelWorkflowExecutionFailed@ – A @CancelWorkflowExecution@
-- decision failed. This could happen if there is an unhandled decision
-- task pending in the workflow execution.
--
-- - @CompleteWorkflowExecutionFailed@ – A @CompleteWorkflowExecution@
-- decision failed. This could happen if there is an unhandled decision
-- task pending in the workflow execution.
--
-- - @ContinueAsNewWorkflowExecutionFailed@ – A
-- @ContinueAsNewWorkflowExecution@ decision failed. This could happen
-- if there is an unhandled decision task pending in the workflow
-- execution or the ContinueAsNewWorkflowExecution decision was not
-- configured correctly.
--
-- - @FailWorkflowExecutionFailed@ – A @FailWorkflowExecution@ decision
-- failed. This could happen if there is an unhandled decision task
-- pending in the workflow execution.
--
-- The preceding error events might occur due to an error in the decider
-- logic, which might put the workflow execution in an unstable state The
-- cause field in the event structure for the error event indicates the
-- cause of the error.
--
-- A workflow execution may be closed by the decider by returning one of
-- the following decisions when completing a decision task:
-- @CompleteWorkflowExecution@, @FailWorkflowExecution@,
-- @CancelWorkflowExecution@ and @ContinueAsNewWorkflowExecution@. An
-- @UnhandledDecision@ fault is returned if a workflow closing decision is
-- specified and a signal or activity event had been added to the history
-- while the decision task was being performed by the decider. Unlike the
-- above situations which are logic issues, this fault is always possible
-- because of race conditions in a distributed system. The right action
-- here is to call RespondDecisionTaskCompleted without any decisions. This
-- would result in another decision task with these new events included in
-- the history. The decider should handle the new events and may decide to
-- close the workflow execution.
--
-- __How to Code a Decision__
--
-- You code a decision by first setting the decision type field to one of
-- the above decision values, and then set the corresponding attributes
-- field shown below:
--
-- - @ @@ScheduleActivityTaskDecisionAttributes@@ @
--
-- - @ @@RequestCancelActivityTaskDecisionAttributes@@ @
--
-- - @ @@CompleteWorkflowExecutionDecisionAttributes@@ @
--
-- - @ @@FailWorkflowExecutionDecisionAttributes@@ @
--
-- - @ @@CancelWorkflowExecutionDecisionAttributes@@ @
--
-- - @ @@ContinueAsNewWorkflowExecutionDecisionAttributes@@ @
--
-- - @ @@RecordMarkerDecisionAttributes@@ @
--
-- - @ @@StartTimerDecisionAttributes@@ @
--
-- - @ @@CancelTimerDecisionAttributes@@ @
--
-- - @ @@SignalExternalWorkflowExecutionDecisionAttributes@@ @
--
-- - @ @@RequestCancelExternalWorkflowExecutionDecisionAttributes@@ @
--
-- - @ @@StartChildWorkflowExecutionDecisionAttributes@@ @
--
-- /See:/ 'newDecision' smart constructor.
data Decision = Decision'
{ -- | Provides the details of the @CancelTimer@ decision. It isn\'t set for
-- other decision types.
cancelTimerDecisionAttributes :: Prelude.Maybe CancelTimerDecisionAttributes,
-- | Provides the details of the @CancelWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
cancelWorkflowExecutionDecisionAttributes :: Prelude.Maybe CancelWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @CompleteWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
completeWorkflowExecutionDecisionAttributes :: Prelude.Maybe CompleteWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @ContinueAsNewWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
continueAsNewWorkflowExecutionDecisionAttributes :: Prelude.Maybe ContinueAsNewWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @FailWorkflowExecution@ decision. It isn\'t
-- set for other decision types.
failWorkflowExecutionDecisionAttributes :: Prelude.Maybe FailWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @RecordMarker@ decision. It isn\'t set for
-- other decision types.
recordMarkerDecisionAttributes :: Prelude.Maybe RecordMarkerDecisionAttributes,
-- | Provides the details of the @RequestCancelActivityTask@ decision. It
-- isn\'t set for other decision types.
requestCancelActivityTaskDecisionAttributes :: Prelude.Maybe RequestCancelActivityTaskDecisionAttributes,
-- | Provides the details of the @RequestCancelExternalWorkflowExecution@
-- decision. It isn\'t set for other decision types.
requestCancelExternalWorkflowExecutionDecisionAttributes :: Prelude.Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @ScheduleActivityTask@ decision. It isn\'t
-- set for other decision types.
scheduleActivityTaskDecisionAttributes :: Prelude.Maybe ScheduleActivityTaskDecisionAttributes,
-- | Provides the details of the @ScheduleLambdaFunction@ decision. It isn\'t
-- set for other decision types.
scheduleLambdaFunctionDecisionAttributes :: Prelude.Maybe ScheduleLambdaFunctionDecisionAttributes,
-- | Provides the details of the @SignalExternalWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
signalExternalWorkflowExecutionDecisionAttributes :: Prelude.Maybe SignalExternalWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @StartChildWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
startChildWorkflowExecutionDecisionAttributes :: Prelude.Maybe StartChildWorkflowExecutionDecisionAttributes,
-- | Provides the details of the @StartTimer@ decision. It isn\'t set for
-- other decision types.
startTimerDecisionAttributes :: Prelude.Maybe StartTimerDecisionAttributes,
-- | Specifies the type of the decision.
decisionType :: DecisionType
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'Decision' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'cancelTimerDecisionAttributes', 'decision_cancelTimerDecisionAttributes' - Provides the details of the @CancelTimer@ decision. It isn\'t set for
-- other decision types.
--
-- 'cancelWorkflowExecutionDecisionAttributes', 'decision_cancelWorkflowExecutionDecisionAttributes' - Provides the details of the @CancelWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
--
-- 'completeWorkflowExecutionDecisionAttributes', 'decision_completeWorkflowExecutionDecisionAttributes' - Provides the details of the @CompleteWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
--
-- 'continueAsNewWorkflowExecutionDecisionAttributes', 'decision_continueAsNewWorkflowExecutionDecisionAttributes' - Provides the details of the @ContinueAsNewWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
--
-- 'failWorkflowExecutionDecisionAttributes', 'decision_failWorkflowExecutionDecisionAttributes' - Provides the details of the @FailWorkflowExecution@ decision. It isn\'t
-- set for other decision types.
--
-- 'recordMarkerDecisionAttributes', 'decision_recordMarkerDecisionAttributes' - Provides the details of the @RecordMarker@ decision. It isn\'t set for
-- other decision types.
--
-- 'requestCancelActivityTaskDecisionAttributes', 'decision_requestCancelActivityTaskDecisionAttributes' - Provides the details of the @RequestCancelActivityTask@ decision. It
-- isn\'t set for other decision types.
--
-- 'requestCancelExternalWorkflowExecutionDecisionAttributes', 'decision_requestCancelExternalWorkflowExecutionDecisionAttributes' - Provides the details of the @RequestCancelExternalWorkflowExecution@
-- decision. It isn\'t set for other decision types.
--
-- 'scheduleActivityTaskDecisionAttributes', 'decision_scheduleActivityTaskDecisionAttributes' - Provides the details of the @ScheduleActivityTask@ decision. It isn\'t
-- set for other decision types.
--
-- 'scheduleLambdaFunctionDecisionAttributes', 'decision_scheduleLambdaFunctionDecisionAttributes' - Provides the details of the @ScheduleLambdaFunction@ decision. It isn\'t
-- set for other decision types.
--
-- 'signalExternalWorkflowExecutionDecisionAttributes', 'decision_signalExternalWorkflowExecutionDecisionAttributes' - Provides the details of the @SignalExternalWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
--
-- 'startChildWorkflowExecutionDecisionAttributes', 'decision_startChildWorkflowExecutionDecisionAttributes' - Provides the details of the @StartChildWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
--
-- 'startTimerDecisionAttributes', 'decision_startTimerDecisionAttributes' - Provides the details of the @StartTimer@ decision. It isn\'t set for
-- other decision types.
--
-- 'decisionType', 'decision_decisionType' - Specifies the type of the decision.
newDecision ::
-- | 'decisionType'
DecisionType ->
Decision
newDecision pDecisionType_ =
Decision'
{ cancelTimerDecisionAttributes =
Prelude.Nothing,
cancelWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
completeWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
continueAsNewWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
failWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
recordMarkerDecisionAttributes = Prelude.Nothing,
requestCancelActivityTaskDecisionAttributes =
Prelude.Nothing,
requestCancelExternalWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
scheduleActivityTaskDecisionAttributes =
Prelude.Nothing,
scheduleLambdaFunctionDecisionAttributes =
Prelude.Nothing,
signalExternalWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
startChildWorkflowExecutionDecisionAttributes =
Prelude.Nothing,
startTimerDecisionAttributes = Prelude.Nothing,
decisionType = pDecisionType_
}
-- | Provides the details of the @CancelTimer@ decision. It isn\'t set for
-- other decision types.
decision_cancelTimerDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe CancelTimerDecisionAttributes)
decision_cancelTimerDecisionAttributes = Lens.lens (\Decision' {cancelTimerDecisionAttributes} -> cancelTimerDecisionAttributes) (\s@Decision' {} a -> s {cancelTimerDecisionAttributes = a} :: Decision)
-- | Provides the details of the @CancelWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
decision_cancelWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe CancelWorkflowExecutionDecisionAttributes)
decision_cancelWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {cancelWorkflowExecutionDecisionAttributes} -> cancelWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {cancelWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @CompleteWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
decision_completeWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe CompleteWorkflowExecutionDecisionAttributes)
decision_completeWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {completeWorkflowExecutionDecisionAttributes} -> completeWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {completeWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @ContinueAsNewWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
decision_continueAsNewWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe ContinueAsNewWorkflowExecutionDecisionAttributes)
decision_continueAsNewWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {continueAsNewWorkflowExecutionDecisionAttributes} -> continueAsNewWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {continueAsNewWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @FailWorkflowExecution@ decision. It isn\'t
-- set for other decision types.
decision_failWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe FailWorkflowExecutionDecisionAttributes)
decision_failWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {failWorkflowExecutionDecisionAttributes} -> failWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {failWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @RecordMarker@ decision. It isn\'t set for
-- other decision types.
decision_recordMarkerDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe RecordMarkerDecisionAttributes)
decision_recordMarkerDecisionAttributes = Lens.lens (\Decision' {recordMarkerDecisionAttributes} -> recordMarkerDecisionAttributes) (\s@Decision' {} a -> s {recordMarkerDecisionAttributes = a} :: Decision)
-- | Provides the details of the @RequestCancelActivityTask@ decision. It
-- isn\'t set for other decision types.
decision_requestCancelActivityTaskDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe RequestCancelActivityTaskDecisionAttributes)
decision_requestCancelActivityTaskDecisionAttributes = Lens.lens (\Decision' {requestCancelActivityTaskDecisionAttributes} -> requestCancelActivityTaskDecisionAttributes) (\s@Decision' {} a -> s {requestCancelActivityTaskDecisionAttributes = a} :: Decision)
-- | Provides the details of the @RequestCancelExternalWorkflowExecution@
-- decision. It isn\'t set for other decision types.
decision_requestCancelExternalWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes)
decision_requestCancelExternalWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {requestCancelExternalWorkflowExecutionDecisionAttributes} -> requestCancelExternalWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {requestCancelExternalWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @ScheduleActivityTask@ decision. It isn\'t
-- set for other decision types.
decision_scheduleActivityTaskDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe ScheduleActivityTaskDecisionAttributes)
decision_scheduleActivityTaskDecisionAttributes = Lens.lens (\Decision' {scheduleActivityTaskDecisionAttributes} -> scheduleActivityTaskDecisionAttributes) (\s@Decision' {} a -> s {scheduleActivityTaskDecisionAttributes = a} :: Decision)
-- | Provides the details of the @ScheduleLambdaFunction@ decision. It isn\'t
-- set for other decision types.
decision_scheduleLambdaFunctionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe ScheduleLambdaFunctionDecisionAttributes)
decision_scheduleLambdaFunctionDecisionAttributes = Lens.lens (\Decision' {scheduleLambdaFunctionDecisionAttributes} -> scheduleLambdaFunctionDecisionAttributes) (\s@Decision' {} a -> s {scheduleLambdaFunctionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @SignalExternalWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
decision_signalExternalWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe SignalExternalWorkflowExecutionDecisionAttributes)
decision_signalExternalWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {signalExternalWorkflowExecutionDecisionAttributes} -> signalExternalWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {signalExternalWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @StartChildWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
decision_startChildWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe StartChildWorkflowExecutionDecisionAttributes)
decision_startChildWorkflowExecutionDecisionAttributes = Lens.lens (\Decision' {startChildWorkflowExecutionDecisionAttributes} -> startChildWorkflowExecutionDecisionAttributes) (\s@Decision' {} a -> s {startChildWorkflowExecutionDecisionAttributes = a} :: Decision)
-- | Provides the details of the @StartTimer@ decision. It isn\'t set for
-- other decision types.
decision_startTimerDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe StartTimerDecisionAttributes)
decision_startTimerDecisionAttributes = Lens.lens (\Decision' {startTimerDecisionAttributes} -> startTimerDecisionAttributes) (\s@Decision' {} a -> s {startTimerDecisionAttributes = a} :: Decision)
-- | Specifies the type of the decision.
decision_decisionType :: Lens.Lens' Decision DecisionType
decision_decisionType = Lens.lens (\Decision' {decisionType} -> decisionType) (\s@Decision' {} a -> s {decisionType = a} :: Decision)
instance Prelude.Hashable Decision where
hashWithSalt _salt Decision' {..} =
_salt
`Prelude.hashWithSalt` cancelTimerDecisionAttributes
`Prelude.hashWithSalt` cancelWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` completeWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` continueAsNewWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` failWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` recordMarkerDecisionAttributes
`Prelude.hashWithSalt` requestCancelActivityTaskDecisionAttributes
`Prelude.hashWithSalt` requestCancelExternalWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` scheduleActivityTaskDecisionAttributes
`Prelude.hashWithSalt` scheduleLambdaFunctionDecisionAttributes
`Prelude.hashWithSalt` signalExternalWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` startChildWorkflowExecutionDecisionAttributes
`Prelude.hashWithSalt` startTimerDecisionAttributes
`Prelude.hashWithSalt` decisionType
instance Prelude.NFData Decision where
rnf Decision' {..} =
Prelude.rnf cancelTimerDecisionAttributes
`Prelude.seq` Prelude.rnf cancelWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf
completeWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf
continueAsNewWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf failWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf recordMarkerDecisionAttributes
`Prelude.seq` Prelude.rnf
requestCancelActivityTaskDecisionAttributes
`Prelude.seq` Prelude.rnf
requestCancelExternalWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf scheduleActivityTaskDecisionAttributes
`Prelude.seq` Prelude.rnf
scheduleLambdaFunctionDecisionAttributes
`Prelude.seq` Prelude.rnf
signalExternalWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf
startChildWorkflowExecutionDecisionAttributes
`Prelude.seq` Prelude.rnf startTimerDecisionAttributes
`Prelude.seq` Prelude.rnf decisionType
instance Data.ToJSON Decision where
toJSON Decision' {..} =
Data.object
( Prelude.catMaybes
[ ("cancelTimerDecisionAttributes" Data..=)
Prelude.<$> cancelTimerDecisionAttributes,
("cancelWorkflowExecutionDecisionAttributes" Data..=)
Prelude.<$> cancelWorkflowExecutionDecisionAttributes,
( "completeWorkflowExecutionDecisionAttributes"
Data..=
)
Prelude.<$> completeWorkflowExecutionDecisionAttributes,
( "continueAsNewWorkflowExecutionDecisionAttributes"
Data..=
)
Prelude.<$> continueAsNewWorkflowExecutionDecisionAttributes,
("failWorkflowExecutionDecisionAttributes" Data..=)
Prelude.<$> failWorkflowExecutionDecisionAttributes,
("recordMarkerDecisionAttributes" Data..=)
Prelude.<$> recordMarkerDecisionAttributes,
( "requestCancelActivityTaskDecisionAttributes"
Data..=
)
Prelude.<$> requestCancelActivityTaskDecisionAttributes,
( "requestCancelExternalWorkflowExecutionDecisionAttributes"
Data..=
)
Prelude.<$> requestCancelExternalWorkflowExecutionDecisionAttributes,
("scheduleActivityTaskDecisionAttributes" Data..=)
Prelude.<$> scheduleActivityTaskDecisionAttributes,
("scheduleLambdaFunctionDecisionAttributes" Data..=)
Prelude.<$> scheduleLambdaFunctionDecisionAttributes,
( "signalExternalWorkflowExecutionDecisionAttributes"
Data..=
)
Prelude.<$> signalExternalWorkflowExecutionDecisionAttributes,
( "startChildWorkflowExecutionDecisionAttributes"
Data..=
)
Prelude.<$> startChildWorkflowExecutionDecisionAttributes,
("startTimerDecisionAttributes" Data..=)
Prelude.<$> startTimerDecisionAttributes,
Prelude.Just ("decisionType" Data..= decisionType)
]
)