Welcome! This repository contains a set of hands-on examples to help you understand the key concepts of the InterSystems IRIS Interoperability Framework.
For more in-depth learning resources, visit InterSystems Learning.
If you are interested in π₯ HealthCare interoperability, visit workshop-healthcare-interop
To run this workshop, please make sure you have the following installed:
- Git
- Docker and Docker Compose -
β οΈ On Windows, ensure Docker is set to use Linux containers. - Visual Studio Code with InterSystems ObjectScript Extension Pack
Clone the repository and start the project using Docker Compose:
git clone https://github.com/intersystems-ib/workshop-interop-intro
cd workshop-interop-intro
docker compose build
docker compose up -d
Then, open the workshop-interop-intro
folder in VS Code.
In this scenario, the system receives a loan request and queries multiple banks to determine loan approval, then aggregates the responses.
- Open the Management Portal
- Login with:
- Username:
superuser
- Password:
SYS
- Username:
- Navigate to:
Interoperability > Namespace:INTEROP
> List > Productions >Demo.Loan.FindRateProduction
> Open - Click Start Production
- Explore the Business Services, Processes, and Operations
- Use the green connector icons to inspect component interactions
- Use the Legend to understand the meaning of component colors
- Click
Demo.Loan.WebOperations
- Go to Actions > Test
- Choose
Demo.Loan.CreditRatingRequest
and provide some sample input - Review the result in the Visual Trace
- Investigate the related classes and messages in VS Code
- Open the Loan Form Page
- Submit a request with test data
- View results in the Message Viewer
- Review messages, traces, and how the system handled sync/async messaging and errors
- Open
Demo.Loan.FindRateDecisionProcessBPL
from the production config - In the Settings tab, click the magnifier icon next to the Class Name
- Explore the graphical BPL (Business Process Language) definition
- When finished, stop the production
This example processes incoming orders, enriches them with customer info from a MySQL database, and sends data to web services.
A MySQL database is already running in your Docker environment.
Run the following to inspect it:
docker exec -it mysql bash
mysql --host=localhost --user=testuser testdb -p # Password: testpassword
Query example:
select * from customer;
π§ You'll find sample customer data preloaded for testing.
- Navigate to:
Interoperability > Namespace:INTEROP
> List > Productions >Demo.Order.Production
> Open - Click Start Production
- In VS Code, copy files from
test/*.csv
into thetest/in/
folder - Watch the messages flow in the Message Viewer
Use the provided WSDL file to generate a web client:
- In VS Code, open the SOAP Wizard
- Use the following options:
- WSDL File:
/install/StockSoapService.wdsl
- Proxy Class Package:
Demo.Order.WSC.Stock
- β Check "Create Business Operation"
- Operation Class Package:
Demo.Order.WSC.Stock.BO
- Request/Response Package:
Demo.Order.WSC.Stock.Msg
- WSDL File:
Then:
- In the production:
- Add a new Business Operation
- Set class to:
Demo.Order.WSC.Stock.BO.StockSoapServiceSoap
- Name it:
StockSoap WS Out
- Under Settings:
- Add SOAP Credentials:
StockWS_User
- β Check "Enabled"
- Add SOAP Credentials:
- Use Actions > Test to verify connectivity
Now edit the Order Business Process to call the new SOAP operation.
Edit the BPL to include a new step calling `StockSoap WS Out`
You can use the following image as a guide:
Now, you will add a new API to receive orders via REST.
-
In the production, add a new Business Service:
- Service Class:
Demo.Order.BS.OrderAPI
- Service Name:
Order API In
- β Check "Enable now"
- Service Class:
-
Test the service using the included Postman collection
or usecurl
from your terminal:
curl -X POST http://localhost:52773/order/api/order \
-H "Content-Type: application/json" \
-d '{
"OrderPriority": "Not Specified",
"Discount": "0",
"UnitPrice": "205.99",
"ShippingCost": "2.5",
"CustomerID": "3",
"ShipMode": "Express Air",
"ProductCategory": "Technology",
"ProductSubCategory": "Telephones and Communication",
"ProductContainer": "Small Box",
"ProductName": "V70",
"OrderDate": "7/27/2011",
"Quantity": "8",
"Sales": "1446.67",
"OrderID": "88523"
}'
π‘ Check the Message Viewer to see how the new REST request flows through the production.
- After successfully testing the service using
curl
, try this sample web app.
It's a simple Angular frontend designed to illustrate how a web application can interact with IRIS APIs.
Check out the official InterSystems Learning Portal for more courses, videos, and certifications on interoperability and beyond.