diff --git a/src/lib/stores/search-attributes.ts b/src/lib/stores/search-attributes.ts index a7939e1f01..bca113c7e9 100644 --- a/src/lib/stores/search-attributes.ts +++ b/src/lib/stores/search-attributes.ts @@ -24,6 +24,7 @@ export const searchAttributes: Readable = derived( ([$allSearchAttributes]) => ({ ...$allSearchAttributes.customAttributes, ...$allSearchAttributes.systemAttributes, + ActivityId: SEARCH_ATTRIBUTE_TYPE.KEYWORD, }), ); @@ -172,6 +173,7 @@ export const sortedSearchAttributeOptions: Readable = 'WorkflowId', 'WorkflowType', 'RunId', + 'ActivityId', 'StartTime', 'CloseTime', ]; diff --git a/src/lib/types/workflows.ts b/src/lib/types/workflows.ts index 00d8adb306..fccc6fa51c 100644 --- a/src/lib/types/workflows.ts +++ b/src/lib/types/workflows.ts @@ -118,6 +118,7 @@ export type FilterParameters = { executionStatus?: WorkflowStatus; timeRange?: Duration | string; query?: string; + activityId?: string; }; export type ArchiveFilterParameters = Omit & { diff --git a/src/lib/utilities/query/filter-workflow-query.ts b/src/lib/utilities/query/filter-workflow-query.ts index a991d07ea1..db5bbc22ad 100644 --- a/src/lib/utilities/query/filter-workflow-query.ts +++ b/src/lib/utilities/query/filter-workflow-query.ts @@ -18,7 +18,8 @@ export type QueryKey = | 'CloseTime' | 'ExecutionTime' | 'ExecutionStatus' - | 'RunId'; + | 'RunId' + | 'ActivityId'; type FilterValue = string | Duration; @@ -29,6 +30,7 @@ const filterKeys: Readonly> = { executionStatus: 'ExecutionStatus', closeTime: 'CloseTime', runId: 'RunId', + activityId: 'ActivityId', } as const; const isValid = (value: unknown, conditional: string): boolean => { diff --git a/src/lib/utilities/query/list-workflow-query.ts b/src/lib/utilities/query/list-workflow-query.ts index 5d13278c34..92f09c0187 100644 --- a/src/lib/utilities/query/list-workflow-query.ts +++ b/src/lib/utilities/query/list-workflow-query.ts @@ -14,14 +14,16 @@ export type QueryKey = | 'StartTime' | 'CloseTime' | 'ExecutionTime' - | 'ExecutionStatus'; + | 'ExecutionStatus' + | 'ActivityId'; export type FilterKey = | 'workflowId' | 'workflowType' | 'timeRange' | 'executionStatus' - | 'closeTime'; + | 'closeTime' + | 'activityId'; type FilterValue = string | Duration; @@ -31,6 +33,7 @@ const queryKeys: Readonly> = { timeRange: 'StartTime', executionStatus: 'ExecutionStatus', closeTime: 'CloseTime', + activityId: 'ActivityId', } as const; const filterKeys: readonly FilterKey[] = [ @@ -39,6 +42,7 @@ const filterKeys: readonly FilterKey[] = [ 'timeRange', 'executionStatus', 'closeTime', + 'activityId', ] as const; const isValid = (value: unknown): boolean => { diff --git a/src/lib/utilities/query/to-list-workflow-filters.ts b/src/lib/utilities/query/to-list-workflow-filters.ts index 955612f156..f3e6605cc9 100644 --- a/src/lib/utilities/query/to-list-workflow-filters.ts +++ b/src/lib/utilities/query/to-list-workflow-filters.ts @@ -79,6 +79,7 @@ const DefaultAttributes: SearchAttributes = { WorkflowId: SEARCH_ATTRIBUTE_TYPE.KEYWORD, WorkflowType: SEARCH_ATTRIBUTE_TYPE.KEYWORD, RunId: SEARCH_ATTRIBUTE_TYPE.KEYWORD, + ActivityId: SEARCH_ATTRIBUTE_TYPE.KEYWORD, }; export const toListWorkflowFilters = ( diff --git a/src/lib/utilities/query/to-list-workflow-parameters.test.ts b/src/lib/utilities/query/to-list-workflow-parameters.test.ts index 20f089d751..799b5444f3 100644 --- a/src/lib/utilities/query/to-list-workflow-parameters.test.ts +++ b/src/lib/utilities/query/to-list-workflow-parameters.test.ts @@ -17,7 +17,8 @@ const defaultParameters = { workflowId: '', workflowType: '', executionStatus: null, - timeRange: null, + timeRange: undefined, + activityId: '', }; describe('toListWorkflowParameters', () => { diff --git a/src/lib/utilities/query/to-list-workflow-parameters.ts b/src/lib/utilities/query/to-list-workflow-parameters.ts index 8c4bc44a90..a0a66002da 100644 --- a/src/lib/utilities/query/to-list-workflow-parameters.ts +++ b/src/lib/utilities/query/to-list-workflow-parameters.ts @@ -32,6 +32,7 @@ const isWorkflowTypeStatement = is('WorkflowType'); const isWorkflowIdStatement = is('WorkflowId'); const isStartTimeStatement = is('StartTime'); const isExecutionStatusStatement = is('ExecutionStatus'); +const isActivityIdStatement = is('ActivityId'); export const toListWorkflowParameters = (query: string): ParsedParameters => { const tokens = tokenize(query); @@ -39,7 +40,8 @@ export const toListWorkflowParameters = (query: string): ParsedParameters => { workflowId: '', workflowType: '', executionStatus: null, - timeRange: null, + timeRange: undefined, + activityId: '', }; tokens.forEach((token, index) => { @@ -66,6 +68,9 @@ export const toListWorkflowParameters = (query: string): ParsedParameters => { console.error('Error parsing StartTime from query', error); } } + + if (isActivityIdStatement(token)) + parameters.activityId = getTwoAhead(tokens, index); }); return parameters;