Moteur de Workflow

OpenERP permet évidemment de réaliser et/ou adapter des workflow existants.

Son moteur de workflow ne repose sur aucun standard (ex: XPDL) mais a l'avantage d'être assez simple.
On peut déclarer un workflow sur tout objet avec un état (existence de l'attribut "state").
On peut réaliser ou modifier un workflow soit graphiquement, soit en mettant à jour des fichiers <workflow>.xml

* exemple graphique :

* exemple xml :
<?xml version="1.0"?>
<openerp>
    <data>
        <record model="workflow" id="wkf_idea">
            <field name="name">idea.wkf</field>
            <field name="osv">idea.idea</field>
            <field name="on_create">True</field>
        </record>

        <record model="workflow.activity" id="act_draft">
            <field name="wkf_id" ref="wkf_idea" />
            <field name="flow_start">True</field>
            <field name="name">draft</field>
            <field name="kind">function</field>
            <field name="action">idea_draft()</field>
        </record>

        <record model="workflow.activity" id="act_open">
            <field name="wkf_id" ref="wkf_idea" />
            <field name="name">open</field>
            <field name="kind">function</field>
            <field name="action">idea_open()</field>
        </record>

        <record model="workflow.activity" id="act_close">
            <field name="wkf_id" ref="wkf_idea" />
            <field name="name">close</field>
            <field name="kind">function</field>
            <field name="action">idea_close()</field>
            <field name="flow_stop">True</field>
        </record>

        <record model="workflow.activity" id="act_cancel">
            <field name="wkf_id" ref="wkf_idea" />
            <field name="name">cancel</field>
            <field name="kind">function</field>
            <field name="action">idea_cancel()</field>
            <field name="flow_stop">True</field>
        </record>

        <record model="workflow.transition" id="t1">
            <field name="act_from" ref="act_draft" />
            <field name="act_to" ref="act_open" />
            <field name="signal">idea_open</field>
        </record>

        <record model="workflow.transition" id="t2">
            <field name="act_from" ref="act_open" />
            <field name="act_to" ref="act_close" />
            <field name="signal">idea_close</field>
        </record>

        <record model="workflow.transition" id="t4">
            <field name="act_from" ref="act_open" />
            <field name="act_to" ref="act_cancel" />
            <field name="signal">idea_cancel</field>
        </record>

    </data>
</openerp>

Plus d'infos ici

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *