Viewflow Django - Как вы отказываетесь от шага?

Недавно я удалил шаг в своем потоке просмотра.

Теперь я получаю 500 ошибок от coerce_to_related_instance(task, task.flow_task.flow_class.task_class с ошибкой 'NoneType' object has no attribute 'flow_class'.

class TaskIterable(ModelIterable):
    def __iter__(self):
        base_iterator = super(TaskIterable, self).__iter__()
        if getattr(self.queryset, '_coerced', False):
            for task in base_iterator:
                if isinstance(task, self.queryset.model):
                    print(task)
                    task = coerce_to_related_instance(task, task.flow_task.flow_class.task_class)
                yield task
        else:
            for task in base_iterator:
                yield task

Я понимаю, что это происходит потому, что задача больше не может быть сопоставлена ​​с действительной задачей, поскольку старая задача устарела.

Каковы мои варианты?

  1. Оставить старую задачу, чтобы ее можно было сопоставить?
  2. Запустить скрипт sql, чтобы обновить все «flow_task»?
  3. ?

person Tinker    schedule 06.06.2018    source источник


Ответы (1)


Да, обычно для того, чтобы сохранить информацию о типе узла и связанных с ним подробных представлениях задач, вам необходимо сохранить несвязанные узлы потока в вашем классе потока.

Общий сценарий обновления потока — просто удалить входящее соединение, но оставить его с .Next(..), что позволит пользователю завершить существующий узел.

Если это невозможно, ссылки на задачи узла потока могут быть обновлены во время переноса данных.

http://docs.viewflow.io/viewflow_core.html#flow-migration

Версия PRO содержит специальный узел obsolete, который позволяет отбрасывать устаревшие узлы, и все подробные представления узлов будут выполняться устаревшими представлениями узлов.

person kmmbvnr    schedule 07.06.2018