OLYMPUS DIGITAL CAMERA

Dipl.-Ing. Harald J. Loydl

Innovative Thinker, Entrepreneur, Coach, Developer.

Senior Consultant
– Avaloq Banking System
(clm, crm, cost&fees, tax, securities, credit, job scheduling, architecture, front end, web forms, case manager)
– Business Process Management and Case Management
– Domain-Driven Design and UML-Modeling

Avaloq Certified Professional (since 2007)
PMI CAPM (2012)
Dipl.-Ing. El. (1996)

My specialties:
– Analysis, Design and Requirements Modeling in Avaloq, generally in Banking Domains
– Process- and Case Modeling with BPMN, CMMN and DMN
– BPM/Case Management Engine Architectures and Integration
– GraphQL

My Clients:
– Edorasware (Zurich / Bern)
– Arizon (Zurich / St. Gallen)
– Avaloq (Zurich)
– Raiffeisen Schweiz (St. Gallen)
– Barclays Wealth (Geneva)
– Baloise Bank SoBa (Solothurn)
– RBS Coutts (Zurich)
– Basler Kantonalbank / Bank Coop (Basel)
– Bank Vontobel (Zurich)

Office Basel:
Lörracherstrasse 50
4125 Riehen (Basel)
Switzerland

LinkedIn
Xing

Camunda GraphQL

A couple of weeks ago I started to discuss the idea of GraphQL for Camunda BPM. It all materialized quite fast in a public GitHub repo here: camunda-graphql.

What is so fascinating about GraphQL?
Well, check out GraphQL for Avaloq where I describe the basics of GraphQL, example queries, the advantages of GraphQL over REST and other things.

Work is in progress for Camunda GraphQL and so far it looks very promising. I also get excellent support from Camunda. Thanks guys.

To exemplify the concepts of Camunda GraphQL I started coding:

  • query resolvers for tasks and processes
  • using arguments
  • resolving complex types, started with ProcessDefintion
  • mutations, started with setAssignee for a task

Because I wanted a deeper integration than in edoras one GraphQL API I choose to use the Camunda Java API directly. This makes it fast and we can access all Camunda functionality via GraphQL. How cool is that?

So the whole project turned out to be a Java Springboot application – no full-stack-Javascript this time, sorry.

Luckily we found the relative new graphql-java-tools repo which gave us the possibility to write the Camunda BPM Schema (the *.graphqls files ) in GraphQL schema language plain text instead of coding Schema definitions in Java as described in graphql-java Schema definitions. This makes it more readable and comprehensible.

What makes the approach also light-weight is the fact, that we can use the Camunda Java API classes to fill in the GraphQL implementation. That means:

A Camunda GraphQL schema type, defined in a *.graphqls file, maps to a Camunda Java API class. The mapping is done by the name of the class/type.

That means (for almost all cases) we do not have to write our own arbitrary Java classes that represent GraphQL types. The Camunda API classes do that for us.

I try to post updates here from time to time.

Also, you can watch our GitHub repo 🙂

Harald

edoras one GraphQL API

Excerpt:
Explore the possibilities of GraphQL for edoras one using a GraphQL server atop the existing edoras REST API

(note: No edoras backend developers were harmed during development of this service)

graphql-atop-edoras-rest

More Details:

graphql-atop-edoras-rest-2


 

Web/mobile Apps or arbitrary clients use GraphQL to fetch data from edoras one

GraphiQL: in-browser IDE for exploring your data using GraphQL

GraphQL Server
– provides the edoras GraphQL API i.e. the edoras Type Definitions
– maps GraphQL queries/mutations to edoras REST calls

We defined two queries – search and workItem:

type Query {

    # find work items
    search(

      # filter work items by type (multiple types possible)
      type: [WorkItemType],

      # limit the search result (can be used for pagination)
      limit: Int = 10,

      # show results starting with this offset (can be used for pagination)
      offset: Int = 0,

      # sort the result by sort term, ascending or descending
      # documentation: https://documentation.edorasware.com/latest#sort-terms
      sort: [SortEnum],

      # find work items as descendants of a given work item id
      descendantsOf: String,

      # filter work items by their state (multiple states possible)
      state: [StateEnum],

      # filter work items by dashboard (i.e role): user, modeler or admin
      dashboard: Dashboard

    ): [WorkItemInterface]

    # ------------------------------------------

    #find a specific work item by id or key (Either id or key must be given)
    workItem(

      # Unique id. Either id or key must be given
      id: String,

      # Unique key. Either id or key must be given
      key: String,

    ): WorkItemInterface
}

 

If we add further Type Definitions we would get a concise schema for edoras and could run queries like so:

Example 1:
get all work items of type APP_MODEL in state OPEN sorted by descending modification date + limit the result to 30 entries:

graphiql-search-1

This is a screenshot of the open source, interactive, in-browser IDE called GraphiQL.
In short, here is how this works:
If you change the query on the left side and press the above play-button you get the result on the right side.

You immediately understand:

  • The structure of the query determines the structure of the result
  • The result is exactly what you requested for, not more or less

Now let’s dig a little bit deeper:

Assume you want to show all models of a specific APP_MODEL and some other information down the data hierarchy, you start typing…

graphiql-search-2

add ‘descendantsOf’ and id. Add the fields to display…

graphiql-search-3

and run the query…

Example 2: get all Work Items of an App Model:

graphiql-search-4

nested data: owner with title, id, etc…

graphiql-search-5

and query result:

graphiql-search-6

Depending on the returned work item type…

graphiql-search-7

…here: …on CaseModel… I want to return the initForm with key and name:

graphiql-search-8

And now drill down on the fields for each form….

fields returns an array of FormComponentInterface…

graphiql-search-9

show field description, type (xmlTag) and label…

graphiql-search-10

the form fields can be of different type…

graphiql-search-11

…what are the subforms of a MultiSubFormComponent:

graphiql-search-12

(you recognize that each subform in the MultiSubFormComponent is itself a FormModel)

You probably realize the potential here…

  • we fetch data over several levels in the data hierarchy and its still very comprehensive
  • and because of the Type System in the editor you get:
    • Syntax highlighting
    • Real-time error highlighting and reporting
    • intelligent type ahead of fields, arguments, types, and more

What do we cover with the edoras GraphQL API:

  • fetch work items
  • change / add work items (mutations)
  • basically we can cover everything in the vis modeler,
    i.e. everything what is exposed via the REST API

What can you do with the edoras GraphQL API:

  • get the freedom to build arbitrary web and mobile applications atop edoras server

Coming next:

edoras GUIs build with edoras GraphQL – stay tuned…

GraphQL for Avaloq

Wouldn’t it be nice to have a super simple data query language for your Avaloq data?

I mean really simple like so:

{
  businessPartner(id: 2711) {
    id
    name
    type
  }
}

which returns:

{
  "id": 2711
  "name": "ACME AG"
  "type": "customer"
}

You immediately understand:

  • The structure of the query determines the structure of the result
  • The result is exactly what you requested for, not more or less
  • and of course: the result is JSON

This is the GraphQL query language!

And because GraphQL is based on a Type System (or “Schema”) organized in terms of types and fields, not endpoints, we can access the full capabilities of Avaloq’s famous objects in a more natural way. Objects like Person, Address, BusinessPartner, Container, Position, etc.  including their extensions (classes, keys, additions) and object relations.

  • you could write really powerful yet simple queries, like so:
{
  person(id: 9999) {
    address(type: POSTAL) {
      street
      city
      country
    }
    contracts {
      name
      type
    }
    portfolios {
      positions {
        name
        qty
      }
    }
  }
}

I let you imagine the result.

I also let you imagine writing this query in SQL or Avaloq Script

Again, you get the point:

  • we fetch data over several levels in the data hierarchy and its still very comprehensive
  • and because of the Type System in the editor you get:
    • Syntax highlighting
    • Real-time error highlighting and reporting
    • intelligent type ahead of fields, arguments, types, and more

Take a look at GraphiQL – an in Browser IDE for GraphQL – it will blow you away.
(I will put together an online demo with mocked Avaloq data to show how to access Avaloq kernel objects, docs, extensions (classes, keys, additions), …)

What else do we have…

GraphQL offers architects a flexible and powerful way to let clients query your APIs – a real alternative to REST endpoints.

Developers can build and change GUIs, which use the GraphQL query language to fetch exactly the data needed for that particular component.

Given a more or less complete Type Schema for Avaloq in the backend, the GUI developer does not have to even bother the backend developers. Because the mix and match of the data on the GUI is the job of the GUI developer using GraphQL and not the job of the backend developers.

Security is implemented just like you would do it with your REST API.
Actually GraphQL does not say anything about security.
It is also agnostic regarding the transfer protocol, but implementations basically use HTTP(S).

The backend exposes it capabilities through the Type System (Schema).
The client can get the whole Schema through introspection of the Server.

Especially mobile apps could get a real performance boost – because you fetch exactly the data you need and omit several round trips which are often the case with REST APIs.

Business analysts, developers or tool integrators – all can run against the same GraphQL server endpoint – via mobile application, Browser or any other tool or component.

In this presentation I explore GraphQL and suggest the integration with Avaloq:

Avaloq-Graphql-2017 (V1.31)

Update February 2017:
This is still a proposal. Avaloq (the company) is watching the development of GraphQL. Currently they have no plans to implement GraphQL.

 

 

CIO Dialog 2013 Switzerland

Together with Lionel Pilorget from Basler Kantonalbank (BKB) I gave a speech on CIO Dialog 2013 (Switzerland) in Zurich, Okt. 28th.

Topics included: Modelling Business Processes, BPMN 2.0, 100% model based BPM, how to deal with the challenges IT departments are facing and why modelling is the key capability to cope with most of the problems in Business-IT-relations.

Attached are the slides (german only).

Value-your-IT_ 2013_v1.31

Visualize Avaloq workflows with Process Mining

Visualize your Avaloq stex-, payment-, or whatever-you-like-workflow with one of the best Process Mining Tools – DISCO from Fluxicon.

With three easy steps you get an inside view of your Avaloq banking processes! 

You are a business process owner

You are responsible for a business process implemented in Avaloq (possibly including other sub-systems). We can help you to:

  • Visualize your Avaloq workflows ‘in a minute’
  • Get a better understanding of the complex processes
  • Be in control and know what is going on

You are a consultant

  • Speed up the process discovery phase
    e.g. creation of graphical state chart of Avaloq workflows (as they are really used)
  • Objective data helps to support your recommendation
  • Improve customer satisfaction by doing more, in the same time

Process Mining Results
You’ll get workflow state charts (frequency and performance possible), overall statistics, Avaloq order variants, you can filter and drill down to the single Avaloq order.

Here are some impressions:

process_example001 process_example002 process_example003 process_example004 process_example005 process_example008 process_example009 process_example010process_example011

How is that accomplished?

Well, basically there are three easy steps:

  1. execute a Select-SQL on your Avaloq instance (e.g. daily clone of production)
  2. export SQL result as csv file
  3. import the csv file into Fluxicon DISCO
    and start visualizing your process in many different ways (apply filters, select different views, etc.)

Start Process Mining with your data!

Any comments or questions? 

List of Books

This is my selection of recommended or simply interesting books I read in the past.
I will update this list from time to time.

UML, BPMN, Software-Architecture

  1. Domain-Driven Design: Tackling Complexity in the Heart of Software, Eric J. Evans, Addison Wesley, 2003
  2. Software-Architekturen dokumentieren und kommunizieren, Stefan Zörner, Hanser Verlag, 2012
  3. Model-Based Development: Applications, H.S. Lahman, Addison-Wesley 2011
  4. BPMN Method & Style, 2nd Edition, Bruce Silver, Cody-Cassidy Press, 2011
  5. Moderne Softwarearchitektur, Umsichtig planen, robust bauen mit Quasar, J. Siedersleben, Verlag dpunkt, 2004
  6. Model Driven Architecture with Executable UML, C. Raistrick, P. Francis, J. Wright, I. Wilkie, Cambridge 2004
  7. MDA Distilled, Principles of Model-Driven Architecture, S. Mellor, K. Scott, A. Uhl, D. Weise, , Addison-Wesley 2004
  8. The MDA Journal, Straight from the Masters, D. S. Frankel & John Parodi, Meghan-Kiffer Press 2004
  9. The Object Contraint Language Second Edition, Getting Your Models Ready For MDA, J. Warmer, A. Kleppe, , Addison-Wesley 2003
  10. Executable UML, How to build class models, Leon Starr, Prentice Hall, 2002
  11. Executable UML, A Foundation For Model-Driven Architecture, Stephen J. Mellor, Marc J. Balcer, Addison-Wesley 2002
  12. Testing Object-Oriented Systems. Models, Patterns, and Tools, Robert V. Binder, Addison-Wesley 2000
  13. Das UML-Handbuch, Grady Booch, Jim Rumbaugh, Ivar Jacobson, Addison-Wesley 1999

Start-Ups

  1. The Lean Startup – How Today’s Entrepreneurs use continuous innovation to create radically successful businesses, Chris Ries, Crown Publishing, 2011
  2. Der Weg zum erfolgreichen Unternehmer, Stefan Merath, Gabal 2010
  3. Planen, gründen, wachsen, McKinsey&Company, Inc., 2000

General Management 

  1. The seven habits of highly effective people, Stephen R. Covey, Free Press 1989 / 2004
  2. Führen Leisten Leben – Wirksames Management für eine neue Zeit, Fredmund Malik, Deutsche Verlags-Anstalt 2000
  3. Management, Das A und O des Handwerks, aus der Reihe “Management: Komplexität meistern”, Fredmund Malik, Campus 2007
  4. Der Weg zum erfolgreichen Unternehmer, Stefan Merath, Gabal 2010

Requirements Engineering

  1. Requirements-Engineering und Management.
    Professionelle, iterative Anforderungsanalyse für die Praxis, chris Rupp & die Sophisten, Hanser 2007
  2. Systemanalyse kompakt, SOPHIST GROUP / Chris Rupp, Elsevier Spektrum akademischer Verlag, 2004

Project Management

  1. Project Management PMBOK Guide, PMI 2012
  2. Handbuch Projektmanagement, J. Kuster, E. Huber, R. Lippmann, A. Schmid, E. Schneider, U. Witschi, R. Wüst, Springer, 2011

Programming & Databases

  1. Troubleshooting Oracle Performance, C. Antognini, Apress 2008
  2. Extreme Programming, Kent Beck, Addison-Wesley 2000
  3. Java 2, Guido Krüger, Addison-Wesley 2001
  4. Client/Server Programming with JAVA and CORBA Second Edition, R. Orfali, D. Harkey, Wiley 1998