{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SWF.Types.Decision where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
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 @RequestCancelExternalWorkflowExecution@
    -- decision. It isn\'t set for other decision types.
    Decision
-> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes :: Prelude.Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @ScheduleActivityTask@ decision. It isn\'t
    -- set for other decision types.
    Decision -> Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes :: Prelude.Maybe ScheduleActivityTaskDecisionAttributes,
    -- | Provides the details of the @SignalExternalWorkflowExecution@ decision.
    -- It isn\'t set for other decision types.
    Decision -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes :: Prelude.Maybe SignalExternalWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @StartTimer@ decision. It isn\'t set for
    -- other decision types.
    Decision -> Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes :: Prelude.Maybe StartTimerDecisionAttributes,
    -- | Provides the details of the @RecordMarker@ decision. It isn\'t set for
    -- other decision types.
    Decision -> Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes :: Prelude.Maybe RecordMarkerDecisionAttributes,
    -- | Provides the details of the @FailWorkflowExecution@ decision. It isn\'t
    -- set for other decision types.
    Decision -> Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes :: Prelude.Maybe FailWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @StartChildWorkflowExecution@ decision. It
    -- isn\'t set for other decision types.
    Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes :: Prelude.Maybe StartChildWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @CompleteWorkflowExecution@ decision. It
    -- isn\'t set for other decision types.
    Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes :: Prelude.Maybe CompleteWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @ScheduleLambdaFunction@ decision. It isn\'t
    -- set for other decision types.
    Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes :: Prelude.Maybe ScheduleLambdaFunctionDecisionAttributes,
    -- | Provides the details of the @RequestCancelActivityTask@ decision. It
    -- isn\'t set for other decision types.
    Decision -> Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes :: Prelude.Maybe RequestCancelActivityTaskDecisionAttributes,
    -- | Provides the details of the @CancelWorkflowExecution@ decision. It
    -- isn\'t set for other decision types.
    Decision -> Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes :: Prelude.Maybe CancelWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @CancelTimer@ decision. It isn\'t set for
    -- other decision types.
    Decision -> Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes :: Prelude.Maybe CancelTimerDecisionAttributes,
    -- | Provides the details of the @ContinueAsNewWorkflowExecution@ decision.
    -- It isn\'t set for other decision types.
    Decision -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes :: Prelude.Maybe ContinueAsNewWorkflowExecutionDecisionAttributes,
    -- | Specifies the type of the decision.
    Decision -> DecisionType
decisionType :: DecisionType
  }
  deriving (Decision -> Decision -> Bool
(Decision -> Decision -> Bool)
-> (Decision -> Decision -> Bool) -> Eq Decision
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Decision -> Decision -> Bool
$c/= :: Decision -> Decision -> Bool
== :: Decision -> Decision -> Bool
$c== :: Decision -> Decision -> Bool
Prelude.Eq, ReadPrec [Decision]
ReadPrec Decision
Int -> ReadS Decision
ReadS [Decision]
(Int -> ReadS Decision)
-> ReadS [Decision]
-> ReadPrec Decision
-> ReadPrec [Decision]
-> Read Decision
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Decision]
$creadListPrec :: ReadPrec [Decision]
readPrec :: ReadPrec Decision
$creadPrec :: ReadPrec Decision
readList :: ReadS [Decision]
$creadList :: ReadS [Decision]
readsPrec :: Int -> ReadS Decision
$creadsPrec :: Int -> ReadS Decision
Prelude.Read, Int -> Decision -> ShowS
[Decision] -> ShowS
Decision -> String
(Int -> Decision -> ShowS)
-> (Decision -> String) -> ([Decision] -> ShowS) -> Show Decision
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Decision] -> ShowS
$cshowList :: [Decision] -> ShowS
show :: Decision -> String
$cshow :: Decision -> String
showsPrec :: Int -> Decision -> ShowS
$cshowsPrec :: Int -> Decision -> ShowS
Prelude.Show, (forall x. Decision -> Rep Decision x)
-> (forall x. Rep Decision x -> Decision) -> Generic Decision
forall x. Rep Decision x -> Decision
forall x. Decision -> Rep Decision x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Decision x -> Decision
$cfrom :: forall x. Decision -> Rep Decision x
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:
--
-- '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.
--
-- 'signalExternalWorkflowExecutionDecisionAttributes', 'decision_signalExternalWorkflowExecutionDecisionAttributes' - Provides the details of the @SignalExternalWorkflowExecution@ 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.
--
-- 'recordMarkerDecisionAttributes', 'decision_recordMarkerDecisionAttributes' - Provides the details of the @RecordMarker@ 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.
--
-- 'startChildWorkflowExecutionDecisionAttributes', 'decision_startChildWorkflowExecutionDecisionAttributes' - Provides the details of the @StartChildWorkflowExecution@ 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.
--
-- 'scheduleLambdaFunctionDecisionAttributes', 'decision_scheduleLambdaFunctionDecisionAttributes' - Provides the details of the @ScheduleLambdaFunction@ 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.
--
-- 'cancelWorkflowExecutionDecisionAttributes', 'decision_cancelWorkflowExecutionDecisionAttributes' - Provides the details of the @CancelWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
--
-- 'cancelTimerDecisionAttributes', 'decision_cancelTimerDecisionAttributes' - Provides the details of the @CancelTimer@ 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.
--
-- 'decisionType', 'decision_decisionType' - Specifies the type of the decision.
newDecision ::
  -- | 'decisionType'
  DecisionType ->
  Decision
newDecision :: DecisionType -> Decision
newDecision DecisionType
pDecisionType_ =
  Decision' :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
-> Maybe ScheduleActivityTaskDecisionAttributes
-> Maybe SignalExternalWorkflowExecutionDecisionAttributes
-> Maybe StartTimerDecisionAttributes
-> Maybe RecordMarkerDecisionAttributes
-> Maybe FailWorkflowExecutionDecisionAttributes
-> Maybe StartChildWorkflowExecutionDecisionAttributes
-> Maybe CompleteWorkflowExecutionDecisionAttributes
-> Maybe ScheduleLambdaFunctionDecisionAttributes
-> Maybe RequestCancelActivityTaskDecisionAttributes
-> Maybe CancelWorkflowExecutionDecisionAttributes
-> Maybe CancelTimerDecisionAttributes
-> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
-> DecisionType
-> Decision
Decision'
    { $sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes =
        Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleActivityTaskDecisionAttributes:Decision' :: Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes =
        Maybe ScheduleActivityTaskDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes =
        Maybe SignalExternalWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:startTimerDecisionAttributes:Decision' :: Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes = Maybe StartTimerDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:recordMarkerDecisionAttributes:Decision' :: Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes = Maybe RecordMarkerDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:failWorkflowExecutionDecisionAttributes:Decision' :: Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes =
        Maybe FailWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes =
        Maybe StartChildWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes =
        Maybe CompleteWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes =
        Maybe ScheduleLambdaFunctionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes =
        Maybe RequestCancelActivityTaskDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes =
        Maybe CancelWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:cancelTimerDecisionAttributes:Decision' :: Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes = Maybe CancelTimerDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes =
        Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
forall a. Maybe a
Prelude.Nothing,
      $sel:decisionType:Decision' :: DecisionType
decisionType = DecisionType
pDecisionType_
    }

-- | 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 :: (Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
 -> f (Maybe
         RequestCancelExternalWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_requestCancelExternalWorkflowExecutionDecisionAttributes = (Decision
 -> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
    -> Decision)
-> Lens
     Decision
     Decision
     (Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes)
     (Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
$sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision
-> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes} -> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes = Maybe 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 :: (Maybe ScheduleActivityTaskDecisionAttributes
 -> f (Maybe ScheduleActivityTaskDecisionAttributes))
-> Decision -> f Decision
decision_scheduleActivityTaskDecisionAttributes = (Decision -> Maybe ScheduleActivityTaskDecisionAttributes)
-> (Decision
    -> Maybe ScheduleActivityTaskDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe ScheduleActivityTaskDecisionAttributes)
     (Maybe ScheduleActivityTaskDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes :: Maybe ScheduleActivityTaskDecisionAttributes
$sel:scheduleActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes} -> Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe ScheduleActivityTaskDecisionAttributes
a -> Decision
s {$sel:scheduleActivityTaskDecisionAttributes:Decision' :: Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes = Maybe ScheduleActivityTaskDecisionAttributes
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 :: (Maybe SignalExternalWorkflowExecutionDecisionAttributes
 -> f (Maybe SignalExternalWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_signalExternalWorkflowExecutionDecisionAttributes = (Decision
 -> Maybe SignalExternalWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
    -> Decision)
-> Lens
     Decision
     Decision
     (Maybe SignalExternalWorkflowExecutionDecisionAttributes)
     (Maybe SignalExternalWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
$sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes} -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe SignalExternalWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes = Maybe SignalExternalWorkflowExecutionDecisionAttributes
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 :: (Maybe StartTimerDecisionAttributes
 -> f (Maybe StartTimerDecisionAttributes))
-> Decision -> f Decision
decision_startTimerDecisionAttributes = (Decision -> Maybe StartTimerDecisionAttributes)
-> (Decision -> Maybe StartTimerDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe StartTimerDecisionAttributes)
     (Maybe StartTimerDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes :: Maybe StartTimerDecisionAttributes
$sel:startTimerDecisionAttributes:Decision' :: Decision -> Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes} -> Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe StartTimerDecisionAttributes
a -> Decision
s {$sel:startTimerDecisionAttributes:Decision' :: Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes = Maybe StartTimerDecisionAttributes
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 :: (Maybe RecordMarkerDecisionAttributes
 -> f (Maybe RecordMarkerDecisionAttributes))
-> Decision -> f Decision
decision_recordMarkerDecisionAttributes = (Decision -> Maybe RecordMarkerDecisionAttributes)
-> (Decision -> Maybe RecordMarkerDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe RecordMarkerDecisionAttributes)
     (Maybe RecordMarkerDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes :: Maybe RecordMarkerDecisionAttributes
$sel:recordMarkerDecisionAttributes:Decision' :: Decision -> Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes} -> Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe RecordMarkerDecisionAttributes
a -> Decision
s {$sel:recordMarkerDecisionAttributes:Decision' :: Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes = Maybe RecordMarkerDecisionAttributes
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 :: (Maybe FailWorkflowExecutionDecisionAttributes
 -> f (Maybe FailWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_failWorkflowExecutionDecisionAttributes = (Decision -> Maybe FailWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe FailWorkflowExecutionDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe FailWorkflowExecutionDecisionAttributes)
     (Maybe FailWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes :: Maybe FailWorkflowExecutionDecisionAttributes
$sel:failWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes} -> Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe FailWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:failWorkflowExecutionDecisionAttributes:Decision' :: Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes = Maybe FailWorkflowExecutionDecisionAttributes
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 :: (Maybe StartChildWorkflowExecutionDecisionAttributes
 -> f (Maybe StartChildWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_startChildWorkflowExecutionDecisionAttributes = (Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe StartChildWorkflowExecutionDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe StartChildWorkflowExecutionDecisionAttributes)
     (Maybe StartChildWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes :: Maybe StartChildWorkflowExecutionDecisionAttributes
$sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes} -> Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe StartChildWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes = Maybe StartChildWorkflowExecutionDecisionAttributes
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 :: (Maybe CompleteWorkflowExecutionDecisionAttributes
 -> f (Maybe CompleteWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_completeWorkflowExecutionDecisionAttributes = (Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe CompleteWorkflowExecutionDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe CompleteWorkflowExecutionDecisionAttributes)
     (Maybe CompleteWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes :: Maybe CompleteWorkflowExecutionDecisionAttributes
$sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes} -> Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe CompleteWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes = Maybe CompleteWorkflowExecutionDecisionAttributes
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 :: (Maybe ScheduleLambdaFunctionDecisionAttributes
 -> f (Maybe ScheduleLambdaFunctionDecisionAttributes))
-> Decision -> f Decision
decision_scheduleLambdaFunctionDecisionAttributes = (Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes)
-> (Decision
    -> Maybe ScheduleLambdaFunctionDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe ScheduleLambdaFunctionDecisionAttributes)
     (Maybe ScheduleLambdaFunctionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes :: Maybe ScheduleLambdaFunctionDecisionAttributes
$sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes} -> Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe ScheduleLambdaFunctionDecisionAttributes
a -> Decision
s {$sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes = Maybe ScheduleLambdaFunctionDecisionAttributes
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 :: (Maybe RequestCancelActivityTaskDecisionAttributes
 -> f (Maybe RequestCancelActivityTaskDecisionAttributes))
-> Decision -> f Decision
decision_requestCancelActivityTaskDecisionAttributes = (Decision -> Maybe RequestCancelActivityTaskDecisionAttributes)
-> (Decision
    -> Maybe RequestCancelActivityTaskDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe RequestCancelActivityTaskDecisionAttributes)
     (Maybe RequestCancelActivityTaskDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes :: Maybe RequestCancelActivityTaskDecisionAttributes
$sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes} -> Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe RequestCancelActivityTaskDecisionAttributes
a -> Decision
s {$sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes = Maybe RequestCancelActivityTaskDecisionAttributes
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 :: (Maybe CancelWorkflowExecutionDecisionAttributes
 -> f (Maybe CancelWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_cancelWorkflowExecutionDecisionAttributes = (Decision -> Maybe CancelWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe CancelWorkflowExecutionDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe CancelWorkflowExecutionDecisionAttributes)
     (Maybe CancelWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes :: Maybe CancelWorkflowExecutionDecisionAttributes
$sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes} -> Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe CancelWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes = Maybe CancelWorkflowExecutionDecisionAttributes
a} :: Decision)

-- | 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 :: (Maybe CancelTimerDecisionAttributes
 -> f (Maybe CancelTimerDecisionAttributes))
-> Decision -> f Decision
decision_cancelTimerDecisionAttributes = (Decision -> Maybe CancelTimerDecisionAttributes)
-> (Decision -> Maybe CancelTimerDecisionAttributes -> Decision)
-> Lens
     Decision
     Decision
     (Maybe CancelTimerDecisionAttributes)
     (Maybe CancelTimerDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes :: Maybe CancelTimerDecisionAttributes
$sel:cancelTimerDecisionAttributes:Decision' :: Decision -> Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes} -> Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe CancelTimerDecisionAttributes
a -> Decision
s {$sel:cancelTimerDecisionAttributes:Decision' :: Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes = Maybe CancelTimerDecisionAttributes
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 :: (Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
 -> f (Maybe ContinueAsNewWorkflowExecutionDecisionAttributes))
-> Decision -> f Decision
decision_continueAsNewWorkflowExecutionDecisionAttributes = (Decision
 -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes)
-> (Decision
    -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
    -> Decision)
-> Lens
     Decision
     Decision
     (Maybe ContinueAsNewWorkflowExecutionDecisionAttributes)
     (Maybe ContinueAsNewWorkflowExecutionDecisionAttributes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
$sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes} -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes) (\s :: Decision
s@Decision' {} Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
a -> Decision
s {$sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes = Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
a} :: Decision)

-- | Specifies the type of the decision.
decision_decisionType :: Lens.Lens' Decision DecisionType
decision_decisionType :: (DecisionType -> f DecisionType) -> Decision -> f Decision
decision_decisionType = (Decision -> DecisionType)
-> (Decision -> DecisionType -> Decision)
-> Lens Decision Decision DecisionType DecisionType
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Decision' {DecisionType
decisionType :: DecisionType
$sel:decisionType:Decision' :: Decision -> DecisionType
decisionType} -> DecisionType
decisionType) (\s :: Decision
s@Decision' {} DecisionType
a -> Decision
s {$sel:decisionType:Decision' :: DecisionType
decisionType = DecisionType
a} :: Decision)

instance Prelude.Hashable Decision

instance Prelude.NFData Decision

instance Core.ToJSON Decision where
  toJSON :: Decision -> Value
toJSON Decision' {Maybe CancelTimerDecisionAttributes
Maybe CancelWorkflowExecutionDecisionAttributes
Maybe CompleteWorkflowExecutionDecisionAttributes
Maybe FailWorkflowExecutionDecisionAttributes
Maybe RecordMarkerDecisionAttributes
Maybe RequestCancelActivityTaskDecisionAttributes
Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
Maybe ScheduleLambdaFunctionDecisionAttributes
Maybe SignalExternalWorkflowExecutionDecisionAttributes
Maybe StartTimerDecisionAttributes
Maybe ScheduleActivityTaskDecisionAttributes
Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
Maybe StartChildWorkflowExecutionDecisionAttributes
DecisionType
decisionType :: DecisionType
continueAsNewWorkflowExecutionDecisionAttributes :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
cancelTimerDecisionAttributes :: Maybe CancelTimerDecisionAttributes
cancelWorkflowExecutionDecisionAttributes :: Maybe CancelWorkflowExecutionDecisionAttributes
requestCancelActivityTaskDecisionAttributes :: Maybe RequestCancelActivityTaskDecisionAttributes
scheduleLambdaFunctionDecisionAttributes :: Maybe ScheduleLambdaFunctionDecisionAttributes
completeWorkflowExecutionDecisionAttributes :: Maybe CompleteWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes :: Maybe StartChildWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes :: Maybe FailWorkflowExecutionDecisionAttributes
recordMarkerDecisionAttributes :: Maybe RecordMarkerDecisionAttributes
startTimerDecisionAttributes :: Maybe StartTimerDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
scheduleActivityTaskDecisionAttributes :: Maybe ScheduleActivityTaskDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
$sel:decisionType:Decision' :: Decision -> DecisionType
$sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
$sel:cancelTimerDecisionAttributes:Decision' :: Decision -> Maybe CancelTimerDecisionAttributes
$sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CancelWorkflowExecutionDecisionAttributes
$sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe RequestCancelActivityTaskDecisionAttributes
$sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes
$sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes
$sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes
$sel:failWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe FailWorkflowExecutionDecisionAttributes
$sel:recordMarkerDecisionAttributes:Decision' :: Decision -> Maybe RecordMarkerDecisionAttributes
$sel:startTimerDecisionAttributes:Decision' :: Decision -> Maybe StartTimerDecisionAttributes
$sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
$sel:scheduleActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe ScheduleActivityTaskDecisionAttributes
$sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision
-> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ ( Text
"requestCancelExternalWorkflowExecutionDecisionAttributes"
                Text
-> RequestCancelExternalWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=
            )
              (RequestCancelExternalWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes,
            (Text
"scheduleActivityTaskDecisionAttributes" Text -> ScheduleActivityTaskDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ScheduleActivityTaskDecisionAttributes -> Pair)
-> Maybe ScheduleActivityTaskDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes,
            ( Text
"signalExternalWorkflowExecutionDecisionAttributes"
                Text -> SignalExternalWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=
            )
              (SignalExternalWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe SignalExternalWorkflowExecutionDecisionAttributes
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes,
            (Text
"startTimerDecisionAttributes" Text -> StartTimerDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (StartTimerDecisionAttributes -> Pair)
-> Maybe StartTimerDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes,
            (Text
"recordMarkerDecisionAttributes" Text -> RecordMarkerDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (RecordMarkerDecisionAttributes -> Pair)
-> Maybe RecordMarkerDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes,
            (Text
"failWorkflowExecutionDecisionAttributes" Text -> FailWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (FailWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe FailWorkflowExecutionDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes,
            ( Text
"startChildWorkflowExecutionDecisionAttributes"
                Text -> StartChildWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=
            )
              (StartChildWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe StartChildWorkflowExecutionDecisionAttributes
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes,
            ( Text
"completeWorkflowExecutionDecisionAttributes"
                Text -> CompleteWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=
            )
              (CompleteWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe CompleteWorkflowExecutionDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes,
            (Text
"scheduleLambdaFunctionDecisionAttributes" Text -> ScheduleLambdaFunctionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ScheduleLambdaFunctionDecisionAttributes -> Pair)
-> Maybe ScheduleLambdaFunctionDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes,
            ( Text
"requestCancelActivityTaskDecisionAttributes"
                Text -> RequestCancelActivityTaskDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=
            )
              (RequestCancelActivityTaskDecisionAttributes -> Pair)
-> Maybe RequestCancelActivityTaskDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes,
            (Text
"cancelWorkflowExecutionDecisionAttributes" Text -> CancelWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CancelWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe CancelWorkflowExecutionDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes,
            (Text
"cancelTimerDecisionAttributes" Text -> CancelTimerDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CancelTimerDecisionAttributes -> Pair)
-> Maybe CancelTimerDecisionAttributes -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes,
            ( Text
"continueAsNewWorkflowExecutionDecisionAttributes"
                Text -> ContinueAsNewWorkflowExecutionDecisionAttributes -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=
            )
              (ContinueAsNewWorkflowExecutionDecisionAttributes -> Pair)
-> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes,
            Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"decisionType" Text -> DecisionType -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= DecisionType
decisionType)
          ]
      )