Newer
Older
web-services / data-computer / v1 / graph-segment.ini
@Nicolas Thouvenin Nicolas Thouvenin on 6 Nov 2 KB fix generator information field
# Entrypoint output format
mimeType = application/json

# OpenAPI Documentation - JSON format (dot notation)
post.operationId = post-v1-graph-segment
post.description = Création de segments à partir de tableaux
post.summary = Le corpus est transformé en liste de segment (source, target, weight) à partir d'un tableau simple ou d'un tableau imbriqué
post.tags.0 = data-computer
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

[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|string

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 un tableau
[fork/delegate/replace]
path = id
value = get('id')
path = value
value = get('value').thru(x => x && Array.isArray(x[0])?x:[x]).flatten().filter(Boolean)


# Step 2.1.2 (spécifique): Créer des tableaux de paires des segments (ou Bigramme)
[fork/delegate/graph]
path = value
identifier = id

[fork/delegate/debug]
text = apres

# 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
[shift]
[replace]
path = id
value = graph-segment
path = value
value = env('identifier')

[JSONString]
indent = env('indent')