{"configuration":{},"description":"C4 model - coexistence and Task Server bridge","documentation":{},"id":3,"lastModifiedAgent":"structurizr-ui","lastModifiedDate":"2025-11-22T14:52:50Z","lastModifiedUser":"structurizr","model":{"people":[{"description":"Persona que interactúa con Flowise/Flowable for human tasks","id":"1","name":"End User","properties":{"structurizr.dsl.identifier":"user"},"relationships":[{"description":"Interacts with (views tasks, responds)","destinationId":"13","id":"17","sourceId":"1","tags":"Relationship"},{"description":"Interacts with (views tasks, responds)","destinationId":"12","id":"18","linkedRelationshipId":"17","sourceId":"1"}],"tags":"Element,Person"},{"description":"Operador / administrador","id":"2","name":"Operator","properties":{"structurizr.dsl.identifier":"operator"},"relationships":[{"description":"Admin / monitors tasks","destinationId":"13","id":"19","sourceId":"2","tags":"Relationship"},{"description":"Admin / monitors tasks","destinationId":"12","id":"20","linkedRelationshipId":"19","sourceId":"2"}],"tags":"Element,Person"}],"softwareSystems":[{"containers":[{"description":"Ejecuta procesos BPMN, expone REST API y task service","documentation":{},"id":"4","name":"Flowable Engine","properties":{"structurizr.dsl.identifier":"api"},"tags":"Element,Container","technology":"Java"},{"description":"Almacena instancias de procesos, tareas y metadata","documentation":{},"id":"5","name":"Flowable Database","properties":{"structurizr.dsl.identifier":"db"},"tags":"Element,Container","technology":"Postgres / MySQL"}],"description":"Motor BPMN 2.0 para workflows, human tasks y DMN","documentation":{},"id":"3","name":"Flowable","properties":{"structurizr.dsl.identifier":"flowable"},"relationships":[{"description":"Calls ODE for legacy orchestrations (REST/SOAP) (optional)","destinationId":"7","id":"36","sourceId":"3","tags":"Relationship"},{"description":"Calls ODE for legacy orchestrations (REST/SOAP) (optional)","destinationId":"6","id":"37","linkedRelationshipId":"36","sourceId":"3"},{"description":"Uses bridge to coordinate BPEL-origin tasks (optional)","destinationId":"9","id":"38","sourceId":"3","tags":"Relationship"}],"tags":"Element,Software System"},{"containers":[{"description":"Ejecuta procesos BPEL, soporta partnerLinks y persistencia","documentation":{},"id":"7","name":"ODE BPEL Engine","properties":{"structurizr.dsl.identifier":"odeEngine"},"relationships":[{"description":"Invokes partnerLink to create human task (SOAP/HTTP)","destinationId":"9","id":"27","sourceId":"7","tags":"Relationship"}],"tags":"Element,Container","technology":"Java"},{"description":"Almacena instancias de proceso BPEL y correlation sets","documentation":{},"id":"8","name":"ODE Persistence","properties":{"structurizr.dsl.identifier":"odeStore"},"tags":"Element,Container","technology":"RDBMS"}],"description":"Motor BPEL 2.0 para orquestación legacy (WSDL/SOAP)","documentation":{},"id":"6","name":"Apache ODE","properties":{"structurizr.dsl.identifier":"ode"},"relationships":[{"description":"Invokes partnerLink to create human task (SOAP/HTTP)","destinationId":"9","id":"28","linkedRelationshipId":"27","sourceId":"6"}],"tags":"Element,Software System"},{"containers":[{"description":"Endpoint HTTP/SOAP que ODE invoca; normaliza mensajes y gestiona colas","documentation":{},"id":"10","name":"Task Server Adapter","properties":{"structurizr.dsl.identifier":"tsAdapter"},"tags":"Element,Container","technology":"Node/Java"},{"description":"Persistencia y reintentos de tareas (correlationId, estado, payload)","documentation":{},"id":"11","name":"Task Queue / State Store","properties":{"structurizr.dsl.identifier":"tsQueue"},"tags":"Element,Container","technology":"Redis / DB"}],"description":"Bridge/adapter que convierte requests BPEL->human tasks y reinyecta respuestas","documentation":{},"id":"9","name":"Task Server for ODE","properties":{"structurizr.dsl.identifier":"taskserver"},"relationships":[{"description":"Creates task, notifies UI / webhook","destinationId":"13","id":"29","sourceId":"9","tags":"Relationship"},{"description":"Creates task, notifies UI / webhook","destinationId":"12","id":"30","linkedRelationshipId":"29","sourceId":"9"},{"description":"Creates Flowable user task (optional integration)","destinationId":"3","id":"31","sourceId":"9","tags":"Relationship"},{"description":"Calls reply/callback to correlate and resume BPEL process","destinationId":"7","id":"34","sourceId":"9","tags":"Relationship"},{"description":"Calls reply/callback to correlate and resume BPEL process","destinationId":"6","id":"35","linkedRelationshipId":"34","sourceId":"9"}],"tags":"Element,Software System"},{"containers":[{"description":"UI + API para mostrar tareas, aceptar respuestas, conectar a LLM","documentation":{},"id":"13","name":"Flowise App","properties":{"structurizr.dsl.identifier":"flowiseApp"},"relationships":[{"description":"Optionally creates/updates Flowable user tasks (REST API)","destinationId":"3","id":"21","sourceId":"13","tags":"Relationship"},{"description":"Calls for suggestions / summarization","destinationId":"15","id":"23","sourceId":"13","tags":"Relationship"},{"description":"Calls for suggestions / summarization","destinationId":"14","id":"24","linkedRelationshipId":"23","sourceId":"13"},{"description":"Posts user result (approve/reject + payload)","destinationId":"9","id":"32","sourceId":"13","tags":"Relationship"}],"tags":"Element,Container","technology":"Node/JS"}],"description":"Interfaz conversacional / UI para interacción humana; integra LLM suggestions","documentation":{},"id":"12","name":"Flowise","properties":{"structurizr.dsl.identifier":"flowise"},"relationships":[{"description":"Optionally creates/updates Flowable user tasks (REST API)","destinationId":"3","id":"22","linkedRelationshipId":"21","sourceId":"12"},{"description":"Calls for suggestions / summarization","destinationId":"15","id":"25","linkedRelationshipId":"23","sourceId":"12"},{"description":"Calls for suggestions / summarization","destinationId":"14","id":"26","linkedRelationshipId":"23","sourceId":"12"},{"description":"Posts user result (approve/reject + payload)","destinationId":"9","id":"33","linkedRelationshipId":"32","sourceId":"12"}],"tags":"Element,Software System"},{"containers":[{"description":"Endpoint de inference LLM, modelo local","documentation":{},"id":"15","name":"LocalAI Runtime","properties":{"structurizr.dsl.identifier":"llm"},"tags":"Element,Container","technology":"C++/Go/Python"},{"description":"Almacena los modelos e índices","documentation":{},"id":"16","name":"Model Store","properties":{"structurizr.dsl.identifier":"modelStore"},"tags":"Element,Container","technology":"Filesystem / Object Storage"}],"description":"Motor LLM local para sugerencias, resúmenes y generación de contenido","documentation":{},"id":"14","name":"LocalAI","properties":{"structurizr.dsl.identifier":"localai"},"tags":"Element,Software System"},{"description":"Kubernetes, networking, storage","documentation":{},"id":"39","name":"InfrastructureCloud","properties":{"structurizr.dsl.identifier":"cloud"},"relationships":[{"description":"Hosts / deploys","destinationId":"3","id":"40","sourceId":"39","tags":"Relationship"},{"description":"Hosts / deploys","destinationId":"6","id":"41","sourceId":"39","tags":"Relationship"},{"description":"Hosts / deploys","destinationId":"9","id":"42","sourceId":"39","tags":"Relationship"},{"description":"Hosts / deploys","destinationId":"12","id":"43","sourceId":"39","tags":"Relationship"},{"description":"Hosts / deploys","destinationId":"14","id":"44","sourceId":"39","tags":"Relationship"}],"tags":"Element,Software System,Infra"}]},"name":"Flowable + ODE + Flowise + LocalAI Architecture","properties":{"structurizr.inspection.info":"0","structurizr.inspection.ignore":"0","structurizr.inspection.error":"51","structurizr.inspection.warning":"0","structurizr.dsl":"d29ya3NwYWNlICJGbG93YWJsZSArIE9ERSArIEZsb3dpc2UgKyBMb2NhbEFJIEFyY2hpdGVjdHVyZSIgIkM0IG1vZGVsIC0gY29leGlzdGVuY2UgYW5kIFRhc2sgU2VydmVyIGJyaWRnZSIgew0KDQogIG1vZGVsIHsNCg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICMgUGVyc29uYXMNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICB1c2VyID0gcGVyc29uICJFbmQgVXNlciIgIlBlcnNvbmEgcXVlIGludGVyYWN0w7phIGNvbiBGbG93aXNlL0Zsb3dhYmxlIGZvciBodW1hbiB0YXNrcyINCiAgICBvcGVyYXRvciA9IHBlcnNvbiAiT3BlcmF0b3IiICJPcGVyYWRvciAvIGFkbWluaXN0cmFkb3IiDQoNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAjIFNpc3RlbWFzIFByaW5jaXBhbGVzIChTb2Z0d2FyZSBTeXN0ZW1zKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGZsb3dhYmxlID0gc29mdHdhcmVTeXN0ZW0gIkZsb3dhYmxlIiAiTW90b3IgQlBNTiAyLjAgcGFyYSB3b3JrZmxvd3MsIGh1bWFuIHRhc2tzIHkgRE1OIiB7DQogICAgICBhcGkgPSBjb250YWluZXIgIkZsb3dhYmxlIEVuZ2luZSIgIkVqZWN1dGEgcHJvY2Vzb3MgQlBNTiwgZXhwb25lIFJFU1QgQVBJIHkgdGFzayBzZXJ2aWNlIiAiSmF2YSINCiAgICAgIGRiID0gY29udGFpbmVyICJGbG93YWJsZSBEYXRhYmFzZSIgIkFsbWFjZW5hIGluc3RhbmNpYXMgZGUgcHJvY2Vzb3MsIHRhcmVhcyB5IG1ldGFkYXRhIiAiUG9zdGdyZXMgLyBNeVNRTCINCiAgICB9DQoNCiAgICBvZGUgPSBzb2Z0d2FyZVN5c3RlbSAiQXBhY2hlIE9ERSIgIk1vdG9yIEJQRUwgMi4wIHBhcmEgb3JxdWVzdGFjacOzbiBsZWdhY3kgKFdTREwvU09BUCkiIHsNCiAgICAgIG9kZUVuZ2luZSA9IGNvbnRhaW5lciAiT0RFIEJQRUwgRW5naW5lIiAiRWplY3V0YSBwcm9jZXNvcyBCUEVMLCBzb3BvcnRhIHBhcnRuZXJMaW5rcyB5IHBlcnNpc3RlbmNpYSIgIkphdmEiDQogICAgICBvZGVTdG9yZSA9IGNvbnRhaW5lciAiT0RFIFBlcnNpc3RlbmNlIiAiQWxtYWNlbmEgaW5zdGFuY2lhcyBkZSBwcm9jZXNvIEJQRUwgeSBjb3JyZWxhdGlvbiBzZXRzIiAiUkRCTVMiDQogICAgfQ0KDQogICAgdGFza3NlcnZlciA9IHNvZnR3YXJlU3lzdGVtICJUYXNrIFNlcnZlciBmb3IgT0RFIiAiQnJpZGdlL2FkYXB0ZXIgcXVlIGNvbnZpZXJ0ZSByZXF1ZXN0cyBCUEVMLT5odW1hbiB0YXNrcyB5IHJlaW55ZWN0YSByZXNwdWVzdGFzIiB7DQogICAgICB0c0FkYXB0ZXIgPSBjb250YWluZXIgIlRhc2sgU2VydmVyIEFkYXB0ZXIiICJFbmRwb2ludCBIVFRQL1NPQVAgcXVlIE9ERSBpbnZvY2E7IG5vcm1hbGl6YSBtZW5zYWplcyB5IGdlc3Rpb25hIGNvbGFzIiAiTm9kZS9KYXZhIg0KICAgICAgdHNRdWV1ZSA9IGNvbnRhaW5lciAiVGFzayBRdWV1ZSAvIFN0YXRlIFN0b3JlIiAiUGVyc2lzdGVuY2lhIHkgcmVpbnRlbnRvcyBkZSB0YXJlYXMgKGNvcnJlbGF0aW9uSWQsIGVzdGFkbywgcGF5bG9hZCkiICJSZWRpcyAvIERCIg0KICAgIH0NCg0KICAgIGZsb3dpc2UgPSBzb2Z0d2FyZVN5c3RlbSAiRmxvd2lzZSIgIkludGVyZmF6IGNvbnZlcnNhY2lvbmFsIC8gVUkgcGFyYSBpbnRlcmFjY2nDs24gaHVtYW5hOyBpbnRlZ3JhIExMTSBzdWdnZXN0aW9ucyIgew0KICAgICAgZmxvd2lzZUFwcCA9IGNvbnRhaW5lciAiRmxvd2lzZSBBcHAiICJVSSArIEFQSSBwYXJhIG1vc3RyYXIgdGFyZWFzLCBhY2VwdGFyIHJlc3B1ZXN0YXMsIGNvbmVjdGFyIGEgTExNIiAiTm9kZS9KUyINCiAgICB9DQoNCiAgICBsb2NhbGFpID0gc29mdHdhcmVTeXN0ZW0gIkxvY2FsQUkiICJNb3RvciBMTE0gbG9jYWwgcGFyYSBzdWdlcmVuY2lhcywgcmVzw7ptZW5lcyB5IGdlbmVyYWNpw7NuIGRlIGNvbnRlbmlkbyIgew0KICAgICAgbGxtID0gY29udGFpbmVyICJMb2NhbEFJIFJ1bnRpbWUiICJFbmRwb2ludCBkZSBpbmZlcmVuY2UgTExNLCBtb2RlbG8gbG9jYWwiICJDKysvR28vUHl0aG9uIg0KICAgICAgbW9kZWxTdG9yZSA9IGNvbnRhaW5lciAiTW9kZWwgU3RvcmUiICJBbG1hY2VuYSBsb3MgbW9kZWxvcyBlIMOtbmRpY2VzIiAiRmlsZXN5c3RlbSAvIE9iamVjdCBTdG9yYWdlIg0KICAgIH0NCg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICMgUmVsYWNpb25lcyAtIENvbnRleHQgLyBJbnRlZ3JhY2nDs24NCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICB1c2VyIC0+IGZsb3dpc2VBcHAgIkludGVyYWN0cyB3aXRoICh2aWV3cyB0YXNrcywgcmVzcG9uZHMpIg0KICAgIG9wZXJhdG9yIC0+IGZsb3dpc2VBcHAgIkFkbWluIC8gbW9uaXRvcnMgdGFza3MiDQoNCiAgICBmbG93aXNlQXBwIC0+IGZsb3dhYmxlICJPcHRpb25hbGx5IGNyZWF0ZXMvdXBkYXRlcyBGbG93YWJsZSB1c2VyIHRhc2tzIChSRVNUIEFQSSkiDQogICAgZmxvd2lzZUFwcCAtPiBsbG0gIkNhbGxzIGZvciBzdWdnZXN0aW9ucyAvIHN1bW1hcml6YXRpb24iDQoNCiAgICBvZGVFbmdpbmUgLT4gdGFza3NlcnZlciAiSW52b2tlcyBwYXJ0bmVyTGluayB0byBjcmVhdGUgaHVtYW4gdGFzayAoU09BUC9IVFRQKSIgDQogICAgdGFza3NlcnZlciAtPiBmbG93aXNlQXBwICJDcmVhdGVzIHRhc2ssIG5vdGlmaWVzIFVJIC8gd2ViaG9vayINCiAgICB0YXNrc2VydmVyIC0+IGZsb3dhYmxlICJDcmVhdGVzIEZsb3dhYmxlIHVzZXIgdGFzayAob3B0aW9uYWwgaW50ZWdyYXRpb24pIg0KICAgIGZsb3dpc2VBcHAgLT4gdGFza3NlcnZlciAiUG9zdHMgdXNlciByZXN1bHQgKGFwcHJvdmUvcmVqZWN0ICsgcGF5bG9hZCkiDQogICAgdGFza3NlcnZlciAtPiBvZGVFbmdpbmUgIkNhbGxzIHJlcGx5L2NhbGxiYWNrIHRvIGNvcnJlbGF0ZSBhbmQgcmVzdW1lIEJQRUwgcHJvY2VzcyINCg0KICAgIGZsb3dhYmxlIC0+IG9kZUVuZ2luZSAiQ2FsbHMgT0RFIGZvciBsZWdhY3kgb3JjaGVzdHJhdGlvbnMgKFJFU1QvU09BUCkgKG9wdGlvbmFsKSINCiAgICBmbG93YWJsZSAtPiB0YXNrc2VydmVyICJVc2VzIGJyaWRnZSB0byBjb29yZGluYXRlIEJQRUwtb3JpZ2luIHRhc2tzIChvcHRpb25hbCkiDQoNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAjIEluZnJhIC8gU2VjdXJpdHkgKHNpbXBsZSB0YWdnaW5nKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGNsb3VkID0gc29mdHdhcmVTeXN0ZW0gIkluZnJhc3RydWN0dXJlQ2xvdWQiICJLdWJlcm5ldGVzLCBuZXR3b3JraW5nLCBzdG9yYWdlIiB7DQogICAgICB0YWdzICJJbmZyYSINCiAgICB9DQogICAgY2xvdWQgLT4gZmxvd2FibGUgIkhvc3RzIC8gZGVwbG95cyINCiAgICBjbG91ZCAtPiBvZGUgIkhvc3RzIC8gZGVwbG95cyINCiAgICBjbG91ZCAtPiB0YXNrc2VydmVyICJIb3N0cyAvIGRlcGxveXMiDQogICAgY2xvdWQgLT4gZmxvd2lzZSAiSG9zdHMgLyBkZXBsb3lzIg0KICAgIGNsb3VkIC0+IGxvY2FsYWkgIkhvc3RzIC8gZGVwbG95cyINCg0KICB9ICMgbW9kZWwNCg0KICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAjIyBWaWV3cw0KICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICB2aWV3cyB7DQoNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAjIFN5c3RlbSBDb250ZXh0IFZpZXcgKExldmVsIDEpDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgc3lzdGVtQ29udGV4dCBmbG93YWJsZSAiU3lzdGVtQ29udGV4dF9GbG93YWJsZSIgew0KICAgICAgaW5jbHVkZSAqDQogICAgICBhdXRvbGF5b3V0IGxyDQogICAgICB0aXRsZSAiU3lzdGVtIGNvbnRleHQ6IEZsb3dhYmxlLCBPREUsIFRhc2sgU2VydmVyLCBGbG93aXNlLCBMb2NhbEFJIg0KICAgICAgZGVzY3JpcHRpb24gIlZpc2nDs24gZ2VuZXJhbCBkZSBsb3Mgc2lzdGVtYXMgeSBwZXJzb25hcyBxdWUgaW50ZXJhY3TDumFuLiINCiAgICB9DQoNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAjIENvbnRhaW5lcnMgVmlldyAtIEZsb3dhYmxlDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgY29udGFpbmVyIGZsb3dhYmxlICJDb250YWluZXJzX0Zsb3dhYmxlIiB7DQogICAgICBpbmNsdWRlICoNCiAgICAgIGF1dG9sYXlvdXQgbHINCiAgICAgIHRpdGxlICJDb250YWluZXIgdmlldyAtIEZsb3dhYmxlICsgYWRqYWNlbnQgc3lzdGVtcyINCiAgICAgIGRlc2NyaXB0aW9uICJNdWVzdHJhIGxvcyBjb250ZW5lZG9yZXMgcHJpbmNpcGFsZXMgZGUgRmxvd2FibGUgeSBjw7NtbyBzZSBjb25lY3RhbiBhIE9ERSwgVGFzayBTZXJ2ZXIgeSBGbG93aXNlL0xvY2FsQUkuIg0KICAgIH0NCg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICMgQ29udGFpbmVycyBWaWV3IC0gQXBhY2hlIE9ERQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGNvbnRhaW5lciBvZGUgIkNvbnRhaW5lcnNfT0RFIiB7DQogICAgICBpbmNsdWRlICoNCiAgICAgIGF1dG9sYXlvdXQgbHINCiAgICAgIHRpdGxlICJDb250YWluZXIgdmlldyAtIEFwYWNoZSBPREUgYW5kIFRhc2sgU2VydmVyIGJyaWRnZSINCiAgICAgIGRlc2NyaXB0aW9uICJEZXRhbGxlIGRlIGxhIG9ycXVlc3RhY2nDs24gQlBFTCB5IGVsIFRhc2sgU2VydmVyIHF1ZSBleHBvbmUgZW5kcG9pbnRzIHBhcmEgaHVtYW4gdGFza3MuIg0KICAgIH0NCg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICMgRHluYW1pYyBWaWV3IC0gSHVtYW4gVGFzayBGbG93IChtdXN0IHJlZmVyZW5jZSBhbiBleGlzdGluZyBlbGVtZW50IGFzIHNjb3BlKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGR5bmFtaWMgb2RlICJIdW1hblRhc2tGbG93IiB7DQogICAgICB0aXRsZSAiRHluYW1pYzogSHVtYW4gdGFzayBmbG93IGJyaWRnaW5nIE9ERSAtPiBUYXNrIFNlcnZlciAtPiBGbG93aXNlL0xvY2FsQUkgLT4gT0RFIg0KICAgICAgZGVzY3JpcHRpb24gIkZsdWpvIGRlIGVqZWN1Y2nDs24gY3VhbmRvIHVuIHByb2Nlc28gQlBFTCBlbiBPREUgcmVxdWllcmUgaW50ZXJ2ZW5jacOzbiBodW1hbmEuIg0KICAgICAgYXV0b2xheW91dCBscg0KDQogICAgICBvZGVFbmdpbmUgLT4gdGFza3NlcnZlciAiMSkgaW52b2tlIHBhcnRuZXJMaW5rIC90YXNrL2NyZWF0ZSAoY29ycmVsYXRpb25JZCArIGNvbnRleHQpIg0KICAgICAgdGFza3NlcnZlciAtPiBmbG93aXNlQXBwICIzKSBQT1NUIC90YXNrcyAtPiBjcmVhdGUgdGFzayArIG5vdGlmeSB1c2VyICh3ZWJob29rKSINCiAgICAgIGZsb3dpc2VBcHAgLT4gbGxtICI0KSBvcHRpb25hbGx5OiBjYWxsIExvY2FsQUkgZm9yIHN1Z2dlc3Rpb25zIC8gc3VtbWFyeSINCiAgICAgIHVzZXIgLT4gZmxvd2lzZUFwcCAiNSkgdXNlciByZXZpZXdzIGFuZCBzdWJtaXRzIHJlc3VsdCAoYXBwcm92ZS9yZWplY3QgKyBkYXRhKSINCiAgICAgIGZsb3dpc2VBcHAgLT4gdGFza3NlcnZlciAiNikgUE9TVCAvdGFza3Mve2lkfS9jb21wbGV0ZSAtPiByZXN1bHQiDQogICAgICB0YXNrc2VydmVyIC0+IG9kZUVuZ2luZSAiNykgY2FsbGJhY2sgL3JlcGx5IG9yIFNPQVAgcmVzcG9uc2UgLT4gY29ycmVsYXRlIGFuZCByZXN1bWUgQlBFTCBpbnN0YW5jZSINCiAgICB9DQoNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAjIFN0eWxlcw0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHN0eWxlcyB7DQogICAgICBlbGVtZW50ICJQZXJzb24iIHsNCiAgICAgICAgc2hhcGUgcGVyc29uDQogICAgICAgIGJhY2tncm91bmQgI2Y5ZjVlNw0KICAgICAgICBjb2xvciAjMjIyMjIyDQogICAgICB9DQoNCiAgICAgIGVsZW1lbnQgIlNvZnR3YXJlIFN5c3RlbSIgew0KICAgICAgICBzaGFwZSByb3VuZGVkQm94DQogICAgICAgIGJhY2tncm91bmQgI2ZmZmZmZg0KICAgICAgICBjb2xvciAjMDAwMDAwDQogICAgICB9DQoNCiAgICAgIGVsZW1lbnQgIkNvbnRhaW5lciIgew0KICAgICAgICBzaGFwZSBjb21wb25lbnQNCiAgICAgICAgYmFja2dyb3VuZCAjZThmNGZmDQogICAgICAgIGNvbG9yICMwYjNjNWQNCiAgICAgIH0NCg0KICAgICAgZWxlbWVudCAiSW5mcmEiIHsNCiAgICAgICAgYmFja2dyb3VuZCAjZWVmN2YxDQogICAgICAgIGNvbG9yICMxYjVlMjANCiAgICAgICAgYm9yZGVyIGRhc2hlZA0KICAgICAgfQ0KDQogICAgICBlbGVtZW50ICJTZWN1cml0eSIgew0KICAgICAgICBiYWNrZ3JvdW5kICNmZmYwZjYNCiAgICAgICAgY29sb3IgIzZiMGY0Yg0KICAgICAgICBib3JkZXIgc29saWQNCiAgICAgIH0NCg0KICAgICAgcmVsYXRpb25zaGlwICIqIiB7DQogICAgICAgIGNvbG9yICM1NTU1NTUNCiAgICAgIH0NCiAgICB9DQoNCiAgfSAjIHZpZXdzDQoNCn0gIyB3b3Jrc3BhY2UNCg=="},"views":{"configuration":{"branding":{},"lastSavedView":"SystemContext_Flowable","metadataSymbols":"SquareBrackets","styles":{"elements":[{"background":"#e8f4ff","color":"#0b3c5d","shape":"Component","tag":"Container"},{"background":"#eef7f1","border":"Dashed","color":"#1b5e20","tag":"Infra"},{"background":"#f9f5e7","color":"#222222","shape":"Person","tag":"Person"},{"background":"#fff0f6","border":"Solid","color":"#6b0f4b","tag":"Security"},{"background":"#ffffff","color":"#000000","shape":"RoundedBox","tag":"Software System"}],"relationships":[{"color":"#555555","tag":"*"}]},"terminology":{}},"containerViews":[{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Muestra los contenedores principales de Flowable y cómo se conectan a ODE, Task Server y Flowise/LocalAI.","elements":[{"id":"4","x":0,"y":0},{"id":"5","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"Containers_Flowable","name":"Container View: Flowable","order":2,"softwareSystemId":"3","title":"Container view - Flowable + adjacent systems"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Detalle de la orquestación BPEL y el Task Server que expone endpoints para human tasks.","elements":[{"id":"3","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"Containers_ODE","name":"Container View: Apache ODE","order":3,"relationships":[{"id":"27"},{"id":"31"},{"id":"34"},{"id":"36"},{"id":"38"}],"softwareSystemId":"6","title":"Container view - Apache ODE and Task Server bridge"}],"dynamicViews":[{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Flujo de ejecución cuando un proceso BPEL en ODE requiere intervención humana.","elementId":"6","elements":[{"id":"1","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"13","x":0,"y":0},{"id":"15","x":0,"y":0}],"externalBoundariesVisible":false,"key":"HumanTaskFlow","name":"Dynamic View: Apache ODE","order":4,"relationships":[{"description":"1) invoke partnerLink /task/create (correlationId + context)","id":"27","order":"1","response":false},{"description":"3) POST /tasks -> create task + notify user (webhook)","id":"29","order":"2","response":false},{"description":"4) optionally: call LocalAI for suggestions / summary","id":"23","order":"3","response":false},{"description":"5) user reviews and submits result (approve/reject + data)","id":"17","order":"4","response":false},{"description":"6) POST /tasks/{id}/complete -> result","id":"32","order":"5","response":false},{"description":"7) callback /reply or SOAP response -> correlate and resume BPEL instance","id":"34","order":"6","response":false}],"title":"Dynamic: Human task flow bridging ODE -> Task Server -> Flowise/LocalAI -> ODE"}],"systemContextViews":[{"automaticLayout":{"applied":true,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Visión general de los sistemas y personas que interactúan.","dimensions":{"height":2342,"width":3850},"elements":[{"id":"3","x":1700,"y":880},{"id":"6","x":2450,"y":1634},{"id":"9","x":3200,"y":880},{"id":"12","x":950,"y":142},{"id":"39","x":200,"y":1255}],"enterpriseBoundaryVisible":true,"key":"SystemContext_Flowable","name":"System Context View: Flowable","order":1,"relationships":[{"id":"22"},{"id":"28","vertices":[{"x":3156,"y":1512}]},{"id":"30","vertices":[{"x":2900,"y":501}]},{"id":"31","vertices":[{"x":2675,"y":880}]},{"id":"33","vertices":[{"x":2900,"y":801}]},{"id":"35","vertices":[{"x":2943,"y":1301}]},{"id":"37"},{"id":"38","vertices":[{"x":2675,"y":1180}]},{"id":"40"},{"id":"41"},{"id":"42","vertices":[{"x":950,"y":1638},{"x":2450,"y":2084},{"x":2900,"y":2084}]},{"id":"43"}],"softwareSystemId":"3","title":"System context: Flowable, ODE, Task Server, Flowise, LocalAI"}]}}