Skip to content

Commit 4a834e5

Browse files
committed
Merge branch 'odata'
2 parents 63b182c + f0536e3 commit 4a834e5

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

docs/11-proposals/integration-pane-proposal.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ Mendix Studio Pro has an **Integration Pane** that shows all connected services
1414
| **Published REST** | Self-defined | Resources, operations |
1515
| **Business Events** | AsyncAPI | Channels, messages, attributes |
1616
| **Database Connection** | DB schema | Queries, table mappings, parameters |
17+
| **SOAP Client** (consumed) | WSDL | Imported operations, parameters |
18+
| **SOAP Service** (published) | WSDL | Published operations, parameters, microflow handlers |
1719

1820
### Two Levels of Discovery
1921

@@ -32,6 +34,8 @@ Mendix Studio Pro has an **Integration Pane** that shows all connected services
3234
| OData Service (published) | `SHOW ODATA SERVICES` | `DESCRIBE ODATA SERVICE` | `odata_services` |
3335
| External Entity | `SHOW EXTERNAL ENTITIES` | `DESCRIBE EXTERNAL ENTITY` | — (in `entities` table) |
3436
| External Action ||||
37+
| SOAP Client (consumed) ||||
38+
| SOAP Service (published) ||||
3539
| REST Client | `SHOW REST CLIENTS` | `DESCRIBE REST CLIENT` ||
3640
| Published REST ||||
3741
| Business Event Service | `SHOW BUSINESS EVENT SERVICES` | `DESCRIBE BUSINESS EVENT SERVICE` | `business_event_services` |
@@ -52,6 +56,8 @@ Mendix Studio Pro has an **Integration Pane** that shows all connected services
5256
| No `business_events` table | Individual messages not queryable |
5357
| `CallExternalAction` not in activity type switch | Catalog builder doesn't recognize this activity type |
5458
| `activities` table missing service/action columns | No OData service or action name stored per activity |
59+
| No SOAP parsing at all | `WebServices$ImportedWebService` and `WebServices$PublishedWebService` BSON types exist in metamodel but no parser, reader, model types, or commands |
60+
| No `soap_clients` / `soap_services` tables | SOAP services not queryable |
5561

5662
---
5763

@@ -330,14 +336,57 @@ Phase 2 is out of scope for this PR.
330336

331337
---
332338

339+
## Phase 3: SOAP Web Services (Future)
340+
341+
Mendix supports both consuming and publishing SOAP web services. The BSON types are fully defined in the metamodel (`WebServices$ImportedWebService`, `WebServices$PublishedWebService`) but **no parser, reader, model types, or commands exist yet**. This requires building the full stack from scratch.
342+
343+
### BSON Types Available
344+
345+
| Type | Description |
346+
|---|---|
347+
| `WebServices$ImportedWebService` | Consumed SOAP service — holds WSDL, operations, port/binding info |
348+
| `WebServices$PublishedWebService` | Published SOAP service — versioned services with published operations |
349+
| `WebServices$WsdlDescription` | WSDL metadata (schema entries, target namespace) |
350+
| `WebServices$ServiceInfo` | SOAP service definition (location, port, SOAP version, operations) |
351+
| `WebServices$OperationInfo` | Individual SOAP operation (request/response body, SOAP action) |
352+
| `WebServices$PublishedOperation` | Published operation (microflow handler, parameters, return type) |
353+
| `WebServices$VersionedService` | Versioned published service (caption, authentication, validation) |
354+
| `Microflows$WebServiceCallAction` | Microflow activity that calls a consumed SOAP operation |
355+
356+
### Implementation Steps
357+
358+
1. **Model types** — Add `ImportedWebService`, `PublishedWebService` to `model/types.go`
359+
2. **Parser** — Create `sdk/mpr/parser_webservices.go` for BSON deserialization
360+
3. **Reader** — Add `ListImportedWebServices()`, `ListPublishedWebServices()` to reader
361+
4. **SHOW/DESCRIBE**`SHOW SOAP CLIENTS`, `SHOW SOAP SERVICES`, `DESCRIBE SOAP CLIENT`, `DESCRIBE SOAP SERVICE`
362+
5. **Catalog tables**`soap_clients` (with operation count, WSDL URL, SOAP version), `soap_services` (with versioned service info), `soap_operations` (detail table)
363+
6. **Microflow integration** — Add `WebServiceCallAction` to `getMicroflowActionType()` and populate `ServiceRef`/`ActionRef`
364+
365+
### Target MDL Commands
366+
```sql
367+
SHOW SOAP CLIENTS; -- List consumed SOAP services
368+
SHOW SOAP CLIENTS IN MyModule;
369+
SHOW SOAP SERVICES; -- List published SOAP services
370+
DESCRIBE SOAP CLIENT MyModule.WeatherService;
371+
DESCRIBE SOAP SERVICE MyModule.OrderService;
372+
373+
-- Catalog queries
374+
SELECT * FROM CATALOG.SOAP_CLIENTS;
375+
SELECT * FROM CATALOG.SOAP_SERVICES;
376+
SELECT * FROM CATALOG.SOAP_OPERATIONS;
377+
```
378+
379+
---
380+
333381
## Example Queries After Phase 1
334382

335383
```sql
336384
-- Integration overview: all external services
337385
SELECT ObjectType, QualifiedName, ModuleName
338386
FROM CATALOG.OBJECTS
339387
WHERE ObjectType IN ('ODataClient', 'RestClient', 'PublishedODataService',
340-
'PublishedRestService', 'BusinessEventService', 'DatabaseConnection');
388+
'PublishedRestService', 'BusinessEventService', 'DatabaseConnection',
389+
'SoapClient', 'SoapService'); -- Phase 3
341390

342391
-- All external entities and their source services
343392
SELECT QualifiedName, ServiceName, EntitySet, RemoteName

0 commit comments

Comments
 (0)