Multi-threaded inbound integration

PolicyCenter provides a plugin interface that supports high performance multi-threaded processing of inbound data. PolicyCenter includes default implementations for the most common usages: reading text file data and receiving Java Message Service (JMS) messages. If these integrations do not serve your needs, you can write your own integration based on the plugin interfaces in the gw.plugin.integration.inbound package.

Some requirements for high-performance data throughput for inbound integrations require special threading or transaction features from the hosting J2EE/JEE application environment. Writing correct, thread-safe, high-performing code that interacts with the application server’s transactional facilities is difficult. PolicyCenter includes tools that help you write such inbound integrations. You can focus on your own business logic rather than on how to write thread-safe code to run in each application server.

You can test your integration code on the QuickStart server that runs from Guidewire Studio. This server runs in dev mode in the Jetty environment. Running inbound integrations on Jetty is not supported in any other configuration.

Inbound integration configuration XML file

The configuration file for inbound integrations is inbound-integration-config.xml in the configuration/config/integration folder. Edit this file in Studio to define configuration settings for every inbound integration that you use. Each inbound integration requires configuration parameters such as references to registered plugin implementations.

Making import actions repeatable without side effects or errors

If errors happen part way through processing a file, some lines in the file might be processed again when PolicyCenter retries the process. To ensure recovery from errors in the middle of an import, particularly for files, design your import data formats and code so that requests can be repeated without side effects. This quality is formally known as idempotency.

For example, if the inbound integration creates new imports with a specified unique ID, your code can first check if the record already exists. If it already exists, your code could re-apply that request or skip that record without generating errors or creating duplicate records.