2012-07-19 2 views
0

워크 플로를 완벽하게 작성했습니다. 워크 플로 활동에 의해 호출되는 함수 내 문제는 인쇄 문을 두 번 실행할 수 있다는 것이다이워크 플로에서 함수를 두 번 호출하고이를 오버라이드하는 이유는 무엇입니까?

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

입니다. 이것은 함수가 두 번 실행되고 있음을 의미합니다. 그것은 write이기 때문에

그것은이

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

에 대한 확인이다.

다른 기록에 대해서는 동일한 기록에 대해 두 번 허용 할 수 없습니다.

왜 이런 일이 발생합니까? & 어떻게 무시합니까?

+0

가 나는 문제를 가지고 있지만 난 당신이 워크 플로 트리거가 당신이 얻는 이유 서비스 및 버튼 또는 코드의 다른 부분이 너무 동일한 기능을 트리거되는 워크 플로우 가능성이 될 수있는 원인이 유발하는 코드를 보지 않고 분명히 말할 수있다 두 번 인쇄하거나 가능성이있을 수 있습니다. 워크 플로가 잘못 사용자 정의되었습니다. –

+0

어떻게 디버깅합니까? – Jibin

+0

파이썬 pdb 모듈을 사용하고 모두 디버깅을하거나 의심스러운 장소에서 인쇄 문을 출력하고 누가 이중 트리거를 담당하는지 확인할 수 있습니다. –

답변

0

워크 플로우 코드 이해 및 디버깅은 새로운 OpenERP 모듈을 구축 할 때 가장 어려운 작업 중 하나입니다. 나는 tracing the code in Eclipse이 무슨 일이 있었는지를 알 수있는 유일한 방법이라는 것을 알게되었지만, 오랜 시간이 걸렸습니다.

다음은 워크 플로 전환을 요약하기 위해 작성한 SQL 쿼리입니다. 워크 플로 다이어그램을 인쇄 한 다음이 데이터를 다이어그램에 복사했습니다. 내가 아는 한, 다이어그램은 GTK 클라이언트 인 not the web client에서만 인쇄 할 수 있습니다. 원하는 워크 플로우로 화면을 연 다음 플러그인 메뉴에서 플러그인 실행을 선택하고 워크 플로우 인쇄를 두 번 클릭하십시오.

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 
관련 문제