SageX3Soap
Descripción
Sección titulada «Descripción»Ejecuta operaciones en Sage X3 a través de sus Web Services SOAP (protocolo CAdxWebServiceXmlCC). Cada llamada incluye autenticación HTTP Basic Auth y la cabecera SOAPAction requerida por el servidor Syracuse.
El nodo realiza una doble validación XML:
- Antes de enviar — verifica que el
objectXmlde entrada sea XML bien formado y no contenga caracteres de control prohibidos. - Después de recibir — detecta
SOAP Faultde protocolo y errores de aplicación Sage X3 (status != 1en el response).
Si cualquiera de las dos validaciones falla, el nodo sale por el conector de error con el detalle del problema.
Configuración
Sección titulada «Configuración»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credentials | Si | Credencial Sage X3 SOAP (ver abajo) |
| operation | select | No | Operación SOAP: run, read, save, modify, delete, query. Default: run |
| public_name | text | Si | Nombre del web service publicado en Sage X3 (ej: YBONIWS) |
| object_xml | textarea | No | XML de negocio a enviar (objectXml). Si vacío, usa data[data_key] o el data completo |
| data_key | text | No | Campo del data del nodo anterior que contiene el XML a enviar |
| language | text | No | Código de idioma para el callContext (default: ENG) |
| request_config | text | No | Opciones de respuesta Sage X3 (default: adxwss.optreturn=JSON&adxwss.beautify=true) |
| timeout | text | No | Timeout de la solicitud HTTP en milisegundos (default: 30000) |
Credencial requerida
Sección titulada «Credencial requerida»Crear una credencial de tipo sageX3Soap con los siguientes campos:
| Campo | Descripción | Ejemplo |
|---|---|---|
username | Usuario Sage X3 | web |
password | Contrasena | web |
url | Endpoint SOAP completo | http://server:8124/soap-generic/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC |
pool_alias | Pool alias de la administración Syracuse | POOL |
Operaciones disponibles
Sección titulada «Operaciones disponibles»| Operación | Descripción |
|---|---|
run | Ejecutar un subprograma Sage X3 |
read | Leer un registro por clave |
save | Crear un registro nuevo |
modify | Modificar un registro existente |
delete | Eliminar un registro |
query | Consultar una lista de registros |
Headers HTTP generados
Sección titulada «Headers HTTP generados»Content-Type: text/xml; charset=UTF-8Authorization: Basic <base64(username:password)>SOAPAction: "urn:CAdxWebServiceXmlCC#run"El SOAPAction cambia automáticamente según la operación seleccionada.
Doble Validación XML
Sección titulada «Doble Validación XML»Validación 1 — Entrada
Sección titulada «Validación 1 — Entrada»Antes de construir el SOAP Envelope, el nodo verifica el objectXml:
- Si esta vacío → valido (operaciones
read/querypueden no necesitar XML) - Si no es string → error
- Si contiene caracteres de control prohibidos en XML 1.0 (
\x00–\x08, etc.) → error - Si el XML esta mal formado (parseo fallido) → error con descripción del problema
Validación 2 — Respuesta
Sección titulada «Validación 2 — Respuesta»Después de recibir la respuesta de Sage X3:
- Respuesta vacía → error
EMPTY_RESPONSE <soapenv:Fault>en la respuesta → error confaultCodeyfaultStringstatus != 1en elreturnde Sage → errorSAGE_STATUS_Ncon el detalle
{ "sage_response": { "status": "success", "result": { "GRP": { "FLD": [ { "@_NAME": "SALFCY", "#text": "SIT" }, { "@_NAME": "BPRNUM", "#text": "CS001" } ] } }, "messages": [] }}El campo result contiene el resultXml de Sage X3. Si request_config incluye adxwss.optreturn=JSON, el resultado ya viene parseado como objeto JSON. Si no, es un string XML.
Error de validación o SOAP Fault
Sección titulada «Error de validación o SOAP Fault»{ "error": { "message": "Sage X3 error [SOAP_FAULT]: The server cannot service the request", "faultCode": "SOAP_FAULT", "faultString": "The server cannot service the request", "detail": null }}SOAP Envelope generado
Sección titulada «SOAP Envelope generado»<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wss="http://www.adonix.com/WSS"> <soapenv:Header/> <soapenv:Body> <wss:run soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <callContext xsi:type="wss:CAdxCallContext"> <codeLang>ENG</codeLang> <poolAlias>POOL</poolAlias> <poolId xsi:nil="true"/> <requestConfig><![CDATA[adxwss.optreturn=JSON&adxwss.beautify=true]]></requestConfig> </callContext> <publicName xsi:type="xsd:string">YBONIWS</publicName> <objectXml xsi:type="xsd:string"><![CDATA[ <PARAM><FLD NAME="SALFCY">SIT</FLD></PARAM> ]]></objectXml> </wss:run> </soapenv:Body></soapenv:Envelope>Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Leer un cliente de Sage X3
Sección titulada «Leer un cliente de Sage X3»Configuración del nodo:
{ "credentials_id": "12", "operation": "read", "public_name": "BPCUSTOMER", "object_xml": "<PARAM><GRP ID=\"BPC0\"><FLD NAME=\"BPCNUM\">CS001</FLD></GRP></PARAM>", "language": "ENG", "request_config": "adxwss.optreturn=JSON&adxwss.beautify=true"}Ejecutar un subprograma Sage X3
Sección titulada «Ejecutar un subprograma Sage X3»Configuración del nodo:
{ "credentials_id": "12", "operation": "run", "public_name": "YBONIWS", "data_key": "xml_sage", "language": "ENG"}El XML se lee del campo xml_sage del data del nodo anterior.
- El
objectXmlse envuelve en<![CDATA[...]]>automáticamente dentro del SOAP Envelope para evitar colision con caracteres especiales XML - El endpoint WSDL para obtener el esquema de los web services es:
http://server:port/soap-wsdl/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC?wsdl - Sage X3 requiere que
event_schedulereste habilitado en Syracuse para procesar las peticiones - Si
request_configno incluyeadxwss.optreturn=JSON, el camporesultde la salida será un string XML que deberá procesarse con el nodoXmlToJson
Nodos Relacionados
Sección titulada «Nodos Relacionados»- SageCreateDocument — Crear documento fiscal en Sage X3 via SQL Server
- XmlToJson — Convertir respuesta XML a JSON
- JsonToXml — Construir el objectXml desde un objeto JSON
- HTTP — Llamadas HTTP genericas con cabeceras personalizadas