initial changes to remove loop reset with spiff w/ burnettk
This commit is contained in:
parent
d45b9d1ff5
commit
65aeca98bc
|
@ -1854,8 +1854,8 @@ lxml = "*"
|
||||||
[package.source]
|
[package.source]
|
||||||
type = "git"
|
type = "git"
|
||||||
url = "https://github.com/sartography/SpiffWorkflow"
|
url = "https://github.com/sartography/SpiffWorkflow"
|
||||||
reference = "main"
|
reference = "feature/remove-loop-reset"
|
||||||
resolved_reference = "bee868d38b2c3da680c7a96b6a634d16b90d5861"
|
resolved_reference = "13034aaf12f62aa3914744ca05bc9a3e3b3c3452"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "SQLAlchemy"
|
name = "SQLAlchemy"
|
||||||
|
@ -2234,7 +2234,7 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools"
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = ">=3.9,<3.12"
|
python-versions = ">=3.9,<3.12"
|
||||||
content-hash = "2fd5138221eabec441b601bb3769be478bed42099e72e20f7b8aaa1c1a888909"
|
content-hash = "eac3b5aa78efea376a9e23e32f9e6853cc22c17a2a21b41e30800cb7c807d017"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
alabaster = [
|
alabaster = [
|
||||||
|
|
|
@ -27,7 +27,7 @@ flask-marshmallow = "*"
|
||||||
flask-migrate = "*"
|
flask-migrate = "*"
|
||||||
flask-restful = "*"
|
flask-restful = "*"
|
||||||
werkzeug = "*"
|
werkzeug = "*"
|
||||||
SpiffWorkflow = {git = "https://github.com/sartography/SpiffWorkflow", rev = "main"}
|
SpiffWorkflow = {git = "https://github.com/sartography/SpiffWorkflow", rev = "feature/remove-loop-reset"}
|
||||||
# SpiffWorkflow = {develop = true, path = "../SpiffWorkflow" }
|
# SpiffWorkflow = {develop = true, path = "../SpiffWorkflow" }
|
||||||
sentry-sdk = "^1.10"
|
sentry-sdk = "^1.10"
|
||||||
sphinx-autoapi = "^2.0"
|
sphinx-autoapi = "^2.0"
|
||||||
|
|
|
@ -889,6 +889,12 @@ paths:
|
||||||
description: If set will return the tasks as they were during a specific step of execution.
|
description: If set will return the tasks as they were during a specific step of execution.
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
|
- name: most_recent_tasks_only
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: If true, this wil return only the most recent tasks.
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- Process Instances
|
- Process Instances
|
||||||
|
@ -936,6 +942,12 @@ paths:
|
||||||
description: If set will return the tasks as they were during a specific step of execution.
|
description: If set will return the tasks as they were during a specific step of execution.
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
|
- name: most_recent_tasks_only
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: If true, this wil return only the most recent tasks.
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- Process Instances
|
- Process Instances
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
"""APIs for dealing with process groups, process models, and process instances."""
|
"""APIs for dealing with process groups, process models, and process instances."""
|
||||||
import json
|
import json
|
||||||
|
from uuid import UUID
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
@ -505,6 +506,7 @@ def process_instance_task_list_without_task_data_for_me(
|
||||||
process_instance_id: int,
|
process_instance_id: int,
|
||||||
all_tasks: bool = False,
|
all_tasks: bool = False,
|
||||||
spiff_step: int = 0,
|
spiff_step: int = 0,
|
||||||
|
most_recent_tasks_only: bool = False,
|
||||||
) -> flask.wrappers.Response:
|
) -> flask.wrappers.Response:
|
||||||
"""Process_instance_task_list_without_task_data_for_me."""
|
"""Process_instance_task_list_without_task_data_for_me."""
|
||||||
process_instance = _find_process_instance_for_me_or_raise(process_instance_id)
|
process_instance = _find_process_instance_for_me_or_raise(process_instance_id)
|
||||||
|
@ -513,6 +515,7 @@ def process_instance_task_list_without_task_data_for_me(
|
||||||
process_instance,
|
process_instance,
|
||||||
all_tasks,
|
all_tasks,
|
||||||
spiff_step,
|
spiff_step,
|
||||||
|
most_recent_tasks_only,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -521,6 +524,7 @@ def process_instance_task_list_without_task_data(
|
||||||
process_instance_id: int,
|
process_instance_id: int,
|
||||||
all_tasks: bool = False,
|
all_tasks: bool = False,
|
||||||
spiff_step: int = 0,
|
spiff_step: int = 0,
|
||||||
|
most_recent_tasks_only: bool = False,
|
||||||
) -> flask.wrappers.Response:
|
) -> flask.wrappers.Response:
|
||||||
"""Process_instance_task_list_without_task_data."""
|
"""Process_instance_task_list_without_task_data."""
|
||||||
process_instance = _find_process_instance_by_id_or_raise(process_instance_id)
|
process_instance = _find_process_instance_by_id_or_raise(process_instance_id)
|
||||||
|
@ -529,6 +533,7 @@ def process_instance_task_list_without_task_data(
|
||||||
process_instance,
|
process_instance,
|
||||||
all_tasks,
|
all_tasks,
|
||||||
spiff_step,
|
spiff_step,
|
||||||
|
most_recent_tasks_only,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -561,6 +566,8 @@ def process_instance_task_list(
|
||||||
|
|
||||||
subprocess_state_overrides = {}
|
subprocess_state_overrides = {}
|
||||||
for step_detail in step_details:
|
for step_detail in step_details:
|
||||||
|
# if step_detail.bpmn_task_identifier == 'Activity_0iajzy6':
|
||||||
|
# print(f"step_detail: {step_detail}")
|
||||||
if step_detail.task_id in tasks:
|
if step_detail.task_id in tasks:
|
||||||
tasks[step_detail.task_id]["state"] = Task.task_state_name_to_int(
|
tasks[step_detail.task_id]["state"] = Task.task_state_name_to_int(
|
||||||
step_detail.task_state
|
step_detail.task_state
|
||||||
|
@ -583,20 +590,39 @@ def process_instance_task_list(
|
||||||
|
|
||||||
for spiff_task_id in tasks:
|
for spiff_task_id in tasks:
|
||||||
if spiff_task_id not in steps_by_id:
|
if spiff_task_id not in steps_by_id:
|
||||||
|
# if tasks[spiff_task_id]['task_spec'] == 'Activity_0iajzy6':
|
||||||
|
# print(f"tasks[spiff_task_id]: {tasks[spiff_task_id]}")
|
||||||
tasks[spiff_task_id]["data"] = {}
|
tasks[spiff_task_id]["data"] = {}
|
||||||
|
state_to_set = TaskState.FUTURE
|
||||||
|
if tasks[spiff_task_id]["state"] == TaskState.LIKELY:
|
||||||
|
# print("WE HERE")
|
||||||
|
previous_completed_steps_for_bpmn_task_identifier = [s for s in step_details if s.bpmn_task_identifier == tasks[spiff_task_id]['task_spec'] and s.task_state == "COMPLETED"]
|
||||||
|
# previous_completed_steps_for_bpmn_task_identifier = [s for s in step_details if s.task_state == "COMPLETED"]
|
||||||
|
# print(f"previous_completed_steps_for_bpmn_task_identifier: {previous_completed_steps_for_bpmn_task_identifier}")
|
||||||
|
if len(previous_completed_steps_for_bpmn_task_identifier) > 0:
|
||||||
|
state_to_set = TaskState.COMPLETED
|
||||||
tasks[spiff_task_id]["state"] = subprocess_state_overrides.get(
|
tasks[spiff_task_id]["state"] = subprocess_state_overrides.get(
|
||||||
spiff_task_id, TaskState.FUTURE
|
spiff_task_id, state_to_set
|
||||||
)
|
)
|
||||||
|
|
||||||
bpmn_process_instance = ProcessInstanceProcessor._serializer.workflow_from_dict(
|
bpmn_process_instance = ProcessInstanceProcessor._serializer.workflow_from_dict(
|
||||||
full_bpmn_process_dict
|
full_bpmn_process_dict
|
||||||
)
|
)
|
||||||
|
|
||||||
spiff_task = processor.__class__.get_task_by_bpmn_identifier(
|
last_step_detail_bpmn_task_identifier = step_details[-1].task_id
|
||||||
step_details[-1].bpmn_task_identifier, bpmn_process_instance
|
print(f"last_step_detail_bpmn_task_identifier: {last_step_detail_bpmn_task_identifier}")
|
||||||
)
|
uuid = UUID(last_step_detail_bpmn_task_identifier)
|
||||||
if spiff_task is not None and spiff_task.state != TaskState.READY:
|
spiff_task = processor.bpmn_process_instance.get_task(uuid)
|
||||||
|
print(f"spiff_task: {spiff_task}")
|
||||||
|
# # workflow.complete_task_from_id(uuid)
|
||||||
|
# # spiff_task = processor.__class__.get_task_by_bpmn_identifier(
|
||||||
|
# # last_step_detail_bpmn_task_identifier, bpmn_process_instance
|
||||||
|
# # )
|
||||||
|
if spiff_task is not None: #and spiff_task.state != TaskState.READY:
|
||||||
|
print("HEY WE HERE")
|
||||||
|
print(f"spiff_task: {spiff_task}")
|
||||||
spiff_task.complete()
|
spiff_task.complete()
|
||||||
|
print(f"spiff_task2: {spiff_task}")
|
||||||
|
|
||||||
spiff_tasks = None
|
spiff_tasks = None
|
||||||
if all_tasks:
|
if all_tasks:
|
||||||
|
@ -619,6 +645,8 @@ def process_instance_task_list(
|
||||||
spiff_tasks_by_process_id_and_task_name: dict[str, SpiffTask] = {}
|
spiff_tasks_by_process_id_and_task_name: dict[str, SpiffTask] = {}
|
||||||
for spiff_task in spiff_tasks:
|
for spiff_task in spiff_tasks:
|
||||||
row_id = f"{spiff_task.task_spec._wf_spec.name}:{spiff_task.task_spec.name}"
|
row_id = f"{spiff_task.task_spec._wf_spec.name}:{spiff_task.task_spec.name}"
|
||||||
|
# if spiff_task.task_spec.name == 'Activity_0iajzy6' or spiff_task.task_spec.name == 'Activity_0pv92j7':
|
||||||
|
# print(f"spiff_task: {spiff_task} - {spiff_task.id}")
|
||||||
if (
|
if (
|
||||||
row_id not in spiff_tasks_by_process_id_and_task_name
|
row_id not in spiff_tasks_by_process_id_and_task_name
|
||||||
or spiff_task.last_state_change
|
or spiff_task.last_state_change
|
||||||
|
|
|
@ -145,7 +145,7 @@ export default function ProcessInstanceShow({ variant }: OwnProps) {
|
||||||
path: `${apiPath}/${modifiedProcessModelId}/${params.process_instance_id}${queryParams}`,
|
path: `${apiPath}/${modifiedProcessModelId}/${params.process_instance_id}${queryParams}`,
|
||||||
successCallback: setProcessInstance,
|
successCallback: setProcessInstance,
|
||||||
});
|
});
|
||||||
let taskParams = '?all_tasks=true';
|
let taskParams = '?all_tasks=true&most_recent_tasks_only=true';
|
||||||
if (typeof params.spiff_step !== 'undefined') {
|
if (typeof params.spiff_step !== 'undefined') {
|
||||||
taskParams = `${taskParams}&spiff_step=${params.spiff_step}`;
|
taskParams = `${taskParams}&spiff_step=${params.spiff_step}`;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue