Our biggest and most comprehensive release to-date: Relationship kernel provides powerful features for creating and retrieving data/file relationships.
This consolidated overview also contains release info on the "building block" - Multiple Order Entry - that turns a catalog/product file into web order entry application - simply by configuring one sheet!
The integration of web forms and spreadsheets with Webydo.com (website design without IT knowledge) means that NO programming is involved when web forms change. Features that were added for ntegrating with Google DOCS calender.
2. 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
3. (NEW FEATURE) RELATIONAL KERNEL
powerful features for defining and querying complex data structures
4. 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
5. 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
6. 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
7. 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
8. 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)
9. Relationship Kernel – Syntax
• “@person” means the attached Person
to the case;
• Relations are defined in square
brackets,
– [signs]
– [lives_at]
10. 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
11. 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
12. 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]
13. 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”
14. 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.
15. 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,
16. 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)
17. 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
18. 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:
20. 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)
21. Multiple Order Entry Building Block (BB)
All orders are copied to spreadsheets
When the user hits <Submit> the data is copied to
the Order Header and Order detail sheets
User enters data
The “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);
29. 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)
30. 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)
34. 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
35. 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
36. 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.
38. 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
43. 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
45. 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
46. 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
47. 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)
48. How to do this
The 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)
52. • A special “queue” has been added
which allows Business Events to be
accessed by public users
Web / internet access
53. 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
56. 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
61. • Create your own preferred syntax
User customization enabled
62. New “one-time-invite”
• Inviting users to access their case only
requires the “one-time-dialog”
– Harmony configuration controls
authorization (tasks, queues, cases etc)
65. 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
66. Show task deadlines in Google Calendar
• When application date is chosen,
Harmony computes deadline:
67. • Dialog is submitted, an event is added
to the calendar (end date of the event
= deadline date):
Show task deadlines in Google Calendar
68. • On login, users are challenged to
grant access to their calendar
How to set-up Google Calendar
69. • A standard deadline is defined:
• The user must be a member of the
Desk queue:
Configuring Harmony for Google Calendar
70. • 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
71. 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
73. 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
74. 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)
75. 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
85. • 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:
86. (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
90. 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:
91. • 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)
92. • 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)
94. 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
97. 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:
99. (sample) EU VAT Service integration
• VAT Information Exchange System (VIES)
– Checks VAT-registration (= validity of VAT-
numbers) of companies registered in EU
Clickable link
101. For more information
• Visit
– www.liquidsequence.com
• Contact us
– http://liquidsequence.com/Contact.html
• More on Harmony
– Harmony features (SlideShare)
Hinweis der Redaktion
Last updated (3 Feb – last slide)
The structure can be coded in HTML and/or CSS. This is based on preference and best practices.