# Entrypoint output format mimeType = application/json # OpenAPI Documentation - JSON format (dot notation) post.operationId = post-v1-tree-segment post.description = Création de segments à partir de tableaux post.summary = Le corpus est transformé en liste de segments (source, target, weight) à partir d'un tableau simple ou d'un tableau imbriqué post.tags.0 = data-computer post.requestBody.content.application/x-gzip.schema.type = string post.requestBody.content.application/x-gzip.schema.format = binary post.requestBody.content.application/x-tar.schema.type = string post.requestBody.content.application/x-tar.schema.format = binary post.requestBody.required = true post.responses.default.description = Informations permettant de récupérer les données le moment venu post.parameters.0.description = Indenter le JSON résultant post.parameters.0.in = query post.parameters.0.name = indent post.parameters.0.schema.type = boolean post.parameters.1.description = URL pour signaler que le traitement est terminé post.parameters.1.in = header post.parameters.1.name = X-Webhook-Success post.parameters.1.schema.type = string post.parameters.1.schema.format = uri post.parameters.1.required = false post.parameters.2.description = URL pour signaler que le traitement a échoué post.parameters.2.in = header post.parameters.2.name = X-Webhook-Failure post.parameters.2.schema.type = string post.parameters.2.schema.format = uri post.parameters.2.required = false [env] path = generator value = tree-segment [use] plugin = basics plugin = analytics # Step 1 (générique): Charger le fichier corpus [delegate] file = charger.cfg # Step 1.1 (spécifique): Controle du premier element en supposant que les autres lui ressemblent [singleton] [singleton/validate] path = id rule = required path = value rule = required|array # Step 2 (générique): Traiter de manière asynchnore les items reçus [fork] standalone = true logger = logger.cfg # Step 2.1 (spécifique): Lancer un calcul sur tous les items reçus [fork/delegate] # Step 2.1.1 (spécifique): S'assurer d'avoir des tableaux de tableaux [fork/delegate/replace] path = id value = get('id') path = value value = get('value').thru(x => x && Array.isArray(x[0])?x:[x]) # Step 2.1.2 (spécifique): Créer des tableaux de paires des segments (ou Bigramme) [fork/delegate/segment] aggregate = false path = value identifier = id # Step 2.1.3 (spécifique): Regrouper les segments [fork/delegate/aggregate] # Step 2.1.4 (spécifique): Construire un résulat spécifique du calcul [fork/delegate/replace] path = source value = get('id.0') path = target value = get('id.1') path = weight value = get('value').size() path = origin value = get('value').uniq() [fork/transit] # Step 2.2 (générique): Enregister le résulat et signaler que le traitment est fini [fork/delegate] file = recorder.cfg # Step 3 : Renvoyer immédiatement un seul élément indiquant comment récupérer le résulat quand il sera prêt [delegate] file = recipient.cfg