forked from aws/aws-sdk-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDecision.java
More file actions
876 lines (798 loc) · 47.2 KB
/
Decision.java
File metadata and controls
876 lines (798 loc) · 47.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
/*
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.services.simpleworkflow.model;
import java.io.Serializable;
/**
* <p>
* Specifies a decision made by the decider. A decision can be one of these types:
* </p>
*
* <ul>
* <li> <b>CancelTimer</b> cancels a previously started timer and records a <code>TimerCanceled</code> event in the history.</li>
* <li> <b>CancelWorkflowExecution</b> closes the workflow execution and records a <code>WorkflowExecutionCanceled</code> event in the history.</li>
* <li> <b>CompleteWorkflowExecution</b> closes the workflow execution and records a <code>WorkflowExecutionCompleted</code> event in the history .</li>
* <li> <b>ContinueAsNewWorkflowExecution</b> closes the workflow execution and starts a new workflow execution of the same type using the same workflow
* id and a unique run Id. A <code>WorkflowExecutionContinuedAsNew</code> event is recorded in the history.</li>
* <li> <b>FailWorkflowExecution</b> closes the workflow execution and records a <code>WorkflowExecutionFailed</code> event in the history.</li>
* <li> <b>RecordMarker</b> records a <code>MarkerRecorded</code> event in the history. Markers can be used for adding custom information in the history
* for instance to let deciders know that they do not need to look at the history beyond the marker event.</li>
* <li> <b>RequestCancelActivityTask</b> attempts to cancel a previously scheduled activity task. If the activity task was scheduled but has not been
* assigned to a worker, then it will be canceled. If the activity task was already assigned to a worker, then the worker will be informed that
* cancellation has been requested in the response to RecordActivityTaskHeartbeat.</li>
* <li> <b>RequestCancelExternalWorkflowExecution</b> requests that a request be made to cancel the specified external workflow execution and records a
* <code>RequestCancelExternalWorkflowExecutionInitiated</code> event in the history.</li>
* <li> <b>ScheduleActivityTask</b> schedules an activity task.</li>
* <li> <b>SignalExternalWorkflowExecution</b> requests a signal to be delivered to the specified external workflow execution and records a
* <code>SignalExternalWorkflowExecutionInitiated</code> event in the history.</li>
* <li> <b>StartChildWorkflowExecution</b> requests that a child workflow execution be started and records a
* <code>StartChildWorkflowExecutionInitiated</code> event in the history. The child workflow execution is a separate workflow execution with its own
* history.</li>
* <li> <b>StartTimer</b> starts a timer for this workflow execution and records a <code>TimerStarted</code> event in the history. This timer will fire
* after the specified delay and record a <code>TimerFired</code> event.</li>
*
* </ul>
* <p>
* <b>Access Control</b>
* </p>
* <p>
* If you grant permission to use <code>RespondDecisionTaskCompleted</code> , you can use IAM policies to express permissions for the list of decisions
* returned by this action as if they were members of the API. Treating decisions as a pseudo API maintains a uniform conceptual model and helps keep
* policies readable. For details and example IAM policies, see <a href="http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-iam.html">
* Using IAM to Manage Access to Amazon SWF Workflows </a> .
* </p>
* <p>
* <b>Decision Failure</b>
* </p>
* <p>
* Decisions can fail for several reasons
* </p>
*
* <ul>
* <li>The ordering of decisions should follow a logical flow. Some decisions might not make sense in the current context of the workflow execution and
* will therefore fail.</li>
* <li>A limit on your account was reached.</li>
* <li>The decision lacks sufficient permissions.</li>
*
* </ul>
* <p>
* One of the following events might be added to the history to indicate an error. The event attribute's <b>cause</b> parameter indicates the cause. If
* <b>cause</b> is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions.
* </p>
*
* <ul>
* <li> <b>ScheduleActivityTaskFailed</b> a ScheduleActivityTask decision failed. This could happen if the activity type specified in the decision is
* not registered, is in a deprecated state, or the decision is not properly configured.</li>
* <li> <b>RequestCancelActivityTaskFailed</b> a RequestCancelActivityTask decision failed. This could happen if there is no open activity task with the
* specified activityId.</li>
* <li> <b>StartTimerFailed</b> a StartTimer decision failed. This could happen if there is another open timer with the same timerId.</li>
* <li> <b>CancelTimerFailed</b> a CancelTimer decision failed. This could happen if there is no open timer with the specified timerId.</li>
* <li> <b>StartChildWorkflowExecutionFailed</b> a StartChildWorkflowExecution decision failed. This could happen if the workflow type specified is not
* registered, is deprecated, or the decision is not properly configured.</li>
* <li> <b>SignalExternalWorkflowExecutionFailed</b> a SignalExternalWorkflowExecution decision failed. This could happen if the <code>workflowID</code>
* specified in the decision was incorrect. </li>
* <li> <b>RequestCancelExternalWorkflowExecutionFailed</b> a RequestCancelExternalWorkflowExecution decision failed. This could happen if the
* <code>workflowID</code> specified in the decision was incorrect. </li>
* <li> <b>CancelWorkflowExecutionFailed</b> a CancelWorkflowExecution decision failed. This could happen if there is an unhandled decision task pending
* in the workflow execution. </li>
* <li> <b>CompleteWorkflowExecutionFailed</b> a CompleteWorkflowExecution decision failed. This could happen if there is an unhandled decision task
* pending in the workflow execution. </li>
* <li> <b>ContinueAsNewWorkflowExecutionFailed</b> a ContinueAsNewWorkflowExecution decision failed. This could happen if there is an unhandled
* decision task pending in the workflow execution or the ContinueAsNewWorkflowExecution decision was not configured correctly. </li>
* <li> <b>FailWorkflowExecutionFailed</b> a FailWorkflowExecution decision failed. This could happen if there is an unhandled decision task pending in
* the workflow execution. </li>
*
* </ul>
* <p>
* The preceding error events might occur due to an error in the decider logic, which might put the workflow execution in an unstable state The cause
* field in the event structure for the error event indicates the cause of the error.
* </p>
* <p>
* <b>NOTE:</b> A workflow execution may be closed by the decider by returning one of the following decisions when completing a decision task:
* CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution and ContinueAsNewWorkflowExecution. An UnhandledDecision fault will be
* returned if a workflow closing decision is specified and a signal or activity event had been added to the history while the decision task was being
* performed by the decider. Unlike the above situations which are logic issues, this fault is always possible because of race conditions in a
* distributed system. The right action here is to call RespondDecisionTaskCompleted without any decisions. This would result in another decision task
* with these new events included in the history. The decider should handle the new events and may decide to close the workflow execution.
* </p>
* <p>
* <b>How to Code a Decision</b>
* </p>
* <p>
* You code a decision by first setting the decision type field to one of the above decision values, and then set the corresponding attributes field
* shown below:
* </p>
*
* <ul>
* <li> ScheduleActivityTaskDecisionAttributes </li>
* <li> RequestCancelActivityTaskDecisionAttributes </li>
* <li> CompleteWorkflowExecutionDecisionAttributes </li>
* <li> FailWorkflowExecutionDecisionAttributes </li>
* <li> CancelWorkflowExecutionDecisionAttributes </li>
* <li> ContinueAsNewWorkflowExecutionDecisionAttributes </li>
* <li> RecordMarkerDecisionAttributes </li>
* <li> StartTimerDecisionAttributes </li>
* <li> CancelTimerDecisionAttributes </li>
* <li> SignalExternalWorkflowExecutionDecisionAttributes </li>
* <li> RequestCancelExternalWorkflowExecutionDecisionAttributes </li>
* <li> StartChildWorkflowExecutionDecisionAttributes </li>
*
* </ul>
*/
public class Decision implements Serializable {
/**
* Specifies the type of the decision.
* <p>
* <b>Constraints:</b><br/>
* <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution
*/
private String decisionType;
/**
* Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
*/
private ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes;
/**
* Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
*/
private RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes;
/**
* Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
private CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes;
/**
* Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
*/
private FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes;
/**
* Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
*/
private CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes;
/**
* Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
private ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes;
/**
* Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
*/
private RecordMarkerDecisionAttributes recordMarkerDecisionAttributes;
/**
* Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
*/
private StartTimerDecisionAttributes startTimerDecisionAttributes;
/**
* Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
*/
private CancelTimerDecisionAttributes cancelTimerDecisionAttributes;
/**
* Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
private SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes;
/**
* Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
*/
private RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes;
/**
* Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
private StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes;
/**
* Specifies the type of the decision.
* <p>
* <b>Constraints:</b><br/>
* <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution
*
* @return Specifies the type of the decision.
*
* @see DecisionType
*/
public String getDecisionType() {
return decisionType;
}
/**
* Specifies the type of the decision.
* <p>
* <b>Constraints:</b><br/>
* <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution
*
* @param decisionType Specifies the type of the decision.
*
* @see DecisionType
*/
public void setDecisionType(String decisionType) {
this.decisionType = decisionType;
}
/**
* Specifies the type of the decision.
* <p>
* Returns a reference to this object so that method calls can be chained together.
* <p>
* <b>Constraints:</b><br/>
* <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution
*
* @param decisionType Specifies the type of the decision.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*
* @see DecisionType
*/
public Decision withDecisionType(String decisionType) {
this.decisionType = decisionType;
return this;
}
/**
* Specifies the type of the decision.
* <p>
* <b>Constraints:</b><br/>
* <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution
*
* @param decisionType Specifies the type of the decision.
*
* @see DecisionType
*/
public void setDecisionType(DecisionType decisionType) {
this.decisionType = decisionType.toString();
}
/**
* Specifies the type of the decision.
* <p>
* Returns a reference to this object so that method calls can be chained together.
* <p>
* <b>Constraints:</b><br/>
* <b>Allowed Values: </b>ScheduleActivityTask, RequestCancelActivityTask, CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution, ContinueAsNewWorkflowExecution, RecordMarker, StartTimer, CancelTimer, SignalExternalWorkflowExecution, RequestCancelExternalWorkflowExecution, StartChildWorkflowExecution
*
* @param decisionType Specifies the type of the decision.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*
* @see DecisionType
*/
public Decision withDecisionType(DecisionType decisionType) {
this.decisionType = decisionType.toString();
return this;
}
/**
* Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
*
* @return Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
*/
public ScheduleActivityTaskDecisionAttributes getScheduleActivityTaskDecisionAttributes() {
return scheduleActivityTaskDecisionAttributes;
}
/**
* Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
*
* @param scheduleActivityTaskDecisionAttributes Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
*/
public void setScheduleActivityTaskDecisionAttributes(ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes) {
this.scheduleActivityTaskDecisionAttributes = scheduleActivityTaskDecisionAttributes;
}
/**
* Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param scheduleActivityTaskDecisionAttributes Provides details of the <code>ScheduleActivityTask</code> decision. It
* is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withScheduleActivityTaskDecisionAttributes(ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes) {
this.scheduleActivityTaskDecisionAttributes = scheduleActivityTaskDecisionAttributes;
return this;
}
/**
* Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
*
* @return Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
*/
public RequestCancelActivityTaskDecisionAttributes getRequestCancelActivityTaskDecisionAttributes() {
return requestCancelActivityTaskDecisionAttributes;
}
/**
* Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
*
* @param requestCancelActivityTaskDecisionAttributes Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
*/
public void setRequestCancelActivityTaskDecisionAttributes(RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes) {
this.requestCancelActivityTaskDecisionAttributes = requestCancelActivityTaskDecisionAttributes;
}
/**
* Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param requestCancelActivityTaskDecisionAttributes Provides details of the <code>RequestCancelActivityTask</code>
* decision. It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withRequestCancelActivityTaskDecisionAttributes(RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes) {
this.requestCancelActivityTaskDecisionAttributes = requestCancelActivityTaskDecisionAttributes;
return this;
}
/**
* Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public CompleteWorkflowExecutionDecisionAttributes getCompleteWorkflowExecutionDecisionAttributes() {
return completeWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @param completeWorkflowExecutionDecisionAttributes Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public void setCompleteWorkflowExecutionDecisionAttributes(CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes) {
this.completeWorkflowExecutionDecisionAttributes = completeWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param completeWorkflowExecutionDecisionAttributes Provides details of the <code>CompleteWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withCompleteWorkflowExecutionDecisionAttributes(CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes) {
this.completeWorkflowExecutionDecisionAttributes = completeWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
*
* @return Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
*/
public FailWorkflowExecutionDecisionAttributes getFailWorkflowExecutionDecisionAttributes() {
return failWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
*
* @param failWorkflowExecutionDecisionAttributes Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
*/
public void setFailWorkflowExecutionDecisionAttributes(FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes) {
this.failWorkflowExecutionDecisionAttributes = failWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param failWorkflowExecutionDecisionAttributes Provides details of the <code>FailWorkflowExecution</code> decision.
* It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withFailWorkflowExecutionDecisionAttributes(FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes) {
this.failWorkflowExecutionDecisionAttributes = failWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
*
* @return Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
*/
public CancelWorkflowExecutionDecisionAttributes getCancelWorkflowExecutionDecisionAttributes() {
return cancelWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
*
* @param cancelWorkflowExecutionDecisionAttributes Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
*/
public void setCancelWorkflowExecutionDecisionAttributes(CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes) {
this.cancelWorkflowExecutionDecisionAttributes = cancelWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param cancelWorkflowExecutionDecisionAttributes Provides details of the <code>CancelWorkflowExecution</code> decision.
* It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withCancelWorkflowExecutionDecisionAttributes(CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes) {
this.cancelWorkflowExecutionDecisionAttributes = cancelWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public ContinueAsNewWorkflowExecutionDecisionAttributes getContinueAsNewWorkflowExecutionDecisionAttributes() {
return continueAsNewWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @param continueAsNewWorkflowExecutionDecisionAttributes Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public void setContinueAsNewWorkflowExecutionDecisionAttributes(ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes) {
this.continueAsNewWorkflowExecutionDecisionAttributes = continueAsNewWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param continueAsNewWorkflowExecutionDecisionAttributes Provides details of the <code>ContinueAsNewWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withContinueAsNewWorkflowExecutionDecisionAttributes(ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes) {
this.continueAsNewWorkflowExecutionDecisionAttributes = continueAsNewWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
*
* @return Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
*/
public RecordMarkerDecisionAttributes getRecordMarkerDecisionAttributes() {
return recordMarkerDecisionAttributes;
}
/**
* Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
*
* @param recordMarkerDecisionAttributes Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
*/
public void setRecordMarkerDecisionAttributes(RecordMarkerDecisionAttributes recordMarkerDecisionAttributes) {
this.recordMarkerDecisionAttributes = recordMarkerDecisionAttributes;
}
/**
* Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param recordMarkerDecisionAttributes Provides details of the <code>RecordMarker</code> decision. It is not
* set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withRecordMarkerDecisionAttributes(RecordMarkerDecisionAttributes recordMarkerDecisionAttributes) {
this.recordMarkerDecisionAttributes = recordMarkerDecisionAttributes;
return this;
}
/**
* Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
*
* @return Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
*/
public StartTimerDecisionAttributes getStartTimerDecisionAttributes() {
return startTimerDecisionAttributes;
}
/**
* Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
*
* @param startTimerDecisionAttributes Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
*/
public void setStartTimerDecisionAttributes(StartTimerDecisionAttributes startTimerDecisionAttributes) {
this.startTimerDecisionAttributes = startTimerDecisionAttributes;
}
/**
* Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param startTimerDecisionAttributes Provides details of the <code>StartTimer</code> decision. It is not
* set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withStartTimerDecisionAttributes(StartTimerDecisionAttributes startTimerDecisionAttributes) {
this.startTimerDecisionAttributes = startTimerDecisionAttributes;
return this;
}
/**
* Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
*
* @return Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
*/
public CancelTimerDecisionAttributes getCancelTimerDecisionAttributes() {
return cancelTimerDecisionAttributes;
}
/**
* Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
*
* @param cancelTimerDecisionAttributes Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
*/
public void setCancelTimerDecisionAttributes(CancelTimerDecisionAttributes cancelTimerDecisionAttributes) {
this.cancelTimerDecisionAttributes = cancelTimerDecisionAttributes;
}
/**
* Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param cancelTimerDecisionAttributes Provides details of the <code>CancelTimer</code> decision. It is not
* set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withCancelTimerDecisionAttributes(CancelTimerDecisionAttributes cancelTimerDecisionAttributes) {
this.cancelTimerDecisionAttributes = cancelTimerDecisionAttributes;
return this;
}
/**
* Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public SignalExternalWorkflowExecutionDecisionAttributes getSignalExternalWorkflowExecutionDecisionAttributes() {
return signalExternalWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @param signalExternalWorkflowExecutionDecisionAttributes Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public void setSignalExternalWorkflowExecutionDecisionAttributes(SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes) {
this.signalExternalWorkflowExecutionDecisionAttributes = signalExternalWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param signalExternalWorkflowExecutionDecisionAttributes Provides details of the <code>SignalExternalWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withSignalExternalWorkflowExecutionDecisionAttributes(SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes) {
this.signalExternalWorkflowExecutionDecisionAttributes = signalExternalWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
*
* @return Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
*/
public RequestCancelExternalWorkflowExecutionDecisionAttributes getRequestCancelExternalWorkflowExecutionDecisionAttributes() {
return requestCancelExternalWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
*
* @param requestCancelExternalWorkflowExecutionDecisionAttributes Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
*/
public void setRequestCancelExternalWorkflowExecutionDecisionAttributes(RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes) {
this.requestCancelExternalWorkflowExecutionDecisionAttributes = requestCancelExternalWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param requestCancelExternalWorkflowExecutionDecisionAttributes Provides details of the
* <code>RequestCancelExternalWorkflowExecution</code> decision. It is
* not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withRequestCancelExternalWorkflowExecutionDecisionAttributes(RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes) {
this.requestCancelExternalWorkflowExecutionDecisionAttributes = requestCancelExternalWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public StartChildWorkflowExecutionDecisionAttributes getStartChildWorkflowExecutionDecisionAttributes() {
return startChildWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @param startChildWorkflowExecutionDecisionAttributes Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
*/
public void setStartChildWorkflowExecutionDecisionAttributes(StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes) {
this.startChildWorkflowExecutionDecisionAttributes = startChildWorkflowExecutionDecisionAttributes;
}
/**
* Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
* <p>
* Returns a reference to this object so that method calls can be chained together.
*
* @param startChildWorkflowExecutionDecisionAttributes Provides details of the <code>StartChildWorkflowExecution</code>
* decision. It is not set for other decision types.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public Decision withStartChildWorkflowExecutionDecisionAttributes(StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes) {
this.startChildWorkflowExecutionDecisionAttributes = startChildWorkflowExecutionDecisionAttributes;
return this;
}
/**
* Returns a string representation of this object; useful for testing and
* debugging.
*
* @return A string representation of this object.
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
if (getDecisionType() != null) sb.append("DecisionType: " + getDecisionType() + ",");
if (getScheduleActivityTaskDecisionAttributes() != null) sb.append("ScheduleActivityTaskDecisionAttributes: " + getScheduleActivityTaskDecisionAttributes() + ",");
if (getRequestCancelActivityTaskDecisionAttributes() != null) sb.append("RequestCancelActivityTaskDecisionAttributes: " + getRequestCancelActivityTaskDecisionAttributes() + ",");
if (getCompleteWorkflowExecutionDecisionAttributes() != null) sb.append("CompleteWorkflowExecutionDecisionAttributes: " + getCompleteWorkflowExecutionDecisionAttributes() + ",");
if (getFailWorkflowExecutionDecisionAttributes() != null) sb.append("FailWorkflowExecutionDecisionAttributes: " + getFailWorkflowExecutionDecisionAttributes() + ",");
if (getCancelWorkflowExecutionDecisionAttributes() != null) sb.append("CancelWorkflowExecutionDecisionAttributes: " + getCancelWorkflowExecutionDecisionAttributes() + ",");
if (getContinueAsNewWorkflowExecutionDecisionAttributes() != null) sb.append("ContinueAsNewWorkflowExecutionDecisionAttributes: " + getContinueAsNewWorkflowExecutionDecisionAttributes() + ",");
if (getRecordMarkerDecisionAttributes() != null) sb.append("RecordMarkerDecisionAttributes: " + getRecordMarkerDecisionAttributes() + ",");
if (getStartTimerDecisionAttributes() != null) sb.append("StartTimerDecisionAttributes: " + getStartTimerDecisionAttributes() + ",");
if (getCancelTimerDecisionAttributes() != null) sb.append("CancelTimerDecisionAttributes: " + getCancelTimerDecisionAttributes() + ",");
if (getSignalExternalWorkflowExecutionDecisionAttributes() != null) sb.append("SignalExternalWorkflowExecutionDecisionAttributes: " + getSignalExternalWorkflowExecutionDecisionAttributes() + ",");
if (getRequestCancelExternalWorkflowExecutionDecisionAttributes() != null) sb.append("RequestCancelExternalWorkflowExecutionDecisionAttributes: " + getRequestCancelExternalWorkflowExecutionDecisionAttributes() + ",");
if (getStartChildWorkflowExecutionDecisionAttributes() != null) sb.append("StartChildWorkflowExecutionDecisionAttributes: " + getStartChildWorkflowExecutionDecisionAttributes() );
sb.append("}");
return sb.toString();
}
@Override
public int hashCode() {
final int prime = 31;
int hashCode = 1;
hashCode = prime * hashCode + ((getDecisionType() == null) ? 0 : getDecisionType().hashCode());
hashCode = prime * hashCode + ((getScheduleActivityTaskDecisionAttributes() == null) ? 0 : getScheduleActivityTaskDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getRequestCancelActivityTaskDecisionAttributes() == null) ? 0 : getRequestCancelActivityTaskDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getCompleteWorkflowExecutionDecisionAttributes() == null) ? 0 : getCompleteWorkflowExecutionDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getFailWorkflowExecutionDecisionAttributes() == null) ? 0 : getFailWorkflowExecutionDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getCancelWorkflowExecutionDecisionAttributes() == null) ? 0 : getCancelWorkflowExecutionDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getContinueAsNewWorkflowExecutionDecisionAttributes() == null) ? 0 : getContinueAsNewWorkflowExecutionDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getRecordMarkerDecisionAttributes() == null) ? 0 : getRecordMarkerDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getStartTimerDecisionAttributes() == null) ? 0 : getStartTimerDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getCancelTimerDecisionAttributes() == null) ? 0 : getCancelTimerDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getSignalExternalWorkflowExecutionDecisionAttributes() == null) ? 0 : getSignalExternalWorkflowExecutionDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getRequestCancelExternalWorkflowExecutionDecisionAttributes() == null) ? 0 : getRequestCancelExternalWorkflowExecutionDecisionAttributes().hashCode());
hashCode = prime * hashCode + ((getStartChildWorkflowExecutionDecisionAttributes() == null) ? 0 : getStartChildWorkflowExecutionDecisionAttributes().hashCode());
return hashCode;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (obj instanceof Decision == false) return false;
Decision other = (Decision)obj;
if (other.getDecisionType() == null ^ this.getDecisionType() == null) return false;
if (other.getDecisionType() != null && other.getDecisionType().equals(this.getDecisionType()) == false) return false;
if (other.getScheduleActivityTaskDecisionAttributes() == null ^ this.getScheduleActivityTaskDecisionAttributes() == null) return false;
if (other.getScheduleActivityTaskDecisionAttributes() != null && other.getScheduleActivityTaskDecisionAttributes().equals(this.getScheduleActivityTaskDecisionAttributes()) == false) return false;
if (other.getRequestCancelActivityTaskDecisionAttributes() == null ^ this.getRequestCancelActivityTaskDecisionAttributes() == null) return false;
if (other.getRequestCancelActivityTaskDecisionAttributes() != null && other.getRequestCancelActivityTaskDecisionAttributes().equals(this.getRequestCancelActivityTaskDecisionAttributes()) == false) return false;
if (other.getCompleteWorkflowExecutionDecisionAttributes() == null ^ this.getCompleteWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getCompleteWorkflowExecutionDecisionAttributes() != null && other.getCompleteWorkflowExecutionDecisionAttributes().equals(this.getCompleteWorkflowExecutionDecisionAttributes()) == false) return false;
if (other.getFailWorkflowExecutionDecisionAttributes() == null ^ this.getFailWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getFailWorkflowExecutionDecisionAttributes() != null && other.getFailWorkflowExecutionDecisionAttributes().equals(this.getFailWorkflowExecutionDecisionAttributes()) == false) return false;
if (other.getCancelWorkflowExecutionDecisionAttributes() == null ^ this.getCancelWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getCancelWorkflowExecutionDecisionAttributes() != null && other.getCancelWorkflowExecutionDecisionAttributes().equals(this.getCancelWorkflowExecutionDecisionAttributes()) == false) return false;
if (other.getContinueAsNewWorkflowExecutionDecisionAttributes() == null ^ this.getContinueAsNewWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getContinueAsNewWorkflowExecutionDecisionAttributes() != null && other.getContinueAsNewWorkflowExecutionDecisionAttributes().equals(this.getContinueAsNewWorkflowExecutionDecisionAttributes()) == false) return false;
if (other.getRecordMarkerDecisionAttributes() == null ^ this.getRecordMarkerDecisionAttributes() == null) return false;
if (other.getRecordMarkerDecisionAttributes() != null && other.getRecordMarkerDecisionAttributes().equals(this.getRecordMarkerDecisionAttributes()) == false) return false;
if (other.getStartTimerDecisionAttributes() == null ^ this.getStartTimerDecisionAttributes() == null) return false;
if (other.getStartTimerDecisionAttributes() != null && other.getStartTimerDecisionAttributes().equals(this.getStartTimerDecisionAttributes()) == false) return false;
if (other.getCancelTimerDecisionAttributes() == null ^ this.getCancelTimerDecisionAttributes() == null) return false;
if (other.getCancelTimerDecisionAttributes() != null && other.getCancelTimerDecisionAttributes().equals(this.getCancelTimerDecisionAttributes()) == false) return false;
if (other.getSignalExternalWorkflowExecutionDecisionAttributes() == null ^ this.getSignalExternalWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getSignalExternalWorkflowExecutionDecisionAttributes() != null && other.getSignalExternalWorkflowExecutionDecisionAttributes().equals(this.getSignalExternalWorkflowExecutionDecisionAttributes()) == false) return false;
if (other.getRequestCancelExternalWorkflowExecutionDecisionAttributes() == null ^ this.getRequestCancelExternalWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getRequestCancelExternalWorkflowExecutionDecisionAttributes() != null && other.getRequestCancelExternalWorkflowExecutionDecisionAttributes().equals(this.getRequestCancelExternalWorkflowExecutionDecisionAttributes()) == false) return false;
if (other.getStartChildWorkflowExecutionDecisionAttributes() == null ^ this.getStartChildWorkflowExecutionDecisionAttributes() == null) return false;
if (other.getStartChildWorkflowExecutionDecisionAttributes() != null && other.getStartChildWorkflowExecutionDecisionAttributes().equals(this.getStartChildWorkflowExecutionDecisionAttributes()) == false) return false;
return true;
}
}