Utiliser les K2 Services depuis un smartobject

Savez-vous que la plateforme K2 expose des web services, appelés K2 Services ? Ces web services permettent à des applications tierces d’appeler le moteur de BPM afin de, entre autres, démarrer un processus ou faire avancer une tâche. Ce sont justement ces deux actions qui m’intéressent ici, car K2 ne propose pas de smartobject pour lancer un workflow ou répondre à une tâche ! (Un lecteur assidu me fera remarquer que oui, on sait démarrer un workflow depuis un smartobject comme cela est écrit dans un article précédent. Donc c’est surtout le moyen d’actionner une tâche qui me pousse à vous parler des K2 Services.)

Utiliser les K2 Services depuis un smartobject est très simple car la plateforme propose un Service Broker (= le moyen de se connecter) pour les Web Services (cf cet article). La solution est d’utiliser ce broker pour accéder aux K2 Services, puis de créer un smartobject !

La procédure en images

 On me signale dans mon oreillette que les web services asmx sont obsolètes. Je mets l’article à jour avec un autre mécanisme au plus vite !!

K2 Services 1
1. Lancer IIS, ouvrir l’arborescence K2, sélectionner K2Services, cliquer sur le lien “Browse Application”
K2 Services 2
2. Cliquer sur le lien WS.asmx
K2 Services 3
3. Copier l’URL de la page
K2 Services 4
4. Ajouter un service instance depuis le service broker “Endpoints WebService”
K2 Services 5
5. Enjoy
OK, mais pour quoi faire ?

L’intérêt de faire cela ? Faciliter la conception de projet de State Machine Workflow et de Case Management (demander à Google si vous ne connaissez pas ). Des prochains articles sont prévus pour illustrer cela en détail (soyez patient, j’ai promis un grand nombre d’articles !).

Plus concrètement, voici la liste des ServiceObjects, et de leur contenu (les  mettent en avant mes favoris) :

  1.  ExecuteActionBySerial
  2. ExecuteActionByWorklistItem
  3. OpenProcessInstance
  4.  OpenWorklist
  5. OpenWorklistItem
  6.  ReleaseWorklistItem
  7. StartNewProcessInstance
  8.  StartNewProcessInstanceScalar
  9. UpdateProcessInstance

¹ Les paramètres de méthodes (Method Parameters) jouent le rôle de propriétés mais pour une méthode uniquement. Pratique si vous faites un SmO pour toutes les ServiceObjects suivants.
² Les accolades {} présentent les objets sérialisés et les crochets [] précisent si plusieurs éléments peuvent être ajoutés…

 ExecuteActionBySerial

L’élément qui m’a poussé à rédiger cet article, il propose la méthode Execute qui prend en paramètre le numéro de série de la tâche et l’action à envoyer au workflow (et l’option Synchronize à initialiser de préférence à false). Impossible de faire plus simple !
Propriétés : 0
Méthodes : 1

Execute

Paramètres¹ : 3

  • Serial (Text) – Requis
  • Action (Text) – Requis
  • Sync (YesNo) – Requis
ExecuteActionByWorklistItem

Un autre ServiceObjects qui permet d’actionner une tâche. il est moins facile à utiliser car il utilise un paramètre à sérialiser.
Propriétés : 0
Méthodes : 1

Execute

Paramètres¹ : 3

  • WorklistItem {WorklistItem}² (Memo) – Requis
  • Action (Text) – Requis
  • Sync (YesNo) – Requis
OpenProcessInstance

Ce ServiceObjects permet de lire les informations d’une instance de processus. Passez votre chemin.
Propriétés : 16

  • Description (Text)
  • Metadata (Text)
  • DataField {DataField[]}² (Memo)
  • XmlField {XmlField[]}² (Memo)
  • ViewFlow (Text)
  • ExpectedDuration (Number)
  • Folder (Text)
  • Folio (Text)
  • FullName (Text)
  • Guid (Text)
  • ID (Text)
  • Name (Text)
  • Priority (Number)
  • StartDate (DateTime)
  • Status {ProcessStatus}² (Memo)
  • ProcessInstance {ProcessInstance}² (Memo)

Méthodes : 2

Read

Paramètres¹ : 1

  • ProcInstID (Number) – Requis

Sorties : 15

  • Description (Text)
  • Metadata (Text)
  • DataField {DataField[]}² (Memo)
  • XmlField {XmlField[]}² (Memo)
  • ViewFlow (Text)
  • ExpectedDuration (Number)
  • Folder (Text)
  • Folio (Text)
  • FullName (Text)
  • Guid (Text)
  • ID (Text)
  • Name (Text)
  • Priority (Number)
  • StartDate (DateTime)
  • Status {ProcessStatus}² (Memo)
Read To Serialized Item

Paramètres¹ : 1

  • ProcInstID (Number) – Requis

Sorties : 1

  • ProcessInstance {ProcessInstance}² (Memo)
 OpenWorklist

Cet élément permet de récupérer sa liste de tâches. Cela permet de réaliser une vue tasklist sur mesure.
Propriétés : 12

  • Data (Text)
  • Action {Action[]} (Memo)
  • ProcessInstance {ProcessInstance}² (Memo)
  • ActivityInstanceDestination {ActivityInstanceDestination}² (Memo)
  • DelegatedUser {Destination[]}² (Memo)
  • ActivityInstanceDestination1 {EventInstance}² (Memo)
  • AllocatedUser (Text)
  • ID (Number)
  • SerialNumber (Text)
  • Satus {WorklistStatus}² (Memo)
  • WorklistItem {WorklistItem}² (Memo)
  • WorklistItem[] {WorklistItem[]}² (Memo)
List

Paramètres¹ : 1

  • IncludeData (YesNo) – Requis

Sorties : 10

  • Data (Text)
  • Action {Action[]}² (Memo)
  • ProcessInstance {ProcessInstance}² (Memo)
  • ActivityInstanceDestination {ActivityInstanceDestination}² (Memo)
  • DelegatedUser {Destination[]}² (Memo)
  • ActivityInstanceDestination1 {EventInstance}² (Memo)
  • AllocatedUser (Text)
  • ID (Number)
  • SerialNumber (Text)
  • Satus {WorklistStatus}² (Memo)
List To Serialized Item

Paramètres¹ : 1

  • IncludeData (YesNo) – Requis

Sorties : 1

  • WorklistItem {WorklistItem}² (Memo)
Read To Serialized Item

Paramètres¹ : 1

  • IncludeData (YesNo) – Requis

Sorties : 1

  • WorklistItem[] {WorklistItem[]}² (Memo)
OpenWorklistItem

Permet de s’attribuer une tâche. Pourquoi pas…
Propriétés : 11

  • Data (Text)
  • Action {Action[]}² (Memo)
  • ProcessInstance {ProcessInstance}² (Memo)
  • ActivityInstanceDestination {ActivityInstanceDestination}² (Memo)
  • DelegatedUser {Destination[]}² (Memo)
  • ActivityInstanceDestination1 {EventInstance}² (Memo)
  • AllocatedUser (Text)
  • ID (Number)
  • SerialNumber (Text)
  • Satus {WorklistStatus}² (Memo)
  • WorklistItem {WorklistItem}² (Memo)

Méthodes : 2

Read

Paramètres¹ : 2

  • Serial (Text) – Requis
  • Sync (YesNo) – Requis

Sorties : 10

  • Data (Text)
  • Action {Action[]}² (Memo)
  • ProcessInstance {ProcessInstance}² (Memo)
  • ActivityInstanceDestination {ActivityInstanceDestination}² (Memo)
  • DelegatedUser {Destination[]}² (Memo)
  • ActivityInstanceDestination1 {EventInstance}² (Memo)
  • AllocatedUser (Text)
  • ID (Number)
  • SerialNumber (Text)
  • Satus {WorklistStatus}² (Memo)
Read To Serialized Item

Paramètres¹ : 2

  • Serial (Text) – Requis
  • Sync (YesNo) – Requis

Sorties : 1

  • WorklistItem {WorklistItem}² (Memo)
 ReleaseWorklistItem

Permet de libérer une tâche, pour que les autres destinataires puissent se l’attribuer.
Propriétés : 0
Méthodes : 1

Execute

Paramètres¹ : 1

  • Serial (Text) – Requis
StartNewProcessInstance

Permet de démarrer une nouvelle demande, en utilisant l’objet ProcessInstance sérialisé.
Propriétés : 16

  • ProcessInstance {ProcessInstance}² (Memo)
  • Description (Text)
  • Metadata (Text)
  • DataField {DataField[]}² (Memo)
  • XmlField {XmlField[]}² (Memo)
  • ViewFlow (Text)
  • ExpectedDuration (Number)
  • Folder (Text)
  • Folio (Text)
  • FullName (Text)
  • Guid (Text)
  • ID (Text)
  • Name (Text)
  • Priority (Number)
  • StartDate (DateTime)
  • Status {ProcessStatus}² (Memo)

Méthodes : 2

Read

Paramètres¹ : 1

  • Sync (YesNo) – Requis

Entrées : 1

  • ProcessInstance {ProcessInstance}² (Memo) – Requis

Sorties : 15

  • Description (Text)
  • Metadata (Text)
  • DataField {DataField[]}² (Memo)
  • XmlField {XmlField[]}² (Memo)
  • ViewFlow (Text)
  • ExpectedDuration (Number)
  • Folder (Text)
  • Folio (Text)
  • FullName (Text)
  • Guid (Text)
  • ID (Text)
  • Name (Text)
  • Priority (Number)
  • StartDate (DateTime)
  • Status {ProcessStatus}² (Memo)
Read To Serialized Item

Paramètres¹ : 1

  • Sync (YesNo) – Requis

Entrées : 1

  • ProcessInstance {ProcessInstance}² (Memo) – Requis

Sorties : 1

  • ProcessInstance {ProcessInstance}² (Memo)
 StartNewProcessInstanceScalar

Permet aussi de démarrer une nouvelle demande, plus simplement que le précédant car ne reposant que sur trois paramètres : le nom complet du processus, le folio et l’option Synchronize (à initialiser à false de préférence).
Propriétés : 1

  • Int64 (Number)

Méthodes : 1

Read

Paramètres¹ : 3

  • ProcessFullName (Text) – Requis
  • Folio (Text) – Requis
  • Sync (YesNo) – Requis

Sorties : 1

  • Int64 (Number)
UpdateProcessInstance

Permet de mettre à jour les données d’un processus. Passez votre chemin.

Propriétés : 0
Méthodes : 1

Execute

Paramètres¹ : 2

  • ProcessInstance {ProcessInstance}² (Memo) – Requis
  • Sync (YesNo) – Requis

¹ Les paramètres de méthodes (Method Parameters) sont …
² Les accolades {} présentent les objets sérialisés et les crochets [] précisent si plusieurs éléments peuvent être ajoutés…

C’est tout pour cette fois, cheers !

benjamin

Technical Specialist @t K2 France ----- Twitter : @benjaminbertram ----- LinkedIn : Benjamin Bertram

2 thoughts to “Utiliser les K2 Services depuis un smartobject”

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.