User-Request-Connecteurs

This project is used to add request from external source to the User-Request-Manager service.

Free Universal Construction Kit

Architecture

Architecture for two sites

Swagger

Go to Swagger and use your api key for api request

Application configuration exemple

For each appplication, you nedd to define:

on service POST http://user-request-connector/api/admin/application or PUThttp://user-request-connector/api/admin/application/{applicationId}

{
      "sourceCode": "AGENCE_XXII_POISSY",
      "sourceName": "AGENCE_XXII_POISSY",
      "ownerApplication": "VILLAGILE-SIGNAL",
      "apiKey": "---",                                                  <== API KEY local qui sera fournit au client 
      "userRequestApiKey": "---",                                       <== API KEY de User Request récupéré lors de la création
      "contexts": [],
      "formatters": [                                                   <== liste des formatters
        {
          "requestType": "SIGNAL_ILLEGAL_DUMP",                         <== s'applique au requestType XXX
          "rules": [
            {
              "fromRequest": "{'id':'medium','label':'Moyen'}",         <== on définit de façon statique la valeur pour le champ  [data][volumeEstimation] de SIGNAL_ILLEGAL_DUMP
              "toRequest": "request['data']['volumeEstimatio'n]",
              "removeField": false
            },
            {
              "fromRequest": "newContext('CAMERA',request['data']['signalZone'],'Caméra : ' ~ request['data']['signalZone'])", <== on copie l'id de la caméra dans un context
              "toRequest": "request['context']",
              "removeField": false
            },
            {
              "fromRequest": "request['data']['eventDate']",            <== on copie l'id de la caméra dans un context
              "toRequest": "request['externalId']",
              "removeField": false
            },
            {
              "fromRequest": "'POISSY Agence XXII'",                    <== on définit la source de l'id de façon statique
              "toRequest": "request['externalSource']",
              "removeField": false
            },
            {
              "fromRequest": "request['data']['signalZone']",               <== on supprime les champs qui ne sont pas supporté par SIGNAL_ILLEGAL_DUMP 
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "{ 'id': 'others', 'label' : 'Autres' }",  <== on définit de façon statique la valeur pour le champ  [data][wasteType]  de SIGNAL_ILLEGAL_DUMP
              "toRequest": "request['data']['wasteType']",
              "removeField": false
            },
            {
              "fromRequest": "request['data']['sourceClientId']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "request['data']['subCategory']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "request['data']['sourceClientId']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "request['data']['signalFlow']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "request['data']['sourceContract']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "request['data']['eventDate']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "request['data']['category']",
              "toRequest": null,
              "removeField": true
            },
            {
              "fromRequest": "getContextByOwnerApplicationAndType(request, 'pce', 'toTransform', true) == null ?  doNothing() :  ( getContextByOwnerApplicationAndType(request, 'pce', 'toTransform')['id'] == 'contextGoodContext' ? newContext('newContextType','newContextId','newContextLabel') : doNothing() )", <= permet de transférer nue donnée depuis le externalContext d'une source vers le context courant
              "toRequest": "request['context']",
              "removeField": false
            },
                {
                  "fromRequest": "request['data']['requestDate'] == null ? date('Y-m-d') : request['data']['requestDate']", <== si pas de requestDate alors on attribue la date du jour
                  "toRequest": "request['data']['requestDate']",
                  "removeField": false
                },
          ]
        }
      ],
      "requestTypes": [
        "SIGNAL_ILLEGAL_DUMP"
      ]
    }

Synchronizer configuration example

This configuration define on what the synchronizer must be triggered :

{

    "requestTypes": [                                                                       <= Liste des type de Request applicable.
      "SIMPLE_REQUEST_TYPE"
    ],
    "requestTypeSwitchers": [                                                               <= liste des switch de requesType en sortie.
      { 
        "local":"SIMPLE_REQUEST_TYPE",
        "remote":"COLL4" 
      }
    ],
    "rules": [
      {
        "matchingRule": "isContextTypeAndIdExist(request['context'],'contract','1234567')"  <= expression language pour le test. Il doit TOUJOURS retourner une valeur Boolean, sinon le test est ignoré
      }
    ],
    "targetApiKey": "----"                                                                  <= Api Key utilisé pour communiquer avec le User request Connector d'en face.
  }