**Este artículo es una continuación de esta publicación.** En ese artículo, analizamos el desarrollo de *business processes*, que forman parte de los componentes necesarios para la integración del sistema y sirven como coordinadores de la producción. En este artículo mostraremos la creación de un *business service*, que es la ventana de entrada de información para la producción. * Producción * Mensaje * **Componentes** * **Business Services** * Business Processes (publicación anterior) * Business Operation Y, finalmente, llegamos al último artículo de "¡Utilicemos la interoperabilidad!" El *business service* proporciona una ventana de entrada para la información enviada desde fuera de IRIS, con o sin utilizar el adaptador para I/F externo. Hay tres tipos de business services en la muestra (los enlaces entre paréntesis son enlaces al código de la muestra): 1. [*Business services* para archivos que utilizan adaptadores de entrada](#fileinboundadapter)(Start.FileBS) 2. [*Business services* para servicios web que utilizan el adaptador de entrada SOAP](#soapinboundadapter)(Start.WS.WebServiceBS) 3. [*Business services* llamados por procedimientos almacenados o REST sin utilizar adaptadores](#nonadapter)(Start.NonAdapterBS) Los diferentes métodos de conexión que se utilizan para introducir la información solo aumentarán el número de *business services*; sin embargo, el procesamiento realizado dentro de un *business service* es
【Memo】
En el caso de Studio, inicia el Asistente (Wizard) de Business Services en el menú de New Creation, selecciona el adaptador y haz clic en el botón Finalizar.
* * * La definición del método **OnProcessInput()** es la siguiente: ```objectscript Method OnProcessInput(pInput As %Stream.Object, Output pOutput As %RegisteredObject) As %Status ``` **pInput** es proporcionado con una instancia de la clase **%Stream.FileCharacter** para archivos de texto o de la clase **%Stream.FileBinary** para archivos binarios. En el ejemplo, se introducirá un archivo en formato texto, y lo hemos escrito para aceptar solicitudes de varias líneas y una solicitud por línea. **La propiedad AtEnd** se establece en 1 cuando se detecta EndOfFile. Puedes utilizar esta propiedad para detener el bucle. En un bucle, leemos las líneas utilizando el método **ReadLine()**, que nos permite obtener información sobre los contenidos del archivo una línea cada vez ( consulta la documentación para más información sobre el adaptador de archivos). Escribe el mensaje, recuperando información línea a línea. Después, ejecutamos el método ..SendRequestAsync() , que llama al resto de los componentes. Cuando se ejecute el método, el primer parámetro debería ser el nombre del componente al que quieres llamar en forma de *string*, y el segundo parámetro debería ser el mensaje de solicitud que hayas creado. Ten en cuenta que ..SendRequestAsync() es una llamada asincrónica y no espera recibir una respuesta.
Nota: También existe SendRequestSync() para las llamadas sincronizadas.。
El código de ejemplo es el siguiente: ![imagen](/sites/default/files/inline/images/image1112-1.png) Referencia: explicación del uso de la función $piece() en el texto de ejemplo anterior$piece(“string”, ”delimiter mark”, ”position number”)
La función para establecer/obtener una string con un delimitador, en el ejemplo, para obtener el primer y segundo valor de datos separados por comas, se escribe con la siguiente sintaxis:
```objectscript set request.Product=$piece(record,",",1) set request.Area=$piece(record,",",2) ``` Ahora, revisemos la función de Start.FileBS tal y como aparecía en la descripción anterior. En la producción del ejemplo, el "File Path" se estableció en **/irisdev/src**, y el "File Spec" se estableció en **check.txt**. Prepara el mismo directorio o cámbialo a otro y registra los datos de la muestra en el archivo check.txt con el siguiente formato: nombre del producto adquirido, nombre de la ciudad. ※Si estás utilizando el contenedor de muestra, cambia el nombre de [Test-check.txt] en el directorio src en el directorio que se creó con el clon de git. ![imagen](/sites/default/files/inline/images/image1112.png) ![imagen](/sites/default/files/inline/images/image1113.png) ### 2. Business services para servicios web que utilizan el adaptador de entrada SOAP (Start.WS.WebServiceBS) Posteriormente, describiremos la creación de business services para los servicios web. La clase de Business Service para servicios web actúa como proveedor de servicios web = servidor de servicios web. En el ejemplo, tenemos dos parámetros en el método del servicio web para esta producción de ejemplo, para tener información que se envía desde el cliente del servicio web. El método web utiliza los datos introducidos en los parámetros para crear una clase de mensaje y llamar a otros componentes. ![imagen](/sites/default/files/inline/images/image1115.png) Cuando se define una clase de servicio web, se crea una pantalla de prueba. Sin embargo, no se muestra de forma predeterminada. Inicia sesión en IRIS (o inicia un terminal), ve al *namespace* donde se encuentra la producción y haz lo siguiente: Para tu referencia:Acceso al catálogo y a las páginas de prueba Esta es una configuración de código de ejemplo en el ajuste, donde el contenedor se inició con docker-compose up -d (ejecutar en el namespace %SYS)set $namespace="%SYS" set ^SYS("Security","CSP","AllowClass","/csp/user/","%SOAP.WebServiceInfo")=1 set ^SYS("Security","CSP","AllowClass","/csp/user/","%SOAP.WebServiceInvoke")=1
【Atención】Ten en cuenta que la frase distingue entre mayúsculas y minúsculas y debe escribirse con cuidado. Además, según el namespace en el que se utilice el producto, cambia el script especificado. La oración del ejemplo fue escrita considerando que el ejemplo se importa en el namespace USER.
Si importas el código del ejemplo en el namespace ABC, el cuarto subíndice debería ser "/csp/abc/".
http://localhost:52773/csp/user/Start.WS.WebServiceBS.cls
![imagen](/sites/default/files/inline/images/image1116.png) Si quieres ofrecer el WSDL a tu cliente de servicios web, especifica WSDL=1 al final de la siguiente URLhttp://localhost:52773/csp/user/Start.WS.WebServiceBS.cls?WSDL
### 3. Business services llamados por procedimientos almacenados o REST sin utilizar adaptadores(Start.NonAdapterBS) A continuación, introduciremos el *Business Service* sin adaptadores (Start.NonAdapterBS). ![imagen](/sites/default/files/inline/images/image1117.png) Para los *business services* que utilizan adaptadores, el adaptador llama al método ProcessInput() del business service para detectar la información. Si no utilizas adaptadores, puedes seguir llamando al método ProcessInput(), pero este método no es público. Por lo tanto, si implementas un business service que no utiliza adaptadores, tendrás que considerar ProcessInput(). La muestra utiliza los dos métodos siguientes: * Procedimientos almacenados(Start.Utils) * Clase dispatch para REST(Start.REST)→Este es el servicio que ejecutamos en este artículo. Este es un ejemplo del procedimiento almacenado. ![imagen](/sites/default/files/inline/images/image1118-1.png) Después de añadir un business service (Start.NonAdapterBS) que no utiliza adaptadores a la producción (estado incorporado en la muestra), ejecuta el siguiente procedimiento almacenadocall Start.Utils_CallProduction('piroshki','Russia')
![imagen](/sites/default/files/inline/images/image1119.png) Un rastreo de los resultados de la ejecución es el siguiente: ![imagen](/sites/default/files/inline/images/image1120.png) A continuación, se muestra un ejemplo de creación de una clase dispatch para REST: ![imagen](/sites/default/files/inline/images/image1123_0.png) El XML descrito en el mapa de la URL de XData define qué métodos se llaman como respuesta a la URL en el momento que se realiza la llamada de REST. En el ejemplo se describe una definición que llama al método **WeatherCheck()** cuando se proporcionan las URL's del **/weather/first parameter (purchased product name)/ second parameter (name of the city)** en la **solicitud GET**. ```objectscriptEl business service está diseñado simplemente para utilizar la información que se introduce fuera de IRIS para crear mensajes de solicitud y llamar a los business components.
Durante la producción de la muestra, pudimos ver lo siguiente:Los distintos componentes desempeñan diferentes funciones en la ejecución de una producción (business services, business processes, business operations).
Para transmitir información entre componentes, utiliza el mensaje.
Los mensajes se almacenan en la base de datos a menos que se borren y, por ello, se pueden rastrear en cualquier momento.
Algunos adaptadores facilitan el proceso que rodea a la conexión.