Workflow 遵循一个特定路径时OpenERP 7.0工作流不工作

Workflow 遵循一个特定路径时OpenERP 7.0工作流不工作,workflow,odoo,openerp-7,Workflow,Odoo,Openerp 7,我使用OpenERP7.0开发了一个新模块。我有两条路径来达到同一状态的工作流。一个路径是从您不负责的地方提交请求,因此必须提交请求,然后由负责人确认,或者提交重新请求,如果您负责,则跳过确认步骤并直接转到确认案例。当我试图发送要处理的请求时,如果流程从第一条路径经过确认,那么它就可以工作,而如果它直接从草稿到确认,那么它就不能工作 下面是工作流程的屏幕截图 我的工作流定义: <?xml version="1.0"?> <openerp> <data>

我使用OpenERP7.0开发了一个新模块。我有两条路径来达到同一状态的工作流。一个路径是从您不负责的地方提交请求,因此必须提交请求,然后由负责人确认,或者提交重新请求,如果您负责,则跳过确认步骤并直接转到确认案例。当我试图发送要处理的请求时,如果流程从第一条路径经过确认,那么它就可以工作,而如果它直接从草稿到确认,那么它就不能工作

下面是工作流程的屏幕截图

我的工作流定义:

<?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>
希望这能帮助别人