{-# 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.
    Decision -> Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes :: Prelude.Maybe CancelTimerDecisionAttributes,
    -- | 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 @CompleteWorkflowExecution@ decision. It
    -- isn\'t set for other decision types.
    Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes :: Prelude.Maybe CompleteWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @ContinueAsNewWorkflowExecution@ decision.
    -- It isn\'t set for other decision types.
    Decision -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes :: Prelude.Maybe ContinueAsNewWorkflowExecutionDecisionAttributes,
    -- | 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 @RecordMarker@ decision. It isn\'t set for
    -- other decision types.
    Decision -> Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes :: Prelude.Maybe RecordMarkerDecisionAttributes,
    -- | 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 @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 @ScheduleLambdaFunction@ decision. It isn\'t
    -- set for other decision types.
    Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes :: Prelude.Maybe ScheduleLambdaFunctionDecisionAttributes,
    -- | 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 @StartChildWorkflowExecution@ decision. It
    -- isn\'t set for other decision types.
    Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes :: Prelude.Maybe StartChildWorkflowExecutionDecisionAttributes,
    -- | Provides the details of the @StartTimer@ decision. It isn\'t set for
    -- other decision types.
    Decision -> Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes :: Prelude.Maybe StartTimerDecisionAttributes,
    -- | Specifies the type of the decision.
    Decision -> DecisionType
decisionType :: DecisionType
  }
  deriving (Decision -> Decision -> Bool
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]
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
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. 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:
--
-- '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 :: DecisionType -> Decision
newDecision DecisionType
pDecisionType_ =
  Decision'
    { $sel:cancelTimerDecisionAttributes:Decision' :: Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:failWorkflowExecutionDecisionAttributes:Decision' :: Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:recordMarkerDecisionAttributes:Decision' :: Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleActivityTaskDecisionAttributes:Decision' :: Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:startTimerDecisionAttributes:Decision' :: Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:decisionType:Decision' :: DecisionType
decisionType = 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' Decision (Maybe CancelTimerDecisionAttributes)
decision_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 @CancelWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
decision_cancelWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe CancelWorkflowExecutionDecisionAttributes)
decision_cancelWorkflowExecutionDecisionAttributes :: Lens' Decision (Maybe CancelWorkflowExecutionDecisionAttributes)
decision_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 @CompleteWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
decision_completeWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe CompleteWorkflowExecutionDecisionAttributes)
decision_completeWorkflowExecutionDecisionAttributes :: Lens' Decision (Maybe CompleteWorkflowExecutionDecisionAttributes)
decision_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 @ContinueAsNewWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
decision_continueAsNewWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe ContinueAsNewWorkflowExecutionDecisionAttributes)
decision_continueAsNewWorkflowExecutionDecisionAttributes :: Lens'
  Decision (Maybe ContinueAsNewWorkflowExecutionDecisionAttributes)
decision_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)

-- | 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' Decision (Maybe FailWorkflowExecutionDecisionAttributes)
decision_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 @RecordMarker@ decision. It isn\'t set for
-- other decision types.
decision_recordMarkerDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe RecordMarkerDecisionAttributes)
decision_recordMarkerDecisionAttributes :: Lens' Decision (Maybe RecordMarkerDecisionAttributes)
decision_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 @RequestCancelActivityTask@ decision. It
-- isn\'t set for other decision types.
decision_requestCancelActivityTaskDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe RequestCancelActivityTaskDecisionAttributes)
decision_requestCancelActivityTaskDecisionAttributes :: Lens' Decision (Maybe RequestCancelActivityTaskDecisionAttributes)
decision_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 @RequestCancelExternalWorkflowExecution@
-- decision. It isn\'t set for other decision types.
decision_requestCancelExternalWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes)
decision_requestCancelExternalWorkflowExecutionDecisionAttributes :: Lens'
  Decision
  (Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes)
decision_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 :: Lens' Decision (Maybe ScheduleActivityTaskDecisionAttributes)
decision_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 @ScheduleLambdaFunction@ decision. It isn\'t
-- set for other decision types.
decision_scheduleLambdaFunctionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe ScheduleLambdaFunctionDecisionAttributes)
decision_scheduleLambdaFunctionDecisionAttributes :: Lens' Decision (Maybe ScheduleLambdaFunctionDecisionAttributes)
decision_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 @SignalExternalWorkflowExecution@ decision.
-- It isn\'t set for other decision types.
decision_signalExternalWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe SignalExternalWorkflowExecutionDecisionAttributes)
decision_signalExternalWorkflowExecutionDecisionAttributes :: Lens'
  Decision (Maybe SignalExternalWorkflowExecutionDecisionAttributes)
decision_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 @StartChildWorkflowExecution@ decision. It
-- isn\'t set for other decision types.
decision_startChildWorkflowExecutionDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe StartChildWorkflowExecutionDecisionAttributes)
decision_startChildWorkflowExecutionDecisionAttributes :: Lens'
  Decision (Maybe StartChildWorkflowExecutionDecisionAttributes)
decision_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 @StartTimer@ decision. It isn\'t set for
-- other decision types.
decision_startTimerDecisionAttributes :: Lens.Lens' Decision (Prelude.Maybe StartTimerDecisionAttributes)
decision_startTimerDecisionAttributes :: Lens' Decision (Maybe StartTimerDecisionAttributes)
decision_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)

-- | Specifies the type of the decision.
decision_decisionType :: Lens.Lens' Decision DecisionType
decision_decisionType :: Lens' Decision DecisionType
decision_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 where
  hashWithSalt :: Int -> Decision -> Int
hashWithSalt Int
_salt 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
startTimerDecisionAttributes :: Maybe StartTimerDecisionAttributes
startChildWorkflowExecutionDecisionAttributes :: Maybe StartChildWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes :: Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleActivityTaskDecisionAttributes :: Maybe ScheduleActivityTaskDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelActivityTaskDecisionAttributes :: Maybe RequestCancelActivityTaskDecisionAttributes
recordMarkerDecisionAttributes :: Maybe RecordMarkerDecisionAttributes
failWorkflowExecutionDecisionAttributes :: Maybe FailWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes :: Maybe CompleteWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes :: Maybe CancelWorkflowExecutionDecisionAttributes
cancelTimerDecisionAttributes :: Maybe CancelTimerDecisionAttributes
$sel:decisionType:Decision' :: Decision -> DecisionType
$sel:startTimerDecisionAttributes:Decision' :: Decision -> Maybe StartTimerDecisionAttributes
$sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes
$sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
$sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes
$sel:scheduleActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe ScheduleActivityTaskDecisionAttributes
$sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision
-> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
$sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe RequestCancelActivityTaskDecisionAttributes
$sel:recordMarkerDecisionAttributes:Decision' :: Decision -> Maybe RecordMarkerDecisionAttributes
$sel:failWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe FailWorkflowExecutionDecisionAttributes
$sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
$sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes
$sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CancelWorkflowExecutionDecisionAttributes
$sel:cancelTimerDecisionAttributes:Decision' :: Decision -> Maybe CancelTimerDecisionAttributes
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DecisionType
decisionType

instance Prelude.NFData Decision where
  rnf :: Decision -> ()
rnf 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
startTimerDecisionAttributes :: Maybe StartTimerDecisionAttributes
startChildWorkflowExecutionDecisionAttributes :: Maybe StartChildWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes :: Maybe SignalExternalWorkflowExecutionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes :: Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleActivityTaskDecisionAttributes :: Maybe ScheduleActivityTaskDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes :: Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelActivityTaskDecisionAttributes :: Maybe RequestCancelActivityTaskDecisionAttributes
recordMarkerDecisionAttributes :: Maybe RecordMarkerDecisionAttributes
failWorkflowExecutionDecisionAttributes :: Maybe FailWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes :: Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes :: Maybe CompleteWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes :: Maybe CancelWorkflowExecutionDecisionAttributes
cancelTimerDecisionAttributes :: Maybe CancelTimerDecisionAttributes
$sel:decisionType:Decision' :: Decision -> DecisionType
$sel:startTimerDecisionAttributes:Decision' :: Decision -> Maybe StartTimerDecisionAttributes
$sel:startChildWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe StartChildWorkflowExecutionDecisionAttributes
$sel:signalExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe SignalExternalWorkflowExecutionDecisionAttributes
$sel:scheduleLambdaFunctionDecisionAttributes:Decision' :: Decision -> Maybe ScheduleLambdaFunctionDecisionAttributes
$sel:scheduleActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe ScheduleActivityTaskDecisionAttributes
$sel:requestCancelExternalWorkflowExecutionDecisionAttributes:Decision' :: Decision
-> Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
$sel:requestCancelActivityTaskDecisionAttributes:Decision' :: Decision -> Maybe RequestCancelActivityTaskDecisionAttributes
$sel:recordMarkerDecisionAttributes:Decision' :: Decision -> Maybe RecordMarkerDecisionAttributes
$sel:failWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe FailWorkflowExecutionDecisionAttributes
$sel:continueAsNewWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
$sel:completeWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CompleteWorkflowExecutionDecisionAttributes
$sel:cancelWorkflowExecutionDecisionAttributes:Decision' :: Decision -> Maybe CancelWorkflowExecutionDecisionAttributes
$sel:cancelTimerDecisionAttributes:Decision' :: Decision -> Maybe CancelTimerDecisionAttributes
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe CancelTimerDecisionAttributes
cancelTimerDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CancelWorkflowExecutionDecisionAttributes
cancelWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe CompleteWorkflowExecutionDecisionAttributes
completeWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ContinueAsNewWorkflowExecutionDecisionAttributes
continueAsNewWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FailWorkflowExecutionDecisionAttributes
failWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RecordMarkerDecisionAttributes
recordMarkerDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe RequestCancelActivityTaskDecisionAttributes
requestCancelActivityTaskDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe RequestCancelExternalWorkflowExecutionDecisionAttributes
requestCancelExternalWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ScheduleActivityTaskDecisionAttributes
scheduleActivityTaskDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ScheduleLambdaFunctionDecisionAttributes
scheduleLambdaFunctionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe SignalExternalWorkflowExecutionDecisionAttributes
signalExternalWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe StartChildWorkflowExecutionDecisionAttributes
startChildWorkflowExecutionDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StartTimerDecisionAttributes
startTimerDecisionAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DecisionType
decisionType

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