The goal of this guide is to accelerate new Journey Engine developer on-boarding by providing of insights about Athena Journey Engine basic concepts, what are Out Of the Box features and how Journey Engine helps to build reusable UI components that benefit from pre-integrated Athena APIs.
This guide is not for Business Owners who use Journey Engine self sufficiency features to configure Journeys.
Roles and Lifecycle
Before deep diving into the technical details and specifications of Journey Engine, it is beneficiary to understand basic Journey Engine Solution lifecycle and different roles of persons involved in a build process.
While Athena Journey Engine provides self sufficiency and ability for a Business Owner to rapidly change Journeys, there is also “ground work” for developers to create Solution specific UI components and “creative work” for designers to create high quality pixel precise layouts and designs.
Components And Panels
Reusable UI components are created by Developers and then are used by Business Owner as building blocks to configure Pages, Panels, navigation, validation logic.
For Journey Builder to be able to discover available Data structures and Building blocks, it is necessary to have a Journey metamodel which defines building block and data structure availability.
Attribute Sets and Product Interaction
Journey Data Model is defined and maintained by Developers and is used by Business Owner to define data binding to UI Components and API calls.
One of Athena core features is complete Business Owner’s self sufficiency. Solution build environments does not have any hard dependencies to Athena infrastructure. Even Journey Builder itself can be extended and Business Owner has full control over not only Journeys build process, but also all the Toolchain used in a build. This step however is not required if Out Of the Box Core Journey Builder is sufficient to Build the Journeys.
Athena Journey engine basic concepts
Attributes Sets are pre-defined Interfaces that Journey can reuse to store data for a particular Line Of Business or Region financial product. Interfaces are used by Out Of the Box available integrations to set expectations about data structures that are accepted as an input and data structures that are returned as a result.
Keep in mind that these Attribute Sets are good starting points and provide sensible initial model so that it is easier to start building a new Journey. They are not meant to be “works for all” data structures. It is very easy to add, extend and customize Attribute Sets, to achieve data model that best suits your business requirements.
Out Of the Box available Attribute Sets
|Core||Core attributes to support persistence, product versioning and system component execution technical state.|
|UIState||Journey engine User Interface navigation state.|
|BusinessRulesState||Underwriting engine Business rule execution result state.|
|User||Registered or Anonymous User state.|
|Person||Set of reusable Person attributes.|
|Address||Set of reusable Address attributes.|
|AddressUK||UK address specific attributes.|
|Property||Attribute Sets describing Property object.|
|Vehicle||Attribute Sets describing Vehicle object.|
|InsurancePrivateTravel||Attribute Sets to describe Insurance Private Travel product.|
|InsurancePrivateMotor||Attribute Sets to describe Insurance Private Motor product.|
|InsurancePrivateContents||Attribute Sets to describe Insurance Private Contents product.|
|InsurancePrivateHealth||Attribute Sets to describe Insurance Private Health product.|
|BankingPrivateLoan||Attribute Sets to describe Banking Private Loan product.|
|BankingSMELoan||Attribute Sets to describe Banking Small and Medium Enterprise Loan product.|
Product Interaction (PI) is a data container that contains all the information entered by the User as well as any other data necessary to store user interface state (such as navigation or UI element display state for example) as well as service call response state.
Product Interaction implements Attribute Sets specific to a Line of Business (LOB) and Region of a financial product. It is unlikely for PI to implement multiple LOB specific interfaces unless it is a “combined product”.
Every time Journey is opened Journey Engine either creates new Product Interaction or loads existing One.
It is a valid assumption to compare Product Interaction to basic, flat data container or Map based web session, that is persisted in NoSQL backend, where it can later on can be analysed (since it is structured) or where from it can be loaded to reclaim interrupted Journey state.
Product Interaction is defined not on per Organization but per
For example if Company main brand is GreatCompany
and it has Motor and Travel products and operates in UK, then it is recommended to name Product Interaction as
If the GreatCompany decides to launch whitelabel AffordableCare and sell Health product in France,
then it is recommended to name Product Interaction
|Journey||Defines default breadcrumb for all Pages. References pages and sets page order in Journey. Defines set of reusable Conditions.|
|Page||Can define Page specific Breadcrumb, Page level Actions, Question Groups and layout Panels.|
|Breadcrumb||Breadcrumb defines top level breadcrumb for all pages or for a particular page specifically. Display conditions can be used to Show/Hide Journey level Breadcrumb.|
|Group||Used to logically group questions on a page to avoid code duplication, when common styling/security or display conditions must be applied to multiple Questions/Responses.|
|Panel||Used to define Page layout to make sure that Questions and Responses appear in a proper part of a screen. Panels also contains all of a page static resources, such as banners, footnotes, logos, etc.|
|Question||Information that is asked for User to enter. Binds to one or multiple Product Interaction attributes.|
|Response||Static or read only information that can not be changed and is manually entered during Development or is received form API.|
|Navigation||Navigation elements such as Buttons and Links. Executes Actions bound to these UI widgets.|
|Condition||Set of reusable Conditions defined on a Journey level and used in Breadcrumbs, Groups, Questions and Responses to enable Show/Hide and entered data format validation conditions.|
|Action||Binds Action to execute to Page/Question, Event and Command.|
|Event||Type of Event that would trigger the execution of Commands associated with Action. Out of Box available events are
|Command||Command to execute when bound event occurs. Out of The Box available Commands are createQuote, editQuote, enterPayment, convertToPolicy, setValue, redirect, createDocument, saveInteraction, loadInteraction.|
|Security||Define which Role can Read/Write a particular UI element. Can be used to tailor Role specific UI experience. Out Of the Box available Roles are ANONYMOUS, USER, AGENT, ADMIN. Out Of the Box available Operations are READ and WRITE.|
Product configuration defines set of Business Processes and how they relate to Journey and Product rating/pricing/underwriting models.
Based on when Product Interaction for a particular Business Process is last converted to a Quote, Journey engine will open Journey UI definition of a particular date and time when Quote was created and will use a Product rating/pricing model version that was used to create a binding Quote.
In case if Product Interaction is not yet initialised Journey and Product version is determined by ProcessId and ProductId passed on in a URL by finding of ProductVersion with newest dateFrom.
Journey Page up on leaving, if there are any changes in Questions answered detected, will prompt/warn user that Journey engine will use latest version of a Product Model and Journey and that binding Quote created will be not any more valid.
To avoid this behavior Questions must be explicitly marked as non-breaking changes while setting up a Journey.
To make sure that all changes (to Journey, Attribute sets, Interaction and Product Configuration) are deployed altogether, changes are collected in Workspace and are deployed in batches.
Workspace changes can be fast tracked or put through code review process if necessary.
Workspace is created every time when user starts editing of or creates a new Journey, Interaction or Attribute Set.
There are two default workspaces, develop and master. develop workspace represents what will be installed in next release, master workspace is what is currently installed in production.
To start editing of journey, interaction or configuration User has to select develop workspace as a starting point.
Journey Engine Runtime API
Deployed in Runtime environments. Provides deployed read only journey configurations.
Journey Builder Configuration API
Deployed in Edit environments. Allows to modify journey configuration.
Journey Engine shares same UI element rendering engine in both Edit mode and Runtime node. There are three additional panels available in Edit mode
- Workspace - to select and manage currently open workspace
- Questions - to add remove and navigate Journeys and Questions
- Details - to change and enter Question and Journey element settings
Journey engine is deployed without editing panels and Workspace APIs.
Templates are used to map Attribute set types to predefined Pages in a Journey type on per Financial product basis.
Out of the Box supported Journey types are New Business, Midterm Adjustment, Midterm Cancellation.
Out of the Box supported Financial products are Motor, Home, Contents and Health.
When creating a new Journey, user is prompted, which Journey type it is and which Financial Product it needs to support. As a result User is presented with already working Journey that can be modified if necessary.
Journey Engine is pre-integrated with a number of Systems of the Record. In case if it needs to be integrated with new product in a existing System of the Record or new System of the Record it is necessary to provide a mapping from Attribute sets of Interaction to the fields of structure in System of the record. As an alternative Mapping adapter should be specified to handle these mappings.
Out Of the Box features
Security and User identity
If journey page is marked as secure, in case if session is not authorised, user is automatically prompted by Single Sign-On service to enter username and password.
Journey engine also supports Single Sign-Off. In case if users session in SSO service is expired it will automatically call Journey engine to notify that user have been logged off.
SSO service also facilitates Social Media Identity brokering. When signing up Users can choose to use their Social
Identity, that can be later on used to authenticate user.
When Authenticated SSO service provides additional information about a user (Roles,Email,etc.) in JSON Web Token. Role information can be later on used to provide custom user experience for different user Roles and also pre-fill interaction field values.
Brokers or Agents can load User sessions to assist with completion of a Journey. Additional questions and logic can be applied if Journey is in impersonation mode.
Save for later
Journeys can be interrupted and resumed afterwards by clicking “resume link”.
Financial product lifecycle support and product versioning
During a life time of a financial product there can be fundamental breaking changes to journey execution logic:
- adding or removing questions from financial product in calculation model
- adding, removing changing business rule logic in financial product in calculation model
- financial product premium, cover, add-on, etc. calculation formula changes in calculation model
Changes are considered breaking if it is necessary to support multiple versions of underlying financial product.
There are two fundamental directions that developer can take when breaking changes occur:
- add display logic (check product version) to show hide affected questions, load different drop down values, execute different client/server side field value validation logic
- add business rule execution logic (check product version) to execute less or more business rules before allowing user to proceed to next page or complete the action
- add decision logic in Journey to call different version of back-end policy admin APIs or provide financial product version information in the call
- deploy multiple versions of journey and provide configuration for Interaction to financial product version mapping
- deploy multiple versions of Product API (with different Attribute Set versions)
- deploy multiple versions of Journey API (with different Journey meta-model versions)
Athena Journey engine supports product configuration, where it is possible to setup business processes configurations by specifying set of matching journey and product versions.
To avoid Version Hell (where there are hundreds of Journey versions and next release might produce invalid state, when old and new Journey versions are updated at a same time) Journeys are versioned manually rather than automatically (version per release). What means that developer decides if there are breaking changes and bumps Journey version in Journey Builder manually.
Athena allows to deploy and maintain multiple Product API and Journey API versions at a same time and provides meta-data information about which versions are deployed, so that Developer, when building a Journey can choose, which Product API and Journey API are compatible with a Journey.
User usage pattern tracking (heat maps)
Data mining and automatic pre-loading
Every time user transitions to a next page all user related information is stored in NoSQL storage. Later on data can be analysed to discover user relations and pre-populate interaction fields if Journey engine identifies that matching Interaction fields has been specified before. w
Scaling and performance
There are no long living memory intense web sessions. All UI state is stored in Interactions persistent NoSQL storage.
Journey engine can be scaled horizontally without any additional configuration. All journey engine instances share same NoSQL Interaction storage and are disposable. It is however recommended to maintain user to node relationship through persistent load balancer cookie strategy, since web session is authorized on a particular node instance only.
There is no permanent persistent data stored on a node instance.
In case if this is first Journey being created, it is necessary to run
athena-templates create journey-runtime command
to create custom runtime core project as well as to run
athena-templates create journey-model to create project where all
Journey models will be stored.
To create new Journey model it is necessary to run
athena-templates create <journey-template-id> command.
This will add Journey model to solution Journey model project.
Custom look and feel
Custom look and feel styles, panels and other UI components are defined in journey runtime projects. For example to have a whitelabel with a different look, feel and unique set of UI controls, in solution it is necessary to create another journey-runtime project and then deploy it as a separate instance.
In case if solution has set of common custom UI components it is necessary in solution to create a common runtime project. And source common controls from there in a same way how they are sourced from core runtime.
Available Question and Response controls
Out of The Box available Controls to build a Journey.
Questions are used to gather information necessary to provide an Offer to a Consumer.
|text||Plain text and number input.|
|textArea||Multi line text input.|
|yearAndMonth||Year and month input.|
|singleChoice||Choice with one answer.|
|singleImageChoice||Choice to select one image.|
|yesNoChoice||Choice to select boolean answer.|
|checklistChoice||Choice to select multiple answers.|
|dropDownChoice||Choice to select multiple answers from a list.|
|slider||Select a range of applicable values.|
|healthQuestionerChoice||Health condition questioner.|
|findVehicle||Finds vehicle make, model and variant by registration number.|
|findAddress||Find address details by postcode.|
|bodyMassIndex||Calculates body/mass index.|
|addonSelection||Allows to select cover add-ons.|
|sortCode||Direct debit bank account details.|
|documentUpload||Upload new documents and associate them with this Interaction.|
Response controls are read-only fields that mostly show information that is retrieved from a server (such as Premium calculated, etc.)
For more detailed information about a particular Question or Response and parameters they accept, please refer to documentation in Journey Builder.
Available Events and Commands
When the Event occurs it executes a Command which results in either page data refresh, API call or navigation to another page.
Out of The Box available Events and Commands.
|init||Fired when control or page is first loaded.|
|valueChanged||Fired when User has changed Question Value and have left focus of the control.|
|click||Fired when user clicks on a Control.|
|continue||Fired when user navigates away from a Page.|
|createQuote||Convert Interaction to Quote in a System of Record.|
|editQuote||Update/recalculate Quote in a System of Record from the current Interaction.|
|enterPayment||Call after a successful payment gateway transaction.|
|convertToPolicy||Convert Quote associated with this Interaction into a Policy.|
|setValue||Manipulate Interaction property value.|
|redirect||Navigate to a different page.|
|createDocument||Create/Send document (file, email).|
|saveInteraction||Explicitly save interaction or create new interaction.|
For more detailed information about a particular Command and parameters it accepts, please refer to documentation in Journey Builder.