# Interface Apps: Integration with External Systems

**Interface Apps** are applications that use ONEWEB primarily as an **integration layer**.\
In this design pattern, the application focuses on **connecting systems, exchanging data, and exposing services**, rather than providing rich user interfaces or complex user‑driven workflows.

Interface Apps are commonly used to:

* Integrate internal application components
* Connect ONEWEB with external systems
* Expose services or APIs for other systems to consume

ONEWEB provides built‑in integration capabilities and supports **Microflow** as the core mechanism for implementing integration logic.

***

#### Role of Microflow in Interface Apps

In Interface Apps, **Microflow** acts as the orchestration and execution layer that:

* Receives requests from external systems
* Transforms and validates data
* Coordinates interactions between systems
* Sends responses back to consumers

Microflows allow integration logic to be designed visually and managed consistently within the ONEWEB platform.

***

#### Common Integration Design Patterns

The following are the most common **integration patterns** implemented using Microflow in ONEWEB.

***

**Web Service Integration**

Use this pattern when:

* External systems communicate using **web services or APIs**
* ONEWEB needs to expose services for other systems
* Real‑time request/response interaction is required

Typical use cases include:

* REST or SOAP service integration
* API gateways
* Real‑time system‑to‑system communication

This is the most common integration pattern in modern architectures.

***

**File‑Based Integration**

Use this pattern when:

* Systems exchange data using **files**
* Integration is batch‑oriented rather than real‑time
* Legacy systems are involved

Typical use cases include:

* Importing or exporting data files
* Scheduled batch processing
* Integration with systems that do not support APIs

File‑based integration is often used when system constraints limit direct connectivity.

***

**Java‑Based Integration**

Use this pattern when:

* Custom logic or libraries are required
* Integration requires complex processing
* Existing Java components need to be reused

Typical use cases include:

* Custom adapters
* Specialized transformation logic
* Integration with proprietary Java‑based systems

This pattern provides flexibility while still operating within the ONEWEB platform.

***

**Database‑Level Integration**

Use this pattern when:

* Systems share or exchange data through **databases**
* Direct database access is required
* Integration is tightly coupled at the data level

Typical use cases include:

* Data synchronization
* Reporting or data replication
* Integration with systems that expose data only through databases

This pattern should be used carefully to maintain data consistency and integrity.

***

#### Design Guidance for Interface Apps

As part of **App Design Fundamentals**, consider the following when designing Interface Apps:

* Prefer **service‑based integration** over tight coupling
* Use file‑based or database integration only when APIs are not available
* Keep integration logic **modular and reusable**
* Design Microflows to be **clear, testable, and maintainable**

Interface Apps often operate without user interaction, so **reliability, performance, and error handling** are critical design considerations.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onewebstack.com/building-apps/app-design-fundamentals/choose-your-oneweb-design-patterns/interface-apps-integration-with-external-systems.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
