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 shared concepts for the publish-subscribe messaging integration using Apache Kafka. Implemented using spring-kafka.

fscd-adapter-kafka-ics-core

Provides event implementation and mapping code for ics events based on the fscd-adapter-kafka concepts. Supported events are:

  • payment-transferred

  • payment-failed

  • receivable-transferred

  • reserve-changed

fscd-adapter-kafka-ipm-core

Provides a baseline event implementation and mapping code for the editing-finished event based on the fscd-adapter-kafka concepts. Additional mappings are needed based on the given IPM. See the following two modules fscd-adapter-kafka-ipm-basis and fscd-adapter-kafka-ipm-base.

fscd-adapter-kafka-ipm-basis

Depends on fscd-adapter-kafka-ipm-core and provides additional mapping logic needed for ipm-basis.

fscd-adapter-kafka-ipm-base

Depends on fscd-adapter-kafka-ipm-core and provides additional mapping logic needed for ipm-base.

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.