Harmony new release 3.0: Relationship Kernel, Google, Webydo, Web forms, Multiple Order Entry
-
Upload
harmony-the-1-cloud-application-development-run-time-platform -
Category
Technology
-
view
1.199 -
download
1
description
Transcript of Harmony new release 3.0: Relationship Kernel, Google, Webydo, Web forms, Multiple Order Entry
Harmony consolidated Release Notes
Last update: release 3.0 (Jun 2014):Relationship Kernel
Release policy
• [old] 10 releases per year – containing– A new feature
improving capabilities , increasing business benefits– Improvements
Revised or minor new features added to extend functionality
– Bug fixes– Sample implementation(s)
demonstrating “Harmony in action”• [new policy] 4 releases per year
(NEW FEATURE) RELATIONAL KERNELpowerful features for defining and querying complex data structures
Relation Kernel Features
• Defining [data] relationships – Without graphically modeling
• No data modeling skills required• Simple to understand & do
• Powerful expressions to query data• Comparable to SQL – but easier to do
• Bug fixes• Harmony releases 2.5/2.6 had “simple” relationship
kernel implementation
Relationship Kernel - Background
• all Harmony case data is a flat structure of concept /attribute pairs– for example order[concept].total[pair], person.name
• Before release 3.0 Harmony didn’t support relations between objects – such as John is the father of Mary – building enterprise applications requires this (or makes the
implementation simpler)
• Reference objects can be attached to a case in order to make decisions based on their attributes– Notice the red “R” icon when a ref. object is attached to a
case
• Only one object of a particular type can be attached to a case (one person, one order and so on) – to attach multiple, child cases are created and attached
Relationship Kernel – Basics 1
• RK builds on top of reference objects• It allows to create/store & retrieve relationships
between reference objects• A reference object always has a unique identifier
– it’s the first column in any REF_ sheet
Relationship Kernel – Basics 2
• The RK model is defined in the RK_Model sheet:
• The reverse relation is for readability purposes only, see Lookups slide
Relationship Kernel – Basics 3
• Actual relations between objects are stored in RK_Store:
• Each value is a reference object key, such as person.id, address.id and so on
• In the screenshot you see that John (row 6) and Marry (7) have signed the same contract EN456, which is for a product ENOF1189 (8)
Relationship Kernel – Syntax
• “@person” means the attached Person to the case;
• Relations are defined in square brackets, – [signs] – [lives_at]
Relationship Kernel – Establish relations
• establish a relation between the two REF_ objects if you know their unique identifiers:– For example you have a Person (defined in
REF_Person) and a Contract (in REF_Contract) in a case– Create the relation by using “relation add” in a rule
LHS *
– The expression is always in the following format: {@person [signs] @contract} the “{}” brackets mean it’s an RK expression
– When the rule executes, a new entry will be added to the RK_Store sheet
* Left Hand Side
Relationship Kernel - Lookups
• Lookups are performed always in a rule RHS *
• They are specified as an RK expression in the Expression column of the Rules sheet (don’t forget the “{}” brackets to hint Harmony you’d perform an RK expression)
• All supported RK expressions are documented in http://www.liquidsequence.com/Relation_Kernel_documentation.html
• Reverse relations are handy when used in RK lookups, makes the expression better readable
* Right Hand Side
Relationship Kernel – Example 1
• Retrieve the name of the bank that issued the debitcard that is in the case:
• Harmony will set the transaction.issuer c/a * pair with the result of the RK expression execution
* Concept Attribute [pair]
Relationship Kernel – Example 2
• Count how many transactions were made in the last half hour with the debitcard:
• Note: each transaction date is stored in the transaction.timestamp attribute
• Note: transaction.window is calculated with “30 minutes before current.date/time”
Relationship Kernel – Example 3
• Calculate the average transaction amount made with the debitcard in the last 30 minutes:
• Note: see notes from the previous slide, they are valid here as well.
Relationship Kernel – Example 4
• Requirement:– two persons need to sign the contract for a shared account
[product]
• The look-up ‘specification’ would be– for the person in the case (@person), find the contract he/she
signed via the [signs] relation, find the product for which the contract is signed, filter only products with name “Shared account” and count how many persons have their compliant attribute set to yes
• The rule ‘specification’ would be– When 2 persons (person.count) have signed the contract a
contract can be issued,
RK example (5) Adding a person
• Rule 10 adds a person [to REF_Person]• when the person does not exist (is not)
(see row3)
• It “maps” requester.name, ssn, telephone to person attributes(see rows 4-6)
RK example (6) Retrieve SSN occurrences
• Goal: retrieve number of requests done by a citizen, using his/hers SSN
• The c/a pair ssn.occurences will be set to the value resulting from the expression• Retrieve the number of entries/records that a person has made
for a specific benefit
Relationship Kernel – Best practices
• Refrain from modeling artificial objects, such as an order line or a party role;
• It isn’t necessary to attach a whole ref. object to a case if you need just one of it’s attributes, perform an RK lookup instead and set the result in a c/a pair:
GOOGLE DOCS MAIL/MERGEGenerate documents (like invoices) from orders
Mail/merge: what it does
• It retrieves data from Google DOCS spreadsheets– generates document(s) using “template”
documents– (notes
• Orders are entered by customer using Harmony’s Multi line Order Entry• Harmony replicates orders (data) from the database into Google DOCS
spreadsheets)
Multiple Order Entry Building Block (BB)
All orders are copied to spreadsheetsWhen the user hits <Submit> the data is copied to the Order Header and Order detail sheets
User enters dataThe “sizes” are put on horizontal axis. The “greyed-out” areas are because there are no catalog entries for certain sizes (Marc Cain brand – 34/Cambio only available in size 36);
Orders are added to ‘header & details’
Google DOCS mail/merge• Check/preview invoice
Document mail/merge• Invoice preview
• Invoice is• In Google DOCS format • Saved to your Google drive
Generated invoice
Invoice delivered by email
Invoice.pdf
PENTAHO BIBusiness Intelligence – dashboard
Business Intelligence – what it does
• It retrieves data from Google DOCS spreadsheets– generates dashboard– Users can generate .pdf
– (note Harmony replicates data from the Harmony database into spreadsheets – this data is ready available in the dashboard (i.e. this is real-time replication)
Easy creation of dashboards
• Dashboard contains a number of pre-formatted views• Revenue per store • Stock quantity & values• High/low values vs quantity• Other customized overview (distributor specific)
Export data
GOOGLE CALENDAR INTEGRATION
Following up on our vision of integrating Harmony with the Google cloud platform - adding new features [to release 1.8]
Appointments, tasks, deadline in Google Calendar
Features
• A calendar entry can be created, modified or deleted
• Re-using existing Templates functionality– Contents is the body of the calendar
entry– Subject is used for the calendar entry
name– StartDate and EndDate contain date
expressions or a dynamic fact– Color is one out of 11 different colors,
limited in the Google API– Location can be set as well
Calendar - 1/2
• Make sure you have a calendar entry defined in Templates:
A calendar entry can
• Use the “calendar” reserved word in the RHS:
• Supported operations are add, update and delete
Calendar - 2/2
• Queue can be an e-mail of a user (a dynamic c/a pair too) or a whole group
• Note: calendar entries will be pushed only to users that have logged at least once in Harmony - so Harmony can retrieve a security token and use it to update the calendar of the user
• The 11 supported colors are: “bold blue”, “blue”, “turquoise”, etc.
IMPROVED USER INTERFACEEmbed the UI in web pages (the Webydo sample)
Harmony generated web forms• copy/paste to Harmony HTML to Webydo• publish website [un Webydo]• The next slides show
– The website contact form– details of all completed workflow
steps– How users can view all [case] data that
has been entered.– How data is “copied”, real-time, to a
spreadsheet• Visit our website for functionality
overview
All case data automatically “captured”
Data is “saved” to your spreadsheet
Additional release info• Migrated to the OAuth 2.0 protocol for
Google login with refresh tokens, lightweight and simpler to implement, adopted by Facebook as well, can be implemented entirely inside a browser with JavaScript
• Two or three column layout can be set
• 9 bugs solved
MULTIPLE ORDER ENTRY2.3 Release: Introducing a new generic building block
Matrix Order Entry
• Design goal: – Automate the IT building/configuration process for ordering
multiple lines of articles (and per line multiple dimensions)
• Business benefit– One uniform interface supporting order entry for multiple
industrie
• Standard User Interface web part• Standard processing Catalog/Product file• Standard building block • Automatic line numbering
– For output to Orders files
The generated UI web part
This UI is automatically generated• Using the “size” dimension (34-48)
– “greyed-out” areas means no records present
• Row price & Total price are automatically totaled
Using this Catalog/Product file structure
• Contents of the Catalog file • Layout defined by customer, • Harmony assembles & presents data using building block
configuration (next slide)
How to do thisThe Matrix Order Entry building block
• The building block defines• Which items to be used from the file containing articles (see
row 2,3)• The fact which is submitted (order qty)
Outputs data to: Order header & details
HARMONY OPENWEB 2.2 Release Notes
HARMONY OPENWEB 2.2 Release Notes
• A special “queue” has been added which allows Business Events to be accessed by public users
Web / internet access
Extended search
Search within ID field for all values
Search within Description for all values
The [field] type sets the search context
• Auto indexing• mutli search
MULTI LANGUAGE1.9 Release Notes
MULTI LANGUAGE1.9 Release Notes
Change log
• Progress on customizing of the UI – Multi-language support English & Dutch– Configurable UI texts
• (great for Decision Support !!!!!)
• New “one-time-access” function– Improved case sharing
• Error messages introduced– Rules that provide additional control
over UI behavior • 7 issues and bugs solved
Chrome “Dutch” browser settings
The same case [Qwy] – “English” settings
Chrome configuration
Firefox configuration
• Create your own preferred syntax
User customization enabled
New “one-time-invite”
• Inviting users to access their case only requires the “one-time-dialog” – Harmony configuration controls
authorization (tasks, queues, cases etc)
One rule to raise an error
INTEGRATION GOOGLE CALENDAR1.8 Release Notes
Change log
• 1st version of integrating Harmony with Google Calendar– (deadlines are turned into events in the
calendar)
• After login, the user is redirected to the originally requested page
• 18 issues and bugs solved• Progress on customizing of the UI – company specific colors
Show task deadlines in Google Calendar
• When application date is chosen, Harmony computes deadline:
• Dialog is submitted, an event is added to the calendar (end date of the event = deadline date):
Show task deadlines in Google Calendar
• On login, users are challenged to grant access to their calendar
How to set-up Google Calendar
• A standard deadline is defined:
• The user must be a member of the Desk queue:
Configuring Harmony for Google Calendar
• When a deadline is re-computed (dynamic deadlines):
• Changing the deadline (via a submit of an Extend approval period in this example) updates the event in the calendar – end date of the event changes
Real-time updates to Google Calendar
Calendar Integration … 6
• This is a basic implementation, based on feedback we will extend the functionality
• Good to know:– The user must explicitly be a member of a
group (Users belonging to Admin only won’t see events in the calendar)
– Dialog name used as event name, two OWIs of the same name aren’t supported in Calendar
UI ADDING DYNAMIC DIALOGS (CONTROLLABLE PER “ITEM / LINE”)
1.6 Release Notes
Change log 1.6:
• Websockets are better “fit”with an ESB in the browser• new messages are published via web-sockets
to the ESB, web-parts change HTML content accordingly
• Show/hide of dialog items• Customer requirement for dynamic forms
• Configurable application name• set in spreadsheet, (was "Harmony App“_
• Radio button dialog item type added• 16 bugs fixed, added another 3 validation
rules in the spreadsheet
Introducing web-sockets in Harmony
• Relevant information for each user is pushed from Harmony to the browser - doesn't require a browser refresh for example
• In this release the OWI web-part updates in real-time when rules fire (OWI amount increases) or when somebody submits a dialog (OWI amount decreases)
Show/hide of dialog items
• Every dialog item can be hidden by default (setting the InitiallyHidden column to yes)
• Dialog items can then be shown via a rule RHS using the "show.item" reserved word
• Dialog items can also be hidden using the "hide.item" reserved word
• NOTE: a "dialog exists" statement must be present in the rule LHS when using show/hide reserved words - rules on what to hide and what to show could be different per dialog
Show/hide of dialog items (example):
Radio button dialog item (example):
INTEGRATION GOOGLE MAPS1.5 Release Notes
• Bi-directional Maps integration– Enter address: display on map– From map, change location • Reflects address
– Entering coordinates• 12 bugs fixed, added 5 validation
rules in the spreadsheet
Change log 1.5:
Google Maps
Enter address – result is displayed on Map
Google Maps
Move map “locator” and drop on new location resulting address is displayed
Google Maps
(or) Enter coordinates:corresponding address is found & location is displayed on Map
How to do ?
Just specify “location” (for type )
UI DIALOG DYNAMIC “ITEM / (LINE)” SUPPORT
1.4 Release Notes
• New UI to allow easy customization– Developers request more control over UI– A brand new JavaScript library was built specifically to
help developers customize the Harmony UI and integrate web-parts from Harmony into their own applications
– Result from user demand• New UI framework: Bootstrap
– One library supporting desktop and mobile UI• [implemented] Extended UI archictecture
– Analysis from user “behavior”• We have noticed logic still being coded coded in UI layer
(JavaScript)
Change log 1.4:
(NEW USER INTERFACE) BOOTSTRAP
A brand new JavaScript library was built specifically to help developers customize the Harmony UI and integrate web-parts from Harmony into their own applications
Desktop browser & mobile support
business services / rules
JavaScript for presentation "logic"/dialogs
“standard”RPG / COBOL *pgm
Webservices to access AS/400
dev framework
New UI architectureHTML(5): content/stucture
CSS: structure/look and feel/layoutPresentationtier
(NEW FEATURE) INVENTORY FILE1.3 Release Notes
Inventory 2.0 (1/3)
• Define an Order object by creating REF_Object spreadsheet with 3 fields:
• And the following two rules:– Generate a unique order ID, in this example based on date & time
• can by any Harmony function such as unique_id(), concat(), etc
– Set the order confirmation date to the current system date:
• Creating an order [transaction] When the order.id is provided/calculated a new row in the REF_Object [table] is created.– The order is immediately visible in the Google
Spreadsheet
Inventory 2.0 (2/3)
• Updating: when the order confirmation date and order company are provided/calculated, the corresponding order is updated.– The order is immediately visible in the Google
Spreadsheet
Inventory 2.0 (3/3)
IMPROVEMENTSDeadlines, UI data validation, LinkedIn sign-on, UI time control
Improvements 1/4
• Introducing: Dynamic Deadlines– For example a deadline is defined like this:
“10 days before arrival.date”– If arrival.date doesn’t exist in the case data,
the calculation of the deadline will be postponed until arrival.date is provided
– The deadline is re-calculated always when the arrival.date changes
– If the result of the deadline calculation is in the past, a ‘deadline.expired’ fact is asserted in the case data automatically
Improvements 2/4
• Reference data keys can be presented in the UI as drop-downs
Improvements 3/4
• LinkedIn login– Main e-mail address in the LinkedIn profile
used to login
Improvements 4/4
• New dialog item type: datetime– When both date and time are needed,
define the dialog item type as ‘datetime’– The generated UI will allow to provide the
time as well:
INTEGRATION
integration with external systems via industry standard SOAP/XML web-services
(sample) EU VAT Service integration
• VAT Information Exchange System (VIES)– Checks VAT-registration (= validity of VAT-
numbers) of companies registered in EU
Clickable link
Harmony sample
• Bla bla
For more information
• Visit– www.liquidsequence.com
• Contact us– http://liquidsequence.com/Contact.html
• More on Harmony– Harmony features (SlideShare)