Workflow: Business Klassen implementieren

Alle Fragen rund um Basisthemen

Workflow: Business Klassen implementieren

Postby Tim1419 » Tue May 21, 2013 7:31 am

Hallo zusammen,

von einer Transaktion aus starte ich meinen Workflow und übergebe diesem eine Seriennummer, der Workflow soll jetzt an bestimmte Rollen ein Workitem schicken welches beim öffnen wieder eine Transaktion öffnet und die Seriennummer vom Anfang übergibt. Soweit so gut, bis hier hin habe ich es so zum laufen gebracht aber jetzt komme ich nicht weiter. Der Workflow befindet sich nun in Prozessschritt 2 und hat wie bereits gesagt ein Workitem verschickt (welches eine Aufgabe enthält und als Objektkategorie eine ABAP Workflow Klasse und eine entsprechende Methode eingestellt ist, diese Methode ruft bei mir dann über "Call Transaction..." meine TA auf).
Was ich jetzt umsetzen will ist das wenn der Bearbeiter über dieses Workitem in die Transaktion gelangt dort nun eine bestimmte Aktion ausführen muss (einen Button klicken etc..) und dann erst der Workflow wieder weiterläuft um in den Prozessschritt 3 zu gelangen. Dafür benötige ich bei Schritt 2 (Aktivität 2) ein beendendes Ereignis welches in der Transaktion dann irgendwann ausgelöst werden muss. Das Problem das ich nun habe ist folgendes: Theoretisch kann man von der Transaktion aus beliebig viele Workflows starten, immer zusammenhängend mit einer Seriennummer. Wenn der Benutzer nun sein erhaltenes Workitem aufruft, mit entsprechender Seriennummer im WF-Container, dann soll anschließend wenn er sich in der Transaktion befindet und das weiterführende Ereignis auslöst, auch nur der Workflow weiterlaufen welcher mit der Seriennummer zusammenhängt, die beim Workitem mitgeliefert wurde.

Die Workflow Klasse die ich der ersten Workflow Aufgabe zugewiesen habe besitzt bislang nur eine statische Methode für den Aufruf der Transaktion, und die LPOR und find_by_lpor Methoden sind noch nicht implementiert (bzw leer implementiert) aber ich denke mir das ich für mein Problem richtige Instanzen dieser WF-Klasse benötige, oder?
Ich habe versucht diese zu implementieren und zum laufen zu bringen aber nur mit mäßigem Erfolg.
Hier ist mal der Code den ich probiert habe:
BI_PERSISTENT~FIND_BY_LPOR
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  DATA: lv_id TYPE zssl_sachnummer.
  2.  DATA: lo_zssl TYPE REF TO zssl_wf_class.
  3.  
  4.  lv_id = lpor-instid.
  5.  
  6.   TRY.
  7.      CREATE OBJECT lo_zssl
  8.       EXPORTING
  9.           ID = lv_id.
  10.      CATCH CX_BO_ERROR.
  11.        EXIT.
  12.   ENDTRY.
  13.  
  14.   result = lo_zssl.
  15.  
GeSHi ©


BI_PERSISTENT~LPOR
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. result = me->m_lpor.
  2.  
GeSHi ©


CONSTRUCTOR
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. me->m_lpor-CATID = 'CL'.
  2. me->m_lpor-TYPEID = 'ZSSL_WF_CLASS'.
  3. me->m_lpor-INSTID = me->sachnummer.
  4.  
GeSHi ©

(Der Code stammt aus dem SAP Buch Workflow-Management)

DIe Klasse ZSSL_WF_CLASS hat noch die Funktion CALLTA welche einen Übergabeparameter besitzt (die Sachnummer) und dann nur dafür da ist die TA aufzurufen.

Ich habe das ganze mal debuggt und gesehen das zu aller erst immer die Funktion FIND_BY_LPOR aufgerufen wird und von dort aus soll dann ja eine eine Instanz der WF Klasse erstellt werden. Nach meinem Verständnis nach, müsste dann zu diesem Zeitpunkt die Sachnummer aus dem WF bekannt sein um sie bei CREATE OBJECT ... dem Konstruktor mit zugeben und bei der Instanz abzuspeichern, als Klassenattribut oder so. Ist das in etwa so richtig? Wenn ja ist wäre meine nächste Frage dann wie ich in der MEthode find_by_lpor an die Sachnummer herankomme?
Wie gesagt in der CALLTA Methode wird sie ja als Parameter übergeben aber das bringt mir ja in dem Fall nichts.
Ich hoffe wirklich das sich jemand mit diesem Thema auskennt und mir weiterhelfen kann. Wie gesagt fall ich mit meinem Ansatz total auf dem Holzweg sein sollte, kann man das ja vielleicht auch anders realisieren?
Schon mal Danke im Vorraus
Gruß Felix
Tim1419
.
.
 
Posts: 2
Joined: Tue May 21, 2013 7:31 am

Return to Basis

Who is online

Users browsing this forum: No registered users and 6 guests