OG-EP Référentiel
Raccourcis espace
OG-EP Référentiel OGEPREF

Cette page vise à présenter les fonctionnalités de diagnostic et de reprise offertes par le moteur BPM Camunda.

Surpervision

Console Cockpit

Le moteur intègre une console web de supervision et d'exploitation: cockpit - https://server:port/app/cockpit

Cette IHM donne accès à l'ensemble des processus BPMN et tables DMN déployées, en permettant de rechercher et administrer les exécutions en cours (retry, pause, resume, stop).

La doc de l'éditeur: https://docs.camunda.org/manual/7.11/webapps/cockpit/

Tableau de bord

Cet écran d’accueil présente une vue synthétique:

  • des process en cours d'exécution
  • des process en incident
  • des tâches manuelles ouvertes sur des process en cours

Liste des process

Cet écran présente les compteurs d'incidents et exécutions en cours par type de process:

Liste des exécutions d'un process

Cet écran présente les incidents et exécutions pour un type de process:

Nombre de process en cours sur la tâche  Nombre de process en incident sur la tâche

Détail d'une exécution de process

Cet écran permet notamment d'administrer une exécution de process, avec possibilité de relancer une tâche en erreur:

La stacktrace d'erreur est directement consultable:

Détails des workflows

ProcessusFonctionIdentifiant pour api REST (processDefinitionKey)
Sous workflow - Archivage de fichier
  • archive un fichier dans un  sous-dossier "/Traite"  si aucun autre process n'est en attente de traitement de celui-ci

archivage-fichier

Sous workflow - Attente d'exécution exclusive
  • suspend un process s'il y en a un autre en cours d’exécution avec la même clé. C'est notamment le cas des vacations qui sont exclusives: une seule peut s'exécuter à la fois

attente-execution-exclusive

Sous workflow - Attente d'exécution exclusive prioritaire
  • idem que ci-dessus, hormis que l'attente est prioritaire. C'est le cas de la vacation financière

attente-execution-exclusive-prioritaire 

Sous workflow - Attente de fichier
  • recherche un fichier dans un répertoire, en filtrant sur son nom et/ou contenu, en activant une alarme d'une heure avant erreur fonctionnelle

attente-fichier 

Sous workflow - Audit des soldes
  • récupère le solde de la totalité des comptes pour envoi au puit de données

audit-soldes 

Sous workflow - BankTransfer - Génération de virements
  • génère un fichier de virements via le micro-service BankTranfer

banktransfer-generation-virements 

Sous workflow - BankTransfer - Normalisation de virements entrants
  • normalise un fichier de virements entrants, via le micro-service BankTranfer

banktransfer-normalisation-virements 

Actu commerçants
  • se déclenche tous les jours à 19h
  • met à jour le référentiel local des commerçants si éventuel nouveau fichier d'actu des commerçants en provenance du mainframe
actu-commercants 
Calcul de Rolling Reserve
  • calcule le montant de rolling-reserve d'un commerçant

calcul-rolling-reserve 

Calcul de scoring KYC
  • calcule le score KYC d'un commerçant

calcul-scoring-kyc

Déclencheur de vacations de règlement
  • se déclenche toutes les 30 minutes
  • lance les vacations de règlement (virements entrants, transactions ou impayés ) s'il y a eu des nouveaux mouvements sur le compte de règlement

 declencheur-vacations-reglement

Déclencheur de vacation de règlement des impayés Monext
  • se déclenche toutes les 30 minutes
  • lancer la vacation de règlement des impayés imputables à Monext si un fichier CRE MBA correspondant est détecté

 declencheur-vacation-reglement-impayes-monext 

Sonde API Arkea
  • récupère les soldes de la totalité des comptes via apis Akea et trace le résultat pour la supervision

 sonde-api-arkea 

Vacation de créances
  • récupère les créances non soldées des commerçants
  • calcule le montant de créance pour chaque commerçant
  • mouvemente les comptes de paiement chez Arkea
  • génère un fichier de virement de clearing, via BankTransfer
  • envoie les détails au puit des données
 vacation-creances
Vacation financière vacation-financiere
Vacations de règlement des transactions
  • calculer le montant des transactions et commission et génère un fichier de virement correspondant, via BankTransfer
  • mouvemente les comptes de paiement chez Arkea
  • envoie les détails au puit des données
vacation-reglement-transactions
Vacation de règlement des virements entrants
  • normaliser les virements entrants, via BankTransfer
  • mouvemente les comptes de paiement chez Arkea
  • envoie les détails au puit des données
vacation-reglement-virements
Vacation de règlement des impayés
  • calculer le montant d'impayés et frais par commerçant et génère un fichier de virement correspondant, via BankTransfer
  • calculer les éventuels créances nécessaires et génère un fichier de virement correspondant, via BankTransfer
  • mouvemente les comptes de paiement chez Arkea
  • envoie les détails au puit des données
vacation-reglement-impayes
Vacation de règlement des impayés Monext 
  • calculer le montant d'impayés et frais à rembourser par commerçant et génère un fichier de virement correspondant, via BankTransfer
  • mouvemente les comptes de paiement chez Arkea
  • envoie les détails au puit des données
vacation-reglement-impayes-monext
Vacation technique 
  • se déclenche toutes les heures
  • récupère les soldes et mouvements de la totalité des comptes via apis Akea
  • envoie les résultats au puit des données
vacation-technique
Virements entrants - Traitement de recall
  • génère un fichier de réponse (CAMT029) à une demande de recall (CAMT056) de virements entrants
virements-entrants-traitement-recall
Workflow manuel - Déverrouillage d’exécution exclusive de vacation 
  • débloque les vacations en attente de la libération du verrou 'vacation' non libéré par une vacation en cours. A n'utiliser qu'en cas d'urgence
deverrouillage-execution-exclusive-vacation 
Workflow manuel - Virement sortants- Traitement erreur totale
  • récupère le fichier PSR PACS002 et ajout des ordres dans BankTrf .
  • Impute les mouvements en erreur via api Arkea.
  • envoie les rédultats au puit de donnée.
virements-sortants-traitement-erreur-totale
Workflow manuel - Demande de statut RSU
  • récupère le fichier RSU PACS028 et demande de statut à BankTrf
  • réception d'une réponse négative CAMT029
  • envoie le fichier au puits de données.
get-status-rro


Administration des workflows

Le moteur expose une api rest qui permet de :

  • consulter les exécutions en cours

Nombre de workflows en cours
curl https://HOST:PORT/rest/process-instance/count?active=true -H 'Authorization: Basic BASE_64(LOGIN:PWD)'

Exemple: curl -k https://epa1r1.dc1lan.local:8444/rest/process-instance/count?active=true -H 'Authorization: Basic ZGVtbzpkZW1v'
 => {"count":19}

Doc: https://docs.camunda.org/manual/7.11/reference/rest/execution/

Pour l'encodage en base 64 des identifiants d'authentification: https://www.base64encode.org/

  • consulter les exécutions historisées

Exécutions de workflows historisées
curl -X POST https://HOST:PORT/rest/history/process-instance -H 'Authorization: Basic BASE_64(LOGIN:PWD)' -H 'Content-Type: application/json' -d 
'{
  "startedAfter": "START_TIME",
  "startedBefore": "END_TIME",
  "processDefinitionKeyNotIn":["NOT_SEARCHED"],
  "sorting":[
    {
      "sortBy": "startTime",
      "sortOrder": "asc"
    }
  ]
}'

Exemple: curl -X POST https://epa1r1.dc1lan.local:8444/rest/history/process-instance -H 'Authorization: Basic ZGVtbzpkZW1v' -H 'Content-Type: application/json' -d 
'{
  "startedAfter": "2020-01-08T00:00:00.000+0200",
  "startedBefore": "2020-01-28T23:59:59.000+0200",
  "processDefinitionKeyNotIn":["sonde-api-arkea","vacation-technique","declencheur-vacations-reglement","declencheur-vacation-reglement-impayes-monext"],
  "sorting":[
    {
      "sortBy": "startTime",
      "sortOrder": "asc"
    }
  ]
}'
=> [
    {
        "id": "00d62e10-31f0-11ea-93c5-7c2a3123212b",
        "businessKey": null,
        "processDefinitionId": "vacation-financiere:7:0a9583c2-3165-11ea-93c5-7c2a3123212b",
        "processDefinitionKey": "vacation-financiere",
        "processDefinitionName": "Vacation financière",
        "processDefinitionVersion": 7,
        "startTime": "2020-01-08T09:22:26.000+0100",
        "endTime": "2020-01-08T10:22:26.000+0100",
        "removalTime": null,
        "durationInMillis": 3600000,
        "startUserId": null,
        "startActivityId": "StartEvent_1",
        "deleteReason": null,
        "rootProcessInstanceId": "00d62e10-31f0-11ea-93c5-7c2a3123212b",
        "superProcessInstanceId": null,
        "superCaseInstanceId": null,
        "caseInstanceId": null,
        "tenantId": null,
        "state": "COMPLETED"
    }
]

Doc: https://docs.camunda.org/manual/7.11/reference/rest/history/process-instance/post-process-instance-query/

  • consulter les incidents techniques en cours

Nombre d'incidents en cours
curl https://HOST:PORT/rest/incident/count -H 'Authorization: Basic BASE_64(LOGIN:PWD)'

Exemple: curl -k https://epa1r1.dc1lan.local:8444/rest/incident/count -H 'Authorization: Basic ZGVtbzpkZW1v' 
=> {"count":25}

Doc: https://docs.camunda.org/manual/7.11/reference/rest/incident/

  • consulter les incidents techniques par workflow

Il faut séquencer 2 requêtes:

1. Récupérer l'identifiant de la dernière version du workflow
curl https://HOST:PORT/rest/process-definition/key/{processDefinitionKey} -H 'Authorization: Basic BASE_64(LOGIN:PWD)'

Exemple: curl -k https://epa1r1.dc1lan.local:8444/rest/process-definition/key/actu-commercants -H 'Authorization: Basic ZGVtbzpkZW1v' 
=> {"id":"0a913df0-3165-11ea-93c5-7c2a3123212b"...}
=> processDefinitionId = "0a913df0-3165-11ea-93c5-7c2a3123212b"

Doc: https://docs.camunda.org/manual/7.11/reference/rest/process-definition/get/

2. Récupérer les incidents associés
curl https://HOST:PORT/rest/incident?processDefinitionId={processDefinitionId} -H 'Authorization: Basic BASE_64(LOGIN:PWD)'

Exemple: curl -k https://epa1r1.dc1lan.local:8444/rest/incident?processDefinitionId=0a913df0-3165-11ea-93c5-7c2a3123212b -H 'Authorization: Basic ZGVtbzpkZW1v' 

Doc: https://docs.camunda.org/manual/7.11/reference/rest/incident/get-query/

  • suspendre / réactiver un workflow

Suspendre un workflow
curl -X PUT https://HOST:PORT/rest/process-definition/key/{processDefinitionKey}/suspended -H 'Authorization: Basic BASE_64(LOGIN:PWD)' -H 'Content-Type: application/json' -d '{"suspended": true,"includeProcessInstances": true}'

Exemple: curl -X PUT https://epa1r1.dc1lan.local:8444/rest/process-definition/key/actu-commercants/suspended -H 'Authorization: Basic ZGVtbzpkZW1v' -H 'Content-Type: application/json' -d '{"suspended": true,"includeProcessInstances": true}'

Doc: https://docs.camunda.org/manual/7.11/reference/rest/process-definition/put-activate-suspend-by-key/

  • forcer la reprise d'un workflow en incident à une étape particulière

Reprise de workflow en incident
curl -X POST https://HOST:PORT/rest/process-instance/{processInstanceId}/modification -H 'Authorization: Basic BASE_64(LOGIN:PWD)' -H 'Content-Type: application/json' -d '{"instructions":[{"type":"startBeforeActivity","activityId":{activityId}}]}'

Il y a possibilité de positionner des variables, cf exemple ci-dessous.

Exemple: curl -X POST https://epa1r1.dc1lan.local:8444/rest/process-instance/5f22b40d-21ad-11ea-bc34-7c2a3123212b/modification -H 'Authorization: Basic ZGVtbzpkZW1v' -H 'Content-Type: application/json' -d '{
  "instructions": [
    {
      "type": "startBeforeActivity",
      "activityId": "get-solde",
      "variables": {
        "accountId": {
          "value": "1A18380001"
        }
      }
    }
  ]
}'

Doc: https://docs.camunda.org/manual/7.11/user-guide/process-engine/process-instance-modification/

https://docs.camunda.org/manual/7.11/reference/rest/process-instance/post-modification/

Logs

Le moteur s'appuie sur log4j2 pour la génération des logs.

Le fichier de configuration se trouve à l'emplacement standard des MBSLite:     jfrm-lsol-mbs-lite/conf/log4j2.xml

Il faut activer la catégorie traces.functionnal.app en INFO

Les logs remarquables:

NiveauChaine textuelleDescription
INFOstart-{TYPE_VACATION} - correlationId={CORRELATION_ID}Démarrage de vacation, avec identifiant de process
INFOend-{TYPE_VACATION} - correlationId={CORRELATION_ID}Fin de vacation, avec identifiant de process
ERRORend-with-error-{TYPE_VACATION} - correlationId={CORRELATION_ID} - errorCode={ERROR_CODE} - errorMessage={ERROR_MESSAGE}Fin de vacation en erreur fonctionnelle qui va nécessiter une analyse approfondie
ERRORincident - correlationId={CORRELATION_ID}

Erreur technique qui va suspendre l'exécution du process et va nécessiter une relance manuelle, une fois la cause de l'erreur corrigée.

Nb1: par défaut le moteur va retenter jusqu'à 2 fois d'exécuter la tâche en erreur, avec un délai d'environ 500ms

Nb2: les exécutions de vacation doivent être exclusives (une seule vacation à la fois). Si l'une est en incident les autres ne pourront s'exécuter tant qu'elle n'aura pas été corrigée

INFOcheckApiArkea - status:OK - averageResponseTime:250

Check périodique (toutes les 10min) de l'accès aux soldes de l'ensemble des comptes via appel à l'api Arkea.

Le status est OK ou KO si l'un des soldes n'est pas remonté

Le temps de réponse moyen est en millisecondes

Les types de vacation:

TYPE_VACATIONDescription
declencheur-vacations-reglementDéclencheur de vacations de règlement
vacation-reglement-virementsVacation de règlement de virements entrants
vacation-reglement-transactionsVacation de règlement de transactions
vacation-reglement-impayesVacation de règlement d'impayés
vacation-reglement-impayes-monextVacation de règlement d'impayés imputables à Monext
vacation-creancesVacation de clearing de créances
vacation-financiereVacation financière de sortie de cash
vacation-techniqueVacation technique qui publie les soldes et transactions des comptes vers le puit de données

Les erreurs fonctionnelles:

ERROR_CODEDescription
no-file-after-delayLe fichier à faire traiter par une vacation (cre mba ou virements entrants) n'a pu être trouvé dans un délai de 1h après la détection du mouvement sur le compte de règlement
no-ack-banktransfer-after-delayLa réponse asynchrone en provenance du microservice BankTransfer n'a pas été reçue malgré un délai de 1h 
banktransfer-ack-errorLa réponse asynchrone en provenance du microservice BankTransfer est en erreur
inconsistent-amountLe montant du mouvement sur le compte de règlement diffère de la somme contenue le fichier à traiter (cre mba ou virements entrants)
unknown-merchantL'un des virements entrants est à destination d'un compte inconnu du référentiel commerçant (table MERCHANT_CONTRACT)
  • Aucune étiquette

Commentaire

  1. Jerome BOUCHTER (Externe) dit :

    id pour déclenchement VMC: declencheur-vacations-reglement-vmc

Écrire un commentaire...
OG-EP Référentiel OGEPREF