39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
"""Get the bpmn process json for a given process instance id and store it in /tmp."""
|
|
import os
|
|
import sys
|
|
|
|
from spiffworkflow_backend import create_app
|
|
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
|
|
|
|
|
def main(process_instance_id: str):
|
|
"""Main."""
|
|
os.environ["SPIFFWORKFLOW_BACKEND_ENV"] = "development"
|
|
if os.environ.get("BPMN_SPEC_ABSOLUTE_DIR") is None:
|
|
os.environ["BPMN_SPEC_ABSOLUTE_DIR"] = "hey"
|
|
flask_env_key = "FLASK_SESSION_SECRET_KEY"
|
|
os.environ[flask_env_key] = "whatevs"
|
|
app = create_app()
|
|
with app.app_context():
|
|
process_instance = ProcessInstanceModel.query.filter_by(
|
|
id=process_instance_id
|
|
).first()
|
|
|
|
file_path = f"/tmp/{process_instance_id}_bpmn_json.json"
|
|
if not process_instance:
|
|
raise Exception(
|
|
f"Could not find a process instance with id: {process_instance_id}"
|
|
)
|
|
|
|
with open(
|
|
file_path, "w", encoding="utf-8"
|
|
) as f:
|
|
f.write(process_instance.bpmn_json)
|
|
print(f"Saved to {file_path}")
|
|
|
|
|
|
if len(sys.argv) < 2:
|
|
raise Exception("Process instance id not supplied")
|
|
|
|
main(sys.argv[1])
|