diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/exceptions/api_error.py b/spiffworkflow-backend/src/spiffworkflow_backend/exceptions/api_error.py index 39ab1335..ca8c5125 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/exceptions/api_error.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/exceptions/api_error.py @@ -149,7 +149,7 @@ class ApiError(Exception): # Note that WorkflowDataExceptions are also WorkflowTaskExceptions return ApiError.from_task( error_code, - message, + message + ". " + str(exp), exp.task, line_number=exp.line_number, offset=exp.offset, diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py index 99168ec3..c97c4860 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/message_instance.py @@ -6,6 +6,7 @@ from typing import Optional from typing import TYPE_CHECKING from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine # type: ignore +from flask import current_app from sqlalchemy import ForeignKey from sqlalchemy.event import listens_for from sqlalchemy.orm import relationship @@ -135,10 +136,15 @@ class MessageInstanceModel(SpiffworkflowBaseDBModel): result = expression_engine._evaluate( correlation_key.retrieval_expression, payload ) - except Exception: + except Exception as e: # the failure of a payload evaluation may not mean that matches for these # message instances can't happen with other messages. So don't error up. # fixme: Perhaps log some sort of error. + current_app.logger.warning( + "Error evaluating correlation key when comparing send and receive messages." + + f"Expression {correlation_key.retrieval_expression} failed with the error " + + str(e) + ) return False if result != expected_value: return False 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 8cd663af..6e1e43eb 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py @@ -318,19 +318,15 @@ class CustomBpmnScriptEngine(PythonScriptEngine): # type: ignore def __get_augment_methods(self, task: Optional[SpiffTask]) -> Dict[str, Callable]: """__get_augment_methods.""" - tld = current_app.config["THREAD_LOCAL_DATA"] - + tld = current_app.config.get("THREAD_LOCAL_DATA") if not hasattr(tld, "process_model_identifier"): - raise MissingProcessInfoError( - "Could not find process_model_identifier from app config" - ) + process_model_identifier = None + else: + process_model_identifier = tld.process_model_identifier if not hasattr(tld, "process_instance_id"): - raise MissingProcessInfoError( - "Could not find process_instance_id from app config" - ) - - process_model_identifier = tld.process_model_identifier - process_instance_id = tld.process_instance_id + process_instance_id = None + else: + process_instance_id = tld.process_instance_id script_attributes_context = ScriptAttributesContext( task=task, environment_identifier=current_app.config["ENV_IDENTIFIER"],