Я использую Viewflow для определения рабочих процессов на основе его модели процесса. Когда мне больше не нужен заданный рабочий процесс, я предполагаю, что что-то вроде этого должно работать:
class MyProcess(Process):
...
class MyFlow(Flow):
process_class = MyProcess
def xxx():
process: MyProcess = ...instance of MyProcess...
process.delete()
Однако, это часто (всегда?) Приводит к таким исключениям:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/base/base.py", line 240, in _commit
return self.connection.commit()
psycopg2.errors.ForeignKeyViolation: update or delete on table "viewflow_task" violates foreign key constraint "viewflow_task_previous_to_task_id_7d3a2081_fk_viewflow_task_id" on table "viewflow_task_previous"
DETAIL: Key (id)=(118732) is still referenced from table "viewflow_task_previous".
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/main/srhaque/Innovatieltd/source/paiyroll/tasks.py", line 620, in viewflow_dequeue
return CeleryResultCodec.encode_success(logger, celery_task, body(call_, viewflow_process, viewflow_task, celery_task))
File "/main/srhaque/Innovatieltd/source/paiyroll/tasks.py", line 612, in body
waiter.dequeue(vf_task)
File "/main/srhaque/Innovatieltd/source/paiyroll/workflow/flow/celery.py", line 125, in dequeue
activation.process.save()
File "/usr/lib/python3.7/contextlib.py", line 119, in __exit__
next(self.gen)
File "/usr/local/lib/python3.7/dist-packages/viewflow/lock.py", line 55, in lock
break
File "/usr/local/lib/python3.7/dist-packages/django/db/transaction.py", line 240, in __exit__
connection.commit()
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/base/base.py", line 262, in commit
self._commit()
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/base/base.py", line 240, in _commit
return self.connection.commit()
File "/usr/local/lib/python3.7/dist-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/base/base.py", line 240, in _commit
return self.connection.commit()
django.db.utils.IntegrityError: update or delete on table "viewflow_task" violates foreign key constraint "viewflow_task_previous_to_task_id_7d3a2081_fk_viewflow_task_id" on table "viewflow_task_previous"
DETAIL: Key (id)=(118732) is still referenced from table "viewflow_task_previous".
Я отмечаю, что Viewflow хранит три таблицы: одну для процессов, одну для задач и одну, в которой хранятся (pred, su cc) кортежи для упорядочивания задач m2m. Я не видел ничего в документах (или в Google), чтобы предположить, что для удаления требуется что-то необычное. Я что-то упустил из виду?