Overview

Module Structure

The following diagram illustrates the Maven modules of group de.faktorzehn.fscd-adapter along with their dependencies.

The module fscd-adapter-webapp is not supposed to be used as dependency but serves as template for project-specific implementations.

module structure

Modules

jco-library

A library built on top of SAP JCo to facilitate executing Remote Function Calls (RFC), including

  • JcoConnection that lazily connects to a JCoDestination that is configurable via JcoProperties (a Spring ConfigurationProperties) instead of JCo .destination files,

  • JcoFunctionExecutor and JCoFunctionExecutorFactory to execute JCoFunctions in a consistent way,

  • JcoTransactionManager, an implementation of Spring’s PlatformTransactionManager to manage transactions across multiple RFCs,

  • DomainValueSource and its PropertiesDomainValueSource implementation using resource bundles (.properties files) to resolve domain texts,

  • JcoRecordReader and JcoRecordWriter to read and write JCoRecords,

  • JcoTableIterable to iterate JCoTables, and

  • JcoHelper with various static utility methods.

jco-extapi

Contains general domain objects that are not specific to FS-CD, such as IdName, CurrencyAmount or Operation.

fscd-adapter-extapi

Contains the adapter’s domain model, e.g. AccountBalance and Posting, used by module fscd-adapter-business. Additionally, the domain objects serve as the adapter’s external API (DTOs) utilized in the REST services of the extservices module. For details see the OpenAPI documentation.

You can also use IntelliJ’s diagram tool to visualize the domain model.
fscd-adapter-business

Contains the core business logic of the adapter encapsulated in service interfaces, for instance FscdAccountBalanceService and FscdPostingService as well as implementations using SAP Java Connector (JCo), for example JcoAccountBalanceService and JcoPostingService.

fscd-adapter-extservices

Contains REST services. Implemented with spring-web. For details see the OpenAPI documentation.

fscd-adapter-extapi-client

Provides FscdAdapterClient, a Java client for the REST services of module extservices implemented using WebClient of spring-webflux.

fscd-adapter-kafka

Contains the concepts for the publish-subscribe messaging integration using Apache Kafka. Implemented using spring-kafka.

fscd-adapter-web

Contains components for the webapp. Implemented using linkki.

fscd-adapter-webapp

Bundles the modules into and configures the Spring Boot application. Its sources can serve as a template for project-specific implementations.

Bill of Material

The module de.faktorzehn.fscd-adapter:fscd-adapter-bom provides a Maven bill of material (BOM) that can be imported into a project’s dependency management.