From 81ef2c73002264e0d10dd797dd4dfe3738165654 Mon Sep 17 00:00:00 2001 From: jasquat Date: Fri, 24 Feb 2023 09:21:21 -0500 Subject: [PATCH] avoid using task-data endpoint for task data and only use it to get tasks based on spiff step instead --- .../src/spiffworkflow_backend/api.yml | 41 ------------------- .../routes/process_instances_controller.py | 39 ------------------ .../integration/test_process_api.py | 4 +- .../src/routes/TaskShow.tsx | 6 +-- 4 files changed, 5 insertions(+), 85 deletions(-) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/api.yml b/spiffworkflow-backend/src/spiffworkflow_backend/api.yml index d472d814..b9b7a9e3 100755 --- a/spiffworkflow-backend/src/spiffworkflow_backend/api.yml +++ b/spiffworkflow-backend/src/spiffworkflow_backend/api.yml @@ -1518,47 +1518,6 @@ paths: items: $ref: "#/components/schemas/Task" - /task-data/{modified_process_model_identifier}/{process_instance_id}: - parameters: - - name: modified_process_model_identifier - in: path - required: true - description: The modified id of an existing process model - schema: - type: string - - name: process_instance_id - in: path - required: true - description: The unique id of an existing process instance. - schema: - type: integer - - name: all_tasks - in: query - required: false - description: If true, this wil return all tasks associated with the process instance and not just user tasks. - schema: - type: boolean - - name: spiff_step - in: query - required: false - description: If set will return the tasks as they were during a specific step of execution. - schema: - type: integer - get: - tags: - - Process Instances - operationId: spiffworkflow_backend.routes.process_instances_controller.process_instance_task_list_with_task_data - summary: returns the list of all user tasks associated with process instance with the task data - responses: - "200": - description: list of tasks - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/Task" - /task-data/{modified_process_model_identifier}/{process_instance_id}/{spiff_step}: parameters: - name: modified_process_model_identifier diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instances_controller.py b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instances_controller.py index 6f2a57af..6234c645 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instances_controller.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instances_controller.py @@ -514,7 +514,6 @@ def process_instance_task_list_without_task_data_for_me( process_instance, all_tasks, spiff_step, - get_task_data=False, ) @@ -531,24 +530,6 @@ def process_instance_task_list_without_task_data( process_instance, all_tasks, spiff_step, - get_task_data=False, - ) - - -def process_instance_task_list_with_task_data( - modified_process_model_identifier: str, - process_instance_id: int, - all_tasks: bool = False, - spiff_step: int = 0, -) -> flask.wrappers.Response: - """Process_instance_task_list_with_task_data.""" - process_instance = _find_process_instance_by_id_or_raise(process_instance_id) - return process_instance_task_list( - modified_process_model_identifier, - process_instance, - all_tasks, - spiff_step, - get_task_data=True, ) @@ -557,7 +538,6 @@ def process_instance_task_list( process_instance: ProcessInstanceModel, all_tasks: bool = False, spiff_step: int = 0, - get_task_data: bool = False, ) -> flask.wrappers.Response: """Process_instance_task_list.""" step_detail_query = db.session.query(SpiffStepDetailsModel).filter( @@ -576,32 +556,15 @@ def process_instance_task_list( steps_by_id = {step_detail.task_id: step_detail for step_detail in step_details} - # FIXME: never evaluate task data in this call and instead create a new api getter - # that will return the task data for a given step only. We think processing this - # data is what is causing long load times on the processInstanceShowPage. - # TaskShow still uses this to get the data for the tabs. We need to update that as well. subprocess_state_overrides = {} for step_detail in step_details: if step_detail.task_id in tasks: - task_data = ( - step_detail.task_json["task_data"] | step_detail.task_json["python_env"] - ) - if task_data is None: - task_data = {} - tasks[step_detail.task_id]["data"] = task_data tasks[step_detail.task_id]["state"] = Task.task_state_name_to_int( step_detail.task_state ) else: for subprocess_id, subprocess_info in subprocesses.items(): if step_detail.task_id in subprocess_info["tasks"]: - task_data = ( - step_detail.task_json["task_data"] - | step_detail.task_json["python_env"] - ) - if task_data is None: - task_data = {} - subprocess_info["tasks"][step_detail.task_id]["data"] = task_data subprocess_info["tasks"][step_detail.task_id]["state"] = ( Task.task_state_name_to_int(step_detail.task_state) ) @@ -658,8 +621,6 @@ def process_instance_task_list( calling_subprocess_task_id=calling_subprocess_task_id, task_spiff_step=task_spiff_step, ) - if get_task_data: - task.data = spiff_task.data tasks.append(task) return make_response(jsonify(tasks), 200) diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_process_api.py b/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_process_api.py index 95d42304..98864a8d 100644 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_process_api.py +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_process_api.py @@ -2762,7 +2762,7 @@ class TestProcessApi(BaseTest): assert response.json["status"] == "complete" response = client.get( - f"/v1.0/task-data/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}?all_tasks=true", + f"/v1.0/process-instances/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}/task-info?all_tasks=true", headers=self.logged_in_headers(with_super_admin_user), ) assert response.status_code == 200 @@ -2834,7 +2834,7 @@ class TestProcessApi(BaseTest): ) response = client.get( - f"/v1.0/task-data/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}", + f"/v1.0/process-instances/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}/task-info", headers=self.logged_in_headers(with_super_admin_user), ) assert len(response.json) == 1 diff --git a/spiffworkflow-frontend/src/routes/TaskShow.tsx b/spiffworkflow-frontend/src/routes/TaskShow.tsx index 35ad48d4..56813225 100644 --- a/spiffworkflow-frontend/src/routes/TaskShow.tsx +++ b/spiffworkflow-frontend/src/routes/TaskShow.tsx @@ -32,10 +32,10 @@ export default function TaskShow() { useEffect(() => { const processResult = (result: ProcessInstanceTask) => { setTask(result); - const url = `/task-data/${modifyProcessIdentifierForPathParam( + const url = `/v1.0/process-instances/for-me/${modifyProcessIdentifierForPathParam( result.process_model_identifier - )}/${params.process_instance_id}`; - // if user is unauthorized to get task-data then don't do anything + )}/${params.process_instance_id}/task-info`; + // if user is unauthorized to get process-instance task-info then don't do anything // Checking like this so we can dynamically create the url with the correct process model // instead of passing the process model identifier in through the params HttpService.makeCallToBackend({