diff --git a/src/spiffworkflow_backend/models/process_instance.py b/src/spiffworkflow_backend/models/process_instance.py index 7d6b6002..9666e69e 100644 --- a/src/spiffworkflow_backend/models/process_instance.py +++ b/src/spiffworkflow_backend/models/process_instance.py @@ -107,6 +107,30 @@ class ProcessInstanceModel(SpiffworkflowBaseDBModel): } +class ProcessInstanceModelSchema(Schema): + + class Meta: + model = ProcessInstanceModel + fields = [ + "id", + "process_model_identifier", + "process_group_identifier", + "process_initiator_id", + # "process_initiator", + "bpmn_json", + "start_in_seconds", + "end_in_seconds", + "updated_at_in_seconds", + "created_at_in_seconds", + "status" + ] + + status = marshmallow.fields.Method('get_status', dump_only=True) + + def get_status(self, obj): + return obj.status.value + + class ProcessInstanceApi: """ProcessInstanceApi.""" diff --git a/src/spiffworkflow_backend/routes/process_api_blueprint.py b/src/spiffworkflow_backend/routes/process_api_blueprint.py index 6abffc85..9cac6b7d 100644 --- a/src/spiffworkflow_backend/routes/process_api_blueprint.py +++ b/src/spiffworkflow_backend/routes/process_api_blueprint.py @@ -23,7 +23,7 @@ from spiffworkflow_backend.models.file import FileType from spiffworkflow_backend.models.principal import PrincipalModel from spiffworkflow_backend.models.process_group import ProcessGroupSchema from spiffworkflow_backend.models.process_instance import ProcessInstanceApiSchema -from spiffworkflow_backend.models.process_instance import ProcessInstanceModel +from spiffworkflow_backend.models.process_instance import ProcessInstanceModel, ProcessInstanceModelSchema from spiffworkflow_backend.models.process_model import ProcessModelInfoSchema from spiffworkflow_backend.services.error_handling_service import ErrorHandlingService from spiffworkflow_backend.services.process_instance_processor import ( @@ -262,6 +262,21 @@ def process_instance_create( process_instance = ProcessInstanceService.create_process_instance( process_model_id, g.user, process_group_identifier=process_group_id ) + return Response( + json.dumps(ProcessInstanceModelSchema().dump(process_instance)), + status=201, + mimetype="application/json" + ) + + +def process_instance_run( + process_group_id: str, + process_model_id: str, + process_instance_id: str, + do_engine_steps: bool = None + +) -> flask.wrappers.Response: + process_instance = ProcessInstanceService().get_process_instance(process_instance_id) processor = ProcessInstanceProcessor(process_instance) try: @@ -281,15 +296,6 @@ def process_instance_create( json.dumps(process_instance_metadata), status=201, mimetype="application/json" ) -def process_instance_run( - process_group_id: str, - process_model_id: str, - process_instance_id: str, - do_engine_steps: bool - -) -> flask.wrappers.Response: - ... - def process_instance_list( process_group_id: str, diff --git a/src/spiffworkflow_backend/services/process_instance_service.py b/src/spiffworkflow_backend/services/process_instance_service.py index cd746526..d6a4dc24 100644 --- a/src/spiffworkflow_backend/services/process_instance_service.py +++ b/src/spiffworkflow_backend/services/process_instance_service.py @@ -125,3 +125,7 @@ class ProcessInstanceService: return {} else: return {} + + def get_process_instance(self, process_instance_id): + result = db.session.query(ProcessInstanceModel).filter(ProcessInstanceModel.id == process_instance_id).first() + return result