запуск потока через код Django-Viewflow

Я хочу запустить свой процесс полностью по коду. Мне удалось запустить процесс, но я не могу запустить следующую часть процесса. Я попытался использовать «flow.Function» и вызвать нужную функцию, но я не говорю

'Function {} should be called with task instance', 'execute'" 

и документация по этому вопросу не очень ясна.

потоки.py

@flow.flow_start_func
def create_flow(activation, campos_proceso, **kwargs):
    activation.process.asignador = campos_proceso['asignador']
    activation.process.ejecutor = campos_proceso['ejecutor']
    activation.process.tipo_de_flujo = campos_proceso['tipo_de_flujo']
    activation.process.estado_del_entregable = campos_proceso[
    'estado_del_entregable']
    activation.process.save()
    activation.prepare()
    activation.done()
    return activation

@flow.flow_func
def exec_flow(activation, process_fields, **kwargs):
    activation.process.revisor = process_fields['revisor']
    activation.process.save()
    activation.prepare()
    activation.done()
    return activation

@frontend.register
class Delivery_flow(Flow):
    process_class = DeliveryProcess
    start = flow.StartFunction(create_flow).Next(this.execute)
    execute = flow.Function(exec_flow).Next(this.end)
    end = flow.End()

просмотры.py

def Execute(request): #campos_ejecucion, request):
    campos_ejecucion = {
    'ejecutor':request.user,
    'revisor':request.user,
    'observaciones_ejecutor':'Este es un puente magico',
    'url_ejecucion':'https://www.youtube.com/watch?v=G-yNGb0Q91Y',
    }
    campos_proceso = {
    'revisor':campos_ejecucion['revisor']
    }

    flows.Delivery_flow.execute.run()
    Entregable.objects.crear_entregable()
    return render(request, "Flujo/landing.html")

person Juan David Estrada Bohorquez    schedule 19.03.2019    source источник


Ответы (1)


Как правило, запуск «полностью по коду» является антипаттерном, и его следует избегать. Класс Flow — это набор представлений, связанных с URL-адресами, поэтому это похоже на конфигурацию URL-адресов на основе классов, вам не нужно добавлять еще одно отдельное представление и запись URL-адреса.

Для пользовательских представлений вы можете взглянуть на пример кулинарной книги — https://github.com/viewflow/cookbook/blob/master/custom_views/demo/bloodtest/views.py

Что касается самого вопроса, вы пропустили task_loader. Функциональный узел должен выяснить, какая задача фактически выполняется. Вы можете сделать это на уровне потока (с помощью task_loader) или напрямую получить экземпляр модели Task и передать его в качестве параметра функции — http://docs.viewflow.io/viewflow_flow_nodes.html#viewflow.flow.Функция

person kmmbvnr    schedule 25.03.2019