Today's post is about : How to create multiple workflows for multiple models in a single module.
Few days back, I created a module custom_account with two models custom_expense and custom_payment. I created two different but almost similar workflows for both of them. When I installed the module, only latter one was working. What could be the reason?
Problem was with Activity and Transition ids. I was using same ids in both the workflows. Check following:
custom_expense_workflow_view.xml
<!-- Activity -->
<record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_submit"/>
<field name="signal">signal_submit</field>
</record>
custom_payment_workflow_view.xml
<!-- Activity -->
<record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_submit"/>
<field name="signal">signal_submit</field>
</record>
So workflow.activity and workflow.transition were same. That was the catch.
custom_expense_workflow_view.xml
<!-- Activity -->
<record id="expense_act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="expense_act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="expense_trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="expense_act_draft"/>
<field name="act_to" ref="expense_act_submit"/>
<field name="signal">signal_submit</field>
</record>
custom_payment_workflow_view.xml
<!-- Activity -->
<record id="payment_act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="payment_act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="payment_trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="payment_act_draft"/>
<field name="act_to" ref="payment_act_submit"/>
<field name="signal">signal_submit</field>
</record>
That's it.
Thanks!!!!!!!!!! Enjoy Programming :)
Problem was with Activity and Transition ids. I was using same ids in both the workflows. Check following:
Old Code:
custom_expense_workflow_view.xml
<!-- Activity -->
<record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_submit"/>
<field name="signal">signal_submit</field>
</record>
custom_payment_workflow_view.xml
<!-- Activity -->
<record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_submit"/>
<field name="signal">signal_submit</field>
</record>
So workflow.activity and workflow.transition were same. That was the catch.
New Code:
custom_expense_workflow_view.xml
<!-- Activity -->
<record id="expense_act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="expense_act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_expense_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="expense_trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="expense_act_draft"/>
<field name="act_to" ref="expense_act_submit"/>
<field name="signal">signal_submit</field>
</record>
custom_payment_workflow_view.xml
<!-- Activity -->
<record id="payment_act_draft" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="flow_start">True</field>
<field name="kind">dummy</field>
<field name="name">draft</field>
</record>
<record id="payment_act_submit" model="workflow.activity">
<field name="wkf_id" ref="custom_payment_workflow"/>
<field name="kind">function</field>
<field name="action">expense_submit()</field>
<field name="name">submit</field>
</record>
<!-- Transistion -->
<record id="payment_trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="payment_act_draft"/>
<field name="act_to" ref="payment_act_submit"/>
<field name="signal">signal_submit</field>
</record>
That's it.
Thanks!!!!!!!!!! Enjoy Programming :)
Comments
Post a Comment
Thanks for your valuable comments.