What is it?

A template is a function that generates an executable integration data flow, whatever the concept “data flow” means for the underlying integration engine. Templates are the primitive deliverables created using Doohickey Developer Tools. The template’s job is to accept end user configurations, authentication credentials, and other metadata to generate one portion of the executable integration for that end user.

How is it used?

Use templates to do the following:

  • Define how certain entities flow to/from your application to/from an external, integrated application.
  • Provide configurability points for end users to tailor how that data flows to meet their specific business requirements.
  • When combined into a package of templates, provide a complete data integration package to end users, which enables cross-product user experiences.

Why is it important?

The fundamental difference between building an integration between two systems one time for one stakeholder and building a product integration is the reuse.

It’s virtually impossible to build an integration that can be enabled by many end users and not provide any ability for the end user to dictate how the integration should work. At the very minimum, the end user needs to provide their own credentials to the integrated systems, but often their unique needs are broader than just credentialing.

The template provides a framework for standardizing data flows within an integration as much as possible across end users (reducing maintenance costs) while providing just enough configurability to meet a broad set of needs. How configurable a template is will depend on the desired end user experience, but it’s generally best to keep configurability to a minimum.

Templates relate to the following entities:

  • Each template has a single reference to an integration definition. Commonly, multiple templates relate to a single integration definition to produce a comprehensive integration for end users.
  • The template accepts an integration config object, which it uses to produce an instance of a data flow. What the term “data flow” means will vary by integration engine, but broadly speaking data flows execute data movement between two systems on behalf of a single end user.