Business Workflow : mettre un workflow en attente et le redémarrer via un événement spécifique

Lorsque vous développez un workflow, vous pouvez être amené à vouloir mettre en attente votre workflow pour le redémarrer ultérieurement lors d’un événement particulier (cela est par exemple le cas si vous souhaitez initier un workflow et le mettre immédiatement en attente à la création d’un document pour le redémarrer plus tard (à la validation du document, suivant une action manuelle utilisateur, etc.)).

Entrez en modification sur votre Business Object et créez l’événement permettant le redémarrage du workflow :

Renseignez les informations générales de l’événement :

Procédez à l’implémentation de l’événement :

L’événement est implémenté :

Entrez en modification sur votre workflow et créez votre étape d’attente :

Spécifiez l’élément de conteneur (correspondant généralement à l’objet BOR principal de votre workflow) ainsi que l’événement permettant le redémarrage du workflow) :

L’étape d’attente est ajoutée :

Une fois le workflow démarré, on peut voir que celui-ci est immédiatement en attente :

Nous pouvons vérifier cela via le protocole du workflow :

On récupère la clé du Business Object pour pouvoir le redémarrer :

Relance du workflow (via bapi SWE_EVENT_CREATE) :

Le workflow est relancé :

On peut vérifier cela via le protocole du workflow :

Exemple d’utilisation de la bapi « SWE_EVENT_CREATE »

REPORT  ylaunch_wkf.

PARAMETERS:
p_pernr     TYPE pernr_d,
p_tripno    TYPE reinr.

TYPES:
* Déclaration des types locaux :
BEGIN OF lty_objkey,
pernr     TYPE pernr_d, « Matricule
tripno    TYPE reinr,   « N° déplacement
END OF lty_objkey.

DATA:
* Déclaration des structures locales :
stl_objkey  TYPE lty_objkey,
* Déclaration des variables locales :
lv_objkey   LIKE sweinstcou-objkey.

stl_objkey-pernr = p_pernr.
stl_objkey-tripno = p_tripno.

lv_objkey = stl_objkey.

CALL FUNCTION ‘SWE_EVENT_CREATE’
EXPORTING
objtype = ‘BUS2089’
objkey = lv_objkey
event = ‘TRIPREQUESTED’
* CREATOR = ‘ ‘
* TAKE_WORKITEM_REQUESTER = ‘ ‘
* START_WITH_DELAY = ‘ ‘
* START_RECFB_SYNCHRON = ‘ ‘
* NO_COMMIT_FOR_QUEUE = ‘ ‘
* DEBUG_FLAG = ‘ ‘
* NO_LOGGING = ‘ ‘
* IDENT =
* IMPORTING
* EVENT_ID =
* TABLES
* EVENT_CONTAINER =
EXCEPTIONS
objtype_not_found = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE ‘Event Triggered’.
ENDIF.
COMMIT WORK.

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s