0

ワークフローを作成し、それが完全に機能するようにしました。ワークフローアクティビティによって呼び出される関数はこれです

  def employee_confirm(self, cr, uid, ids, context=None):  
    print "Entering >>>employee_confirm"
    return self.write(cr, uid, ids, {'state':'confirm'})

私の問題は、printステートメントが2回実行されることです。これは、関数が2回実行されていることを意味します。

これで大丈夫です

self.write(cr, uid, ids, {'state':'confirm'})

だからwrite

他のステートメントについては、同じレコードに対して2回許可することはできません。

なぜこれが起こっているのか、そしてこれをオーバーライドする方法は?

4

1 に答える 1

0

ワークフロー コードを理解してデバッグすることは、新しい OpenERP モジュールを構築する際の最も難しいタスクの 1 つです。Eclipse でコードをトレースすることが、何が起こっているかを確認する唯一の方法であることがわかりましたが、それには長い時間がかかりました。

ワークフローの移行を要約するために作成した SQL クエリを次に示します。ワークフロー図を印刷してから、このデータを図にコピーしました。私の知る限り、Web クライアントではなく、 GTK クライアントからのみダイアグラムを印刷できます。必要なワークフローの画面を開き、[プラグイン] メニューから [プラグインの実行] を選択し、[印刷ワークフロー] をダブルクリックします。

    select  wkf.name, 
            f.name || '(' || f.id || ')' as src, 
            f.kind,
            f.action as from_action,
            f.split_mode, 
            f.flow_start,
            t.name || '(' || t.id || ')' as dest, 
            t.kind as dest_kind,
            t.action as dest_action,
            t.join_mode, 
            t.flow_stop, 
            tr.*
    from wkf_transition tr
    join wkf_activity f
    on tr.act_from = f.id
    join wkf_activity t
    on tr.act_to = t.id
    join wkf
    on f.wkf_id = wkf.id
    order by wkf.name, f.name, t.name
于 2012-07-21T00:11:35.547 に答える