Workflow 遵循一个特定路径时OpenERP 7.0工作流不工作
我使用OpenERP7.0开发了一个新模块。我有两条路径来达到同一状态的工作流。一个路径是从您不负责的地方提交请求,因此必须提交请求,然后由负责人确认,或者提交重新请求,如果您负责,则跳过确认步骤并直接转到确认案例。当我试图发送要处理的请求时,如果流程从第一条路径经过确认,那么它就可以工作,而如果它直接从草稿到确认,那么它就不能工作 下面是工作流程的屏幕截图 我的工作流定义:Workflow 遵循一个特定路径时OpenERP 7.0工作流不工作,workflow,odoo,openerp-7,Workflow,Odoo,Openerp 7,我使用OpenERP7.0开发了一个新模块。我有两条路径来达到同一状态的工作流。一个路径是从您不负责的地方提交请求,因此必须提交请求,然后由负责人确认,或者提交重新请求,如果您负责,则跳过确认步骤并直接转到确认案例。当我试图发送要处理的请求时,如果流程从第一条路径经过确认,那么它就可以工作,而如果它直接从草稿到确认,那么它就不能工作 下面是工作流程的屏幕截图 我的工作流定义: <?xml version="1.0"?> <openerp> <data>
<?xml version="1.0"?>
<openerp>
<data>
<record model="workflow" id="wkf_request">
<field name="name">request.wkf</field>
<field name="osv">generic.request</field>
<field name="on_create">True</field>
</record>
<!-- actividades -->
<record model="workflow.activity" id="act_draft">
<field name="wkf_id" ref="wkf_request" />
<field name="flow_start">True</field>
<field name="name">request_draft</field>
<field name="kind">function</field>
<field name="action">request_draft()</field>
</record>
<record model="workflow.activity" id="act_submit">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_submitted</field>
<field name="kind">function</field>
<field name="action">submit_request()</field>
</record>
<record model="workflow.activity" id="act_confirm">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_confirmed</field>
<field name="kind">function</field>
<field name="action">confirm_request()</field>
</record>
<record model="workflow.activity" id="act_closed_nconf">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_nconf</field>
<field name="kind">function</field>
<field name="action">close_nconf_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_req_reformulate">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_reformulation</field>
<field name="kind">function</field>
<field name="action">req_reformulate_request()</field>
</record>
<record model="workflow.activity" id="act_treatment">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_treatment</field>
<field name="kind">function</field>
<field name="action">tratamento()</field>
</record>
<record model="workflow.activity" id="act_closed">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed</field>
<field name="kind">function</field>
<field name="action">close_request()</field>
<field name="flow_stop">True</field>
</record>
<!-- transições -->
<record model="workflow.transition" id="request_t1">
<field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<record model="workflow.transition" id="request_t101">
<field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_confirm" />
<field name="signal">confirm_request</field>
</record>
<record model="workflow.transition" id="request_t2">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_req_reformulate" />
<field name="signal">req_reformulate_request</field>
</record>
<record model="workflow.transition" id="request_t3">
<field name="act_from" ref="act_req_reformulate" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<record model="workflow.transition" id="request_t4">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="signal">confirm_request</field>
</record>
<record model="workflow.transition" id="request_t5">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_closed_nconf" />
<field name="signal">close_nconf_request</field>
</record>
<record model="workflow.transition" id="request_t6">
<field name="act_from" ref="act_confirm" />
<field name="act_to" ref="act_treatment" />
<field name="signal">tratamento</field>
</record>
<record model="workflow.transition" id="request_t7">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_closed" />
<field name="signal">close_request</field>
</record>
</data>
</openerp>
<button name="tratamento" class="oe_highlight oe_view_mode_only" string="Send to processing!" type="workflow" states="confirmed" />
<?xml version="1.0"?>
<openerp>
<data>
<record model="workflow" id="wkf_request">
<field name="name">request.wkf</field>
<field name="osv">generic.request</field>
<field name="on_create">True</field>
</record>
<!-- actividades -->
<record model="workflow.activity" id="act_draft">
<field name="wkf_id" ref="wkf_request" />
<field name="flow_start">True</field>
<field name="name">request_draft</field>
<field name="kind">function</field>
<field name="action">request_draft()</field>
</record>
<record model="workflow.activity" id="act_submit">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_submitted</field>
<field name="kind">function</field>
<field name="action">submit_request()</field>
</record>
<record model="workflow.activity" id="act_confirm">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_confirmed</field>
<field name="kind">function</field>
<field name="action">confirm_request()</field>
</record>
<record model="workflow.activity" id="act_closed_nconf">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_nconf</field>
<field name="kind">function</field>
<field name="action">close_nconf_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_req_reformulate">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_reformulation</field>
<field name="kind">function</field>
<field name="action">req_reformulate_request()</field>
</record>
<record model="workflow.activity" id="act_treatment">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_treatment</field>
<field name="kind">function</field>
<field name="action">treat_request()</field>
</record>
<record model="workflow.activity" id="act_closed">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed</field>
<field name="kind">function</field>
<field name="action">close_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_awaiting_auth">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_awaiting_authorization</field>
<field name="kind">function</field>
<field name="action">wait_auth_request()</field>
</record>
<record model="workflow.activity" id="act_closed_ref">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_ref</field>
<field name="kind">function</field>
<field name="action">close_ref_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_awaiting_appr">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_awainting_approval</field>
<field name="kind">function</field>
<field name="action">wait_appr_request()</field>
</record>
<record model="workflow.activity" id="act_closed_disappr">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_disappr</field>
<field name="kind">function</field>
<field name="action">close_disappr_request()</field>
<field name="flow_stop">True</field>
</record>
<!-- transições -->
<record model="workflow.transition" id="request_t1">
<field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<!-- this transition appens when condition is satisfied (function returns true if requestor is responsible) -->
<record model="workflow.transition" id="request_t102">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="condition">check_responsible()</field>
</record>
<record model="workflow.transition" id="request_t2">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_req_reformulate" />
<field name="signal">req_reformulate_request</field>
</record>
<record model="workflow.transition" id="request_t3">
<field name="act_from" ref="act_req_reformulate" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<record model="workflow.transition" id="request_t1001">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="condition">ref_goto_confirmed()</field>
</record>
<record model="workflow.transition" id="request_t1002">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_treatment" />
<field name="condition">ref_goto_treatment()</field>
</record>
<record model="workflow.transition" id="request_t4">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="signal">confirm_request</field>
</record>
<record model="workflow.transition" id="request_t5">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_closed_nconf" />
<field name="signal">close_nconf_request</field>
</record>
<record model="workflow.transition" id="request_t6">
<field name="act_from" ref="act_confirm" />
<field name="act_to" ref="act_treatment" />
<field name="signal">treat_request</field>
</record>
<record model="workflow.transition" id="request_t7">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_closed" />
<field name="signal">close_request</field>
</record>
<record model="workflow.transition" id="request_t8">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_awaiting_auth" />
<field name="signal">wait_auth_request</field>
</record>
<record model="workflow.transition" id="request_t9">
<field name="act_from" ref="act_awaiting_auth" />
<field name="act_to" ref="act_closed_ref" />
<field name="signal">close_ref_request</field>
</record>
<record model="workflow.transition" id="request_t10">
<field name="act_from" ref="act_awaiting_auth" />
<field name="act_to" ref="act_treatment" />
<field name="signal">auth_send_processing</field>
</record>
<record model="workflow.transition" id="request_t11">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_req_reformulate" />
<field name="signal">req_reformulate_request</field>
</record>
<record model="workflow.transition" id="request_t12">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_awaiting_appr" />
<field name="signal">wait_appr_request</field>
</record>
<record model="workflow.transition" id="request_t13">
<field name="act_from" ref="act_awaiting_appr" />
<field name="act_to" ref="act_closed_disappr" />
<field name="signal">close_disappr_request</field>
</record>
<record model="workflow.transition" id="request_t14">
<field name="act_from" ref="act_awaiting_appr" />
<field name="act_to" ref="act_treatment" />
<field name="signal">appr_send_processing</field>
</record>
</data>
</openerp>
有人知道这是什么原因吗?提前谢谢 它不起作用,因为我是通过python代码中的快捷方式跳转到那种状态的,绕过了工作流转换 为了解决这个问题,我在工作流中添加了一些条件,并因此添加了一些新的转换,现在工作正常 因为我发现OpenERP文档太差了,所以我将把我的解决方案放在这里,希望这最终会对将来的人有所帮助 工作流屏幕截图: 工作流定义:
<?xml version="1.0"?>
<openerp>
<data>
<record model="workflow" id="wkf_request">
<field name="name">request.wkf</field>
<field name="osv">generic.request</field>
<field name="on_create">True</field>
</record>
<!-- actividades -->
<record model="workflow.activity" id="act_draft">
<field name="wkf_id" ref="wkf_request" />
<field name="flow_start">True</field>
<field name="name">request_draft</field>
<field name="kind">function</field>
<field name="action">request_draft()</field>
</record>
<record model="workflow.activity" id="act_submit">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_submitted</field>
<field name="kind">function</field>
<field name="action">submit_request()</field>
</record>
<record model="workflow.activity" id="act_confirm">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_confirmed</field>
<field name="kind">function</field>
<field name="action">confirm_request()</field>
</record>
<record model="workflow.activity" id="act_closed_nconf">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_nconf</field>
<field name="kind">function</field>
<field name="action">close_nconf_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_req_reformulate">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_reformulation</field>
<field name="kind">function</field>
<field name="action">req_reformulate_request()</field>
</record>
<record model="workflow.activity" id="act_treatment">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_treatment</field>
<field name="kind">function</field>
<field name="action">tratamento()</field>
</record>
<record model="workflow.activity" id="act_closed">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed</field>
<field name="kind">function</field>
<field name="action">close_request()</field>
<field name="flow_stop">True</field>
</record>
<!-- transições -->
<record model="workflow.transition" id="request_t1">
<field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<record model="workflow.transition" id="request_t101">
<field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_confirm" />
<field name="signal">confirm_request</field>
</record>
<record model="workflow.transition" id="request_t2">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_req_reformulate" />
<field name="signal">req_reformulate_request</field>
</record>
<record model="workflow.transition" id="request_t3">
<field name="act_from" ref="act_req_reformulate" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<record model="workflow.transition" id="request_t4">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="signal">confirm_request</field>
</record>
<record model="workflow.transition" id="request_t5">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_closed_nconf" />
<field name="signal">close_nconf_request</field>
</record>
<record model="workflow.transition" id="request_t6">
<field name="act_from" ref="act_confirm" />
<field name="act_to" ref="act_treatment" />
<field name="signal">tratamento</field>
</record>
<record model="workflow.transition" id="request_t7">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_closed" />
<field name="signal">close_request</field>
</record>
</data>
</openerp>
<button name="tratamento" class="oe_highlight oe_view_mode_only" string="Send to processing!" type="workflow" states="confirmed" />
<?xml version="1.0"?>
<openerp>
<data>
<record model="workflow" id="wkf_request">
<field name="name">request.wkf</field>
<field name="osv">generic.request</field>
<field name="on_create">True</field>
</record>
<!-- actividades -->
<record model="workflow.activity" id="act_draft">
<field name="wkf_id" ref="wkf_request" />
<field name="flow_start">True</field>
<field name="name">request_draft</field>
<field name="kind">function</field>
<field name="action">request_draft()</field>
</record>
<record model="workflow.activity" id="act_submit">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_submitted</field>
<field name="kind">function</field>
<field name="action">submit_request()</field>
</record>
<record model="workflow.activity" id="act_confirm">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_confirmed</field>
<field name="kind">function</field>
<field name="action">confirm_request()</field>
</record>
<record model="workflow.activity" id="act_closed_nconf">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_nconf</field>
<field name="kind">function</field>
<field name="action">close_nconf_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_req_reformulate">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_reformulation</field>
<field name="kind">function</field>
<field name="action">req_reformulate_request()</field>
</record>
<record model="workflow.activity" id="act_treatment">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_treatment</field>
<field name="kind">function</field>
<field name="action">treat_request()</field>
</record>
<record model="workflow.activity" id="act_closed">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed</field>
<field name="kind">function</field>
<field name="action">close_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_awaiting_auth">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_awaiting_authorization</field>
<field name="kind">function</field>
<field name="action">wait_auth_request()</field>
</record>
<record model="workflow.activity" id="act_closed_ref">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_ref</field>
<field name="kind">function</field>
<field name="action">close_ref_request()</field>
<field name="flow_stop">True</field>
</record>
<record model="workflow.activity" id="act_awaiting_appr">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_awainting_approval</field>
<field name="kind">function</field>
<field name="action">wait_appr_request()</field>
</record>
<record model="workflow.activity" id="act_closed_disappr">
<field name="wkf_id" ref="wkf_request" />
<field name="name">request_closed_disappr</field>
<field name="kind">function</field>
<field name="action">close_disappr_request()</field>
<field name="flow_stop">True</field>
</record>
<!-- transições -->
<record model="workflow.transition" id="request_t1">
<field name="act_from" ref="act_draft" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<!-- this transition appens when condition is satisfied (function returns true if requestor is responsible) -->
<record model="workflow.transition" id="request_t102">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="condition">check_responsible()</field>
</record>
<record model="workflow.transition" id="request_t2">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_req_reformulate" />
<field name="signal">req_reformulate_request</field>
</record>
<record model="workflow.transition" id="request_t3">
<field name="act_from" ref="act_req_reformulate" />
<field name="act_to" ref="act_submit" />
<field name="signal">submit_request</field>
</record>
<record model="workflow.transition" id="request_t1001">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="condition">ref_goto_confirmed()</field>
</record>
<record model="workflow.transition" id="request_t1002">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_treatment" />
<field name="condition">ref_goto_treatment()</field>
</record>
<record model="workflow.transition" id="request_t4">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_confirm" />
<field name="signal">confirm_request</field>
</record>
<record model="workflow.transition" id="request_t5">
<field name="act_from" ref="act_submit" />
<field name="act_to" ref="act_closed_nconf" />
<field name="signal">close_nconf_request</field>
</record>
<record model="workflow.transition" id="request_t6">
<field name="act_from" ref="act_confirm" />
<field name="act_to" ref="act_treatment" />
<field name="signal">treat_request</field>
</record>
<record model="workflow.transition" id="request_t7">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_closed" />
<field name="signal">close_request</field>
</record>
<record model="workflow.transition" id="request_t8">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_awaiting_auth" />
<field name="signal">wait_auth_request</field>
</record>
<record model="workflow.transition" id="request_t9">
<field name="act_from" ref="act_awaiting_auth" />
<field name="act_to" ref="act_closed_ref" />
<field name="signal">close_ref_request</field>
</record>
<record model="workflow.transition" id="request_t10">
<field name="act_from" ref="act_awaiting_auth" />
<field name="act_to" ref="act_treatment" />
<field name="signal">auth_send_processing</field>
</record>
<record model="workflow.transition" id="request_t11">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_req_reformulate" />
<field name="signal">req_reformulate_request</field>
</record>
<record model="workflow.transition" id="request_t12">
<field name="act_from" ref="act_treatment" />
<field name="act_to" ref="act_awaiting_appr" />
<field name="signal">wait_appr_request</field>
</record>
<record model="workflow.transition" id="request_t13">
<field name="act_from" ref="act_awaiting_appr" />
<field name="act_to" ref="act_closed_disappr" />
<field name="signal">close_disappr_request</field>
</record>
<record model="workflow.transition" id="request_t14">
<field name="act_from" ref="act_awaiting_appr" />
<field name="act_to" ref="act_treatment" />
<field name="signal">appr_send_processing</field>
</record>
</data>
</openerp>
希望这能帮助别人