小编And*_*lón的帖子

Django的BPMN动态工作流程

我想构建一个Django解决方案,该解决方案可以实时定义和更改工作流,希望通过更新BPMN图表而无需更改源代码和重新部署。

尽管在Java中(例如Camunda和Bizagi)这种功能已经存在了相当长的时间,但在Django的上下文中,由于我搜索的常规位置并没有提供令人满意的答案,因此似乎没有引起同样的兴趣。对2011年类似问题的回答显示,“工作流”一词如此广泛,可能意味着很多事情。但是,经过仔细检查,它似乎可以归结为两种方法:基于Django的工作流和BPMN引擎。

GithubDjango软件包中列出的基于Django的工作流的问题在于,最流行/最稳定的工作流(例如ViewflowActivFlow)提供了某种框架来简化状态和过渡的实现,但最终,每当利益相关者改变对流程的想法时,您需要手工编写更改代码。很棒的Django列表中找到的最有前途的选项是django-river,它至少将工作流的状态和转换作为Django模型存储在数据库中,因此您可以随时进行更改。

另一个大方法是BPMN引擎。在弄乱了几个纯Python(非Django)选项之后,我设法使用bpmn_dmn使SpiffWorkflow正常工作。现在,我可以加载用Camunda Modeler制作的.bpmn图和.dmn表,并通过引擎运行它们,以基于一些参数获得最终事件。

    from bpmn_dmn.bpmn_dmn import BPMNDMNXMLWorkflowRunner
    filename = 'rates.bpmn'
    runner = BPMNDMNXMLWorkflowRunner(filename, debugLog='DEBUG', debug=False)
    data = {'size': 150, 'type': 'SH', 'country': 'US'}
    runner.start(**data)
    res = runner.getEndEventName()
    print(res)
Run Code Online (Sandbox Code Playgroud)

这是直接且有用的,足以运行不需要人工干预的小型工作流程。但是,我仍然需要弥合从.bpmn图定义加载的工作流与Django解决方案固有的Views / Forms / Model状态之间的转换之间的鸿沟。

到目前为止,我最好的选择似乎是将工作流规范从SpiffWorflow转换为django-river模型数据库中的状态/转换记录,但是我想知道是否还有更好的选择。

django workflow bpmn python-3.x django-river

7
推荐指数
1
解决办法
733
查看次数

如何与亚马逊购买物品互动?

我想将我们的图书馆管理系统(OLIB)与亚马逊的帐户同步,以便跟踪我们购买的电子书.这甚至可能吗?我最接近的是亚马逊的产品广告API:

https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html

然而,它似乎与亚马逊的产品列表一起使用,但没有提及如何访问我的帐户来管理我购买的Kindle电子书.

有任何想法吗?提前致谢.

amazon kindle amazon-product-api

5
推荐指数
1
解决办法
538
查看次数