diff --git a/.github/workflows/docker_image_for_main_builds.yml b/.github/workflows/docker_image_for_main_builds.yml index 6e91df6b..7a722932 100644 --- a/.github/workflows/docker_image_for_main_builds.yml +++ b/.github/workflows/docker_image_for_main_builds.yml @@ -32,7 +32,7 @@ on: branches: - main - spiffdemo - - feature/drop-id-column-on-json-data + - feature/no-data-for-finished-spiff-tasks jobs: create_frontend_docker_image: diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py index 7efe7876..b42d9eef 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py @@ -647,8 +647,10 @@ class ProcessInstanceProcessor: bpmn_subprocess_id_to_guid_mappings: dict | None = None, ) -> None: json_data_hashes = set() + states_to_not_rehydrate_data = ["COMPLETED", "CANCELLED", "ERROR"] for task in tasks: - json_data_hashes.add(task.json_data_hash) + if task.state not in states_to_not_rehydrate_data: + json_data_hashes.add(task.json_data_hash) json_data_records = JsonDataModel.query.filter(JsonDataModel.hash.in_(json_data_hashes)).all() # type: ignore json_data_mappings = {} for json_data_record in json_data_records: @@ -659,7 +661,10 @@ class ProcessInstanceProcessor: bpmn_subprocess_guid = bpmn_subprocess_id_to_guid_mappings[task.bpmn_process_id] tasks_dict = spiff_bpmn_process_dict["subprocesses"][bpmn_subprocess_guid]["tasks"] tasks_dict[task.guid] = task.properties_json - tasks_dict[task.guid]["data"] = json_data_mappings[task.json_data_hash] + task_data = {} + if task.state not in states_to_not_rehydrate_data: + task_data = json_data_mappings[task.json_data_hash] + tasks_dict[task.guid]["data"] = task_data @classmethod def _get_full_bpmn_process_dict( 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 08dc2617..eae7fa60 100644 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_process_api.py +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_process_api.py @@ -9,7 +9,6 @@ from typing import Any import pytest from flask.app import Flask from flask.testing import FlaskClient -from SpiffWorkflow.util.task import TaskState # type: ignore from spiffworkflow_backend.exceptions.process_entity_not_found_error import ProcessEntityNotFoundError from spiffworkflow_backend.models.db import db from spiffworkflow_backend.models.process_group import ProcessGroup @@ -2117,8 +2116,10 @@ class TestProcessApi(BaseTest): processor = ProcessInstanceProcessor(process_instance) spiff_task = processor.get_task_by_bpmn_identifier("script_task_two", processor.bpmn_process_instance) assert spiff_task is not None - assert spiff_task.state == TaskState.ERROR - assert spiff_task.data == {"my_var": "THE VAR"} + task_model = TaskModel.query.filter_by(guid=str(spiff_task.id)).first() + assert task_model is not None + assert task_model.state == "ERROR" + assert task_model.get_data() == {"my_var": "THE VAR"} def test_process_model_file_create( self, diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py index 7eff1739..f5502157 100644 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py @@ -876,8 +876,10 @@ class TestProcessInstanceProcessor(BaseTest): "script_task_two", processor_final.bpmn_process_instance ) assert spiff_task is not None - assert spiff_task.state == TaskState.ERROR - assert spiff_task.data == {"my_var": "THE VAR"} + task_model = TaskModel.query.filter_by(guid=str(spiff_task.id)).first() + assert task_model is not None + assert task_model.state == "ERROR" + assert task_model.get_data() == {"my_var": "THE VAR"} process_instance_events = process_instance.process_instance_events assert len(process_instance_events) == 4