diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instance_events_controller.py b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instance_events_controller.py index c72c72f2..1e45fbdb 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instance_events_controller.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_instance_events_controller.py @@ -1,3 +1,5 @@ +from operator import or_ + import flask.wrappers from flask import jsonify from flask import make_response @@ -38,10 +40,22 @@ def log_list( ) ) if not events: + # NOTE: we could also consider a "is_milestone" column on the process_instance_event table, + # populating this value in task_service, and move setting the last_milestone on process instances + # to the same location in task_service log_query = log_query.filter( and_( TaskModel.state.in_(["COMPLETED"]), # type: ignore - TaskDefinitionModel.typename.in_(["IntermediateThrowEvent"]), # type: ignore + or_( + TaskDefinitionModel.typename.in_(["IntermediateThrowEvent"]), # type: ignore + and_( + TaskDefinitionModel.typename.in_(["StartEvent", "EndEvent"]), # type: ignore + or_( + TaskDefinitionModel.bpmn_name.is_not(None), # type: ignore + BpmnProcessDefinitionModel.full_process_model_hash.is_not(None), # type: ignore + ), + ), + ), ) ) diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_logging_service.py b/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_logging_service.py index 04874d51..7cfbbaaa 100644 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_logging_service.py +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/integration/test_logging_service.py @@ -116,8 +116,8 @@ class TestLoggingService(BaseTest): assert log_response.status_code == 200 assert log_response.json logs: list = log_response.json["results"] - assert len(logs) == 2 + assert len(logs) == 4 for log in logs: assert log["process_instance_id"] == process_instance.id - assert log["bpmn_task_type"] == "IntermediateThrowEvent" + assert log["bpmn_task_type"] in ["StartEvent", "EndEvent", "IntermediateThrowEvent"] diff --git a/spiffworkflow-frontend/src/components/ProcessInstanceLogList.tsx b/spiffworkflow-frontend/src/components/ProcessInstanceLogList.tsx index fd10c734..87785a9b 100644 --- a/spiffworkflow-frontend/src/components/ProcessInstanceLogList.tsx +++ b/spiffworkflow-frontend/src/components/ProcessInstanceLogList.tsx @@ -259,7 +259,15 @@ export default function ProcessInstanceLogList({ const getTableRow = (logEntry: ProcessInstanceLogEntry) => { const tableRow = []; - const taskNameCell = {logEntry.task_definition_name}; + let taskName = logEntry.task_definition_name; + if (!taskName && !isEventsView) { + if (logEntry.bpmn_task_type === 'StartEvent') { + taskName = 'Started'; + } else if (logEntry.bpmn_task_type === 'EndEvent') { + taskName = 'Completed'; + } + } + const taskNameCell = {taskName}; const bpmnProcessCell = ( {logEntry.bpmn_process_definition_name ||