Skip to content

Commit 2de1d39

Browse files
authored
feature/pending decision tasks (#285)
* bump IDL * adding decisions tab to list of filters. added pending decision to available pending tasks * fixing integration test with cadence server API IDL update
1 parent 7e738ad commit 2de1d39

File tree

8 files changed

+63
-17
lines changed

8 files changed

+63
-17
lines changed

client/containers/workflow-pending/component.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,16 @@
2222
2323
import { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller';
2424
import { PendingTaskListItem } from './components';
25+
import { PENDING_TASK_FILTERS } from './constants';
2526
import { ButtonGroup, NoResults } from '~components';
2627
2728
export default {
2829
name: 'workflow-pending',
30+
data() {
31+
return {
32+
pendingTaskFilters: PENDING_TASK_FILTERS,
33+
};
34+
},
2935
props: {
3036
filter: {
3137
type: String,
@@ -58,7 +64,7 @@ export default {
5864
<div class="workflow-pending">
5965
<div class="top-navigation">
6066
<button-group
61-
:items="['all', 'activities', 'children']"
67+
:items="pendingTaskFilters"
6268
label="Filters"
6369
uppercase
6470
:value="filter"

client/containers/workflow-pending/constants.js

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,39 @@
2222
import {
2323
PENDING_TASK_TYPE_ACTIVITY,
2424
PENDING_TASK_TYPE_CHILD_WORKFLOW,
25+
PENDING_TASK_TYPE_DECISION,
2526
} from '../workflow/constants';
27+
import {
28+
WORKFLOW_EXECUTION_PENDING_ACTIVITIES,
29+
WORKFLOW_EXECUTION_PENDING_CHILDREN,
30+
WORKFLOW_EXECUTION_PENDING_TASKS,
31+
WORKFLOW_EXECUTION_PENDING_DECISIONS,
32+
} from '../workflow/getter-types';
33+
34+
export const PENDING_TASK_FILTER_ALL = 'all';
35+
export const PENDING_TASK_FILTER_ACTIVITIES = 'activities';
36+
export const PENDING_TASK_FILTER_CHILDREN = 'children';
37+
export const PENDING_TASK_FILTER_DECISIONS = 'decisions';
38+
39+
export const PENDING_TASK_FILTERS = [
40+
PENDING_TASK_FILTER_ALL,
41+
PENDING_TASK_FILTER_ACTIVITIES,
42+
PENDING_TASK_FILTER_CHILDREN,
43+
PENDING_TASK_FILTER_DECISIONS,
44+
];
2645

2746
export const PENDING_TASK_FILTER_TO_EMPTY_MESSAGE_MAP = {
28-
all: 'No pending tasks',
29-
activities: 'No pending activities',
30-
children: 'No pending child workflows',
47+
[PENDING_TASK_FILTER_ALL]: 'No pending tasks',
48+
[PENDING_TASK_FILTER_ACTIVITIES]: 'No pending activities',
49+
[PENDING_TASK_FILTER_CHILDREN]: 'No pending child workflows',
50+
[PENDING_TASK_FILTER_DECISIONS]: 'No pending decisions',
51+
};
52+
53+
export const PENDING_TASK_FILTER_TO_GETTER_TYPE_MAP = {
54+
[PENDING_TASK_FILTER_ALL]: WORKFLOW_EXECUTION_PENDING_TASKS,
55+
[PENDING_TASK_FILTER_ACTIVITIES]: WORKFLOW_EXECUTION_PENDING_ACTIVITIES,
56+
[PENDING_TASK_FILTER_CHILDREN]: WORKFLOW_EXECUTION_PENDING_CHILDREN,
57+
[PENDING_TASK_FILTER_DECISIONS]: WORKFLOW_EXECUTION_PENDING_DECISIONS,
3158
};
3259

3360
export const PENDING_TASK_KVPS_EXCLUDE_KEYS = [
@@ -39,9 +66,11 @@ export const PENDING_TASK_KVPS_EXCLUDE_KEYS = [
3966
export const PENDING_TASK_TYPE_TO_ID_MAP = {
4067
[PENDING_TASK_TYPE_ACTIVITY]: 'activityID',
4168
[PENDING_TASK_TYPE_CHILD_WORKFLOW]: 'initiatedID',
69+
[PENDING_TASK_TYPE_DECISION]: 'scheduledTimestamp',
4270
};
4371

4472
export const PENDING_TASK_TYPE_TO_DISPLAY_MAP = {
4573
[PENDING_TASK_TYPE_ACTIVITY]: 'PendingActivityTask',
4674
[PENDING_TASK_TYPE_CHILD_WORKFLOW]: 'PendingChildWorkflowTask',
75+
[PENDING_TASK_TYPE_DECISION]: 'PendingDecisionTask',
4776
};

client/containers/workflow-pending/helpers/map-filter-to-getter-type.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,9 @@
1919
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2020
// THE SOFTWARE.
2121

22-
import {
23-
WORKFLOW_EXECUTION_PENDING_ACTIVITIES,
24-
WORKFLOW_EXECUTION_PENDING_CHILDREN,
25-
WORKFLOW_EXECUTION_PENDING_TASKS,
26-
} from '../../workflow/getter-types';
27-
28-
const WORKFLOW_PENDING_FILTER_TO_GETTER_TYPE_MAP = {
29-
activities: WORKFLOW_EXECUTION_PENDING_ACTIVITIES,
30-
all: WORKFLOW_EXECUTION_PENDING_TASKS,
31-
children: WORKFLOW_EXECUTION_PENDING_CHILDREN,
32-
};
22+
import { PENDING_TASK_FILTER_TO_GETTER_TYPE_MAP } from '../constants';
3323

3424
const mapFilterToGetterType = filter =>
35-
WORKFLOW_PENDING_FILTER_TO_GETTER_TYPE_MAP[filter] || '';
25+
PENDING_TASK_FILTER_TO_GETTER_TYPE_MAP[filter] || '';
3626

3727
export default mapFilterToGetterType;

client/containers/workflow/constants.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@
2222
export const PENDING_TASK_TYPE_ACTIVITY = 'PENDING_TASK_TYPE_ACTIVITY';
2323
export const PENDING_TASK_TYPE_CHILD_WORKFLOW =
2424
'PENDING_TASK_TYPE_CHILD_WORKFLOW';
25+
export const PENDING_TASK_TYPE_DECISION = 'PENDING_TASK_TYPE_DECISION';
2526
export const RETRY_COUNT_MAX = 3;
2627
export const RETRY_TIMEOUT = 6000;

client/containers/workflow/getter-types.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ export const WORKFLOW_EXECUTION_PENDING_ACTIVITIES =
2525
'WORKFLOW_EXECUTION_PENDING_ACTIVITIES';
2626
export const WORKFLOW_EXECUTION_PENDING_CHILDREN =
2727
'WORKFLOW_EXECUTION_PENDING_CHILDREN';
28+
export const WORKFLOW_EXECUTION_PENDING_DECISIONS =
29+
'WORKFLOW_EXECUTION_PENDING_DECISIONS';
2830
export const WORKFLOW_EXECUTION_PENDING_TASK_COUNT =
2931
'WORKFLOW_EXECUTION_PENDING_TASK_COUNT';
3032
export const WORKFLOW_EXECUTION_PENDING_TASKS =

client/containers/workflow/getters.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ import { get } from 'lodash-es';
2323
import {
2424
PENDING_TASK_TYPE_ACTIVITY,
2525
PENDING_TASK_TYPE_CHILD_WORKFLOW,
26+
PENDING_TASK_TYPE_DECISION,
2627
} from './constants';
2728
import {
2829
WORKFLOW_EXECUTION,
2930
WORKFLOW_EXECUTION_IS_LOADING,
3031
WORKFLOW_EXECUTION_PENDING_ACTIVITIES,
3132
WORKFLOW_EXECUTION_PENDING_CHILDREN,
33+
WORKFLOW_EXECUTION_PENDING_DECISIONS,
3234
WORKFLOW_EXECUTION_PENDING_TASK_COUNT,
3335
WORKFLOW_EXECUTION_PENDING_TASKS,
3436
WORKFLOW_EXECUTION_TASK_LIST_NAME,
@@ -48,11 +50,26 @@ const getters = {
4850
...item,
4951
pendingTaskType: PENDING_TASK_TYPE_CHILD_WORKFLOW,
5052
})),
53+
[WORKFLOW_EXECUTION_PENDING_DECISIONS]: state => {
54+
const pendingDecision = get(state, 'workflow.execution.pendingDecision');
55+
56+
if (!pendingDecision) {
57+
return [];
58+
}
59+
60+
return [
61+
{
62+
...pendingDecision,
63+
pendingTaskType: PENDING_TASK_TYPE_DECISION,
64+
},
65+
];
66+
},
5167
[WORKFLOW_EXECUTION_PENDING_TASK_COUNT]: (_, getters) =>
5268
getters[WORKFLOW_EXECUTION_PENDING_TASKS].length,
5369
[WORKFLOW_EXECUTION_PENDING_TASKS]: (_, getters) => [
5470
...getters[WORKFLOW_EXECUTION_PENDING_ACTIVITIES],
5571
...getters[WORKFLOW_EXECUTION_PENDING_CHILDREN],
72+
...getters[WORKFLOW_EXECUTION_PENDING_DECISIONS],
5673
],
5774
[WORKFLOW_EXECUTION_TASK_LIST_NAME]: state =>
5875
get(state, 'workflow.execution.executionConfiguration.taskList.name') || '',

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
"webpack-hot-client": "^1.3.0"
129129
},
130130
"napa": {
131-
"cadence-idl": "uber/cadence-idl#87b3154c204df27e6055a5a1cf840973b627877f"
131+
"cadence-idl": "uber/cadence-idl#b1a9b9ede5fbd29a5b67cb8e082f602488ce0446"
132132
},
133133
"napa-config": {
134134
"cache": false

server/test/workflow-execution.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ describe('Workflow Execution', function() {
4646
workflowExecutionInfo: null,
4747
pendingChildren: null,
4848
pendingActivities: null,
49+
pendingDecision: null,
4950
});
5051
});
5152

0 commit comments

Comments
 (0)