Mrp-operations 的workflow没有写入DB
-
版主大人,我在openobject-developer里找到这样的说法:
If your buttons do not seem to be doing anything, one of the following two things are likely:
1. The record you are working on does not have a Workflow Instance record associated with it (it was probably
created before you defined your workflow)
2. You have not set the “osv” field correctly in your workflow XML file
我遇到的情况非常像第一种问题,但可惜的是没有任何解决的建议,我现在还是苦于无法下手解决,因为无法确定到底是什么时候创建的instance record,也就无法确定到底创建的时候出了什么问题。 -
[quote author=maths369 link=topic=2261.msg7328#msg7328 date=1293669981]
版主大人,我在openobject-developer里找到这样的说法:
If your buttons do not seem to be doing anything, one of the following two things are likely:
1. The record you are working on does not have a Workflow Instance record associated with it (it was probably
created before you defined your workflow)
2. You have not set the “osv” field correctly in your workflow XML file
我遇到的情况非常像第一种问题,但可惜的是没有任何解决的建议,我现在还是苦于无法下手解决,因为无法确定到底是什么时候创建的instance record,也就无法确定到底创建的时候出了什么问题。
[/quote]
你不确定, 我帮你确定了...你不相信, 我有什么办法? 你再研究一年半载的OE, 你再回头看你这贴吧. -
经过Debug,我发现workflow的流程是这样的:
1. 当某个模块安装时,如果它的workflow的on_create状态是True,那么,就会将这个模块的workflow添加进wkf表,并把相关的activity和transition写进相应的表。
2. 当这个模块创建相关数据记录时,将会触发创建instance的方法,并在wkf_instance表中添加记录,用res_id把实际数据记录和workflow的记录链接在一起,相当于对于一条实际的记录,有一个workflow的实例创建,还含有一个状态:active/complete。complete的话,就说明已经完成了。
3. 当实际的事件触发workflow的时候,会先去根据当前数据记录的res_id和res_type(数据模块名)去wkf_instance表中查询是否有相应的实例记录,如果有,并且状态是active,就会创建实际的workflow步骤实例,并执行相关步骤。
之前我遇到的问题就是wkf_instance表中与实际数据记录对应的实例没有写入,所以每次查询的时候都找不到,也就不能执行相关的workflow。我用create方法强行执行了一遍创建数据记录之后,发现问题解决了。