viewflow.frontend

时间:2017-02-16 14:40:15

标签: django django-viewflow

我希望在标准viewflow.frontend之外集成流程,启动它们等。为了做到这一点,我一直在尝试创建一个简单的页面,我可以开始一个新的过程,但一直在努力寻找实现它的方法。

一种方法是使用来自url('^start_something, CustomStartView.as_view())的{​​{1}}子类CustomStartView来定义CreateProcessView的网址。无论何时我修复错误,这都会导致错误后出错。我现在很确定这不是正确的方法,因为viewflow.flow.views.start被用作View类本身的参数,并且可能需要以不同于公共视图的方式使用

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

Viewflow视图需要由flow_classflow_task实例进行参数化。因此,您可以包含一个开始视图,如下所示::

url('^start/', CreateProcessView.as_view(), {
     'flow_class': MyFlow,
     'flow_task': MyFlow.start})

要添加任务视图网址配置,您需要使用process_pktask_pk参数

url('^(?P<process_pk>\d+)/approve/(?P<task_pk>\d+)/', ApproveView.as_view(), {
     'flow_class': MyFlow,
     'flow_task': MyFlow.approve
})

对于每个节点,您还可以启用详细信息和各种操作URL,例如:

url('^(?P<process_pk>\d+)/approve/(?P<task_pk>\d+)/detail/', DetailTaskView.as_view(), {
     'flow_class': MyFlow,
     'flow_task': MyFlow.approve
}),
url('^(?P<process_pk>\d+)/approve/(?P<task_pk>\d+)/cancel/', CancelTaskView.as_view(), {
     'flow_class': MyFlow,
     'flow_task': MyFlow.approve
}),

所有这些都很麻烦。

推荐方式

您可以只包含Flow.instance.urls,其中包含收集的所有网址,并且可以包含在网址配置中。

url('^myflow', include(MyFlow.instance.urls, namespace='myflow'))

最后,要启用任务列表视图,您可以手动输入URL条目,例如

url('^myflow/inbox/', TaskListView.as_view(), {
    'flow_class': MyFlow}, name="tasks")

或仅使用viewflow.flow.viewset.FlowViewSet

myflow_urls = FlowViewSet(MyFlow).urls

urlpatterns = [
    url(r'^myflow/', include(myflow_urls, namespace='myflow'))
]

这是将视图流URL包含在django URL配置中的推荐方法。要自定义该URL配置中使用的视图,您可以继承FlowViewSet类并在节点定义中提供视图,ex

class MyFlow(Flow):
    start = flow.Start(detail_view_class=MyDetailTaskView)

对于示例用法,您可以查看Viewflow自定义UI菜谱示例 - https://github.com/viewflow/cookbook/tree/master/custom_ui