diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/routes/tasks_controller.py b/spiffworkflow-backend/src/spiffworkflow_backend/routes/tasks_controller.py index b2ac9fa29..2105952de 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/routes/tasks_controller.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/routes/tasks_controller.py @@ -388,9 +388,6 @@ def _render_instructions_for_end_user(task_model: TaskModel, extensions: Optiona def _interstitial_stream(process_instance: ProcessInstanceModel) -> Generator[str, Optional[str], None]: - processor = ProcessInstanceProcessor(process_instance) - reported_ids = [] # A list of all the ids reported by this endpoint so far. - def get_reportable_tasks() -> Any: return processor.bpmn_process_instance.get_tasks( TaskState.WAITING | TaskState.STARTED | TaskState.READY | TaskState.ERROR @@ -406,6 +403,9 @@ def _interstitial_stream(process_instance: ProcessInstanceModel) -> Generator[st return_hash[return_type] = entity return f"data: {current_app.json.dumps(return_hash)} \n\n" + + processor = ProcessInstanceProcessor(process_instance) + reported_ids = [] # A list of all the ids reported by this endpoint so far. tasks = get_reportable_tasks() while True: for spiff_task in tasks: @@ -428,7 +428,7 @@ def _interstitial_stream(process_instance: ProcessInstanceModel) -> Generator[st # do not do any processing if the instance is not currently active if process_instance.status not in ProcessInstanceModel.active_statuses(): yield render_data("unrunnable_instance", process_instance) - break + return try: processor.do_engine_steps(execution_strategy_name="one_at_a_time") processor.do_engine_steps(execution_strategy_name="run_until_user_message") diff --git a/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx b/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx index a7f70e6dc..8297c3557 100644 --- a/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx +++ b/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx @@ -1597,22 +1597,26 @@ export default function ProcessInstanceListTable({ } let buttonText = 'View'; - let buttonKind = 'ghost'; - if ( - processInstance.status !== 'suspended' && - hasAccessToCompleteTask && - processInstance.task_id - ) { + if (hasAccessToCompleteTask && processInstance.task_id) { buttonText = 'Go'; - buttonKind = 'secondary'; } buttonElement = ( - ); - currentRow.push({buttonElement}); + + if ( + processInstance.status === 'not_started' || + processInstance.status === 'user_input_required' || + processInstance.status === 'waiting' || + processInstance.status === 'complete' + ) { + currentRow.push({buttonElement}); + } else { + currentRow.push(); + } } const rowStyle = { cursor: 'pointer' };