Deprecated: Creation of dynamic property Pusher\Log\Logger::$file is deprecated in /html/wordpress/wp-content/plugins/wppusher/Pusher/Log/Logger.php on line 18

Deprecated: Creation of dynamic property Pusher\Log\Logger::$file is deprecated in /html/wordpress/wp-content/plugins/wppusher/Pusher/Log/Logger.php on line 18

Deprecated: Creation of dynamic property Pusher\Dashboard::$pusher is deprecated in /html/wordpress/wp-content/plugins/wppusher/Pusher/Dashboard.php on line 68

Deprecated: Creation of dynamic property Pusher\Log\Logger::$file is deprecated in /html/wordpress/wp-content/plugins/wppusher/Pusher/Log/Logger.php on line 18

Deprecated: Creation of dynamic property Pusher\Log\Logger::$file is deprecated in /html/wordpress/wp-content/plugins/wppusher/Pusher/Log/Logger.php on line 18
CAP Archives - j&s-soft

Category: CAP

CAP von SAP is a Cloud Application Programming Model.

  • Camunda SaaS-SAP BTP Integration using BPMN and DMN

    Camunda SaaS-SAP BTP Integration using BPMN and DMN

    TL;DR: Process-driven software is a thing. And always was. Now proven in a real world business scenario with the help of Camunda SaaS and SAP BTP.

    What does a key user want to implement a process-driven application?

    • Not to become a Citizen Developer.
    • Neither a low-code developer.
    • Nor having to upskill to any developer-related ability for that matter.

    Instead, the person wants to model processes. That should run business logic and provide UI screens to users. Without having to spec out technical APIs or implement protocol details. This is exactly what we achieved when integrating the Camunda SaaS suite with BTP services and runtimes.

    BPMN and DMN

    Even though the Business Process Model Notation (BPMN) has been around for 20 (!) years and is a widely recognized standard, it has yet to manifest its full potential in the SAP sphere. BPMN “will provide businesses with the capability of understanding their internal business procedures in a graphical notation and will give organizations the ability to communicate these procedures in a standard manner” (direct quote from https://www.bpmn.org).

    Its counterpart for modelling decisions is DMN, the Decision Modelling Notation. “The primary goal of DMN is to provide a common notation that is readily understandable by all business users, from the business analysts needing to create initial decision requirements and then more detailed decision models, to (…) the businesspeople who will manage and monitor those decisions” (direct quote from the specification, https://www.omg.org/spec/DMN/1.5/Beta1/PDF).

    It helps to think of DMN as “Excel light” as it provides an “if-this-then-that pattern”: if x is of value “foo” and y is of value “bar”, then the result shall be “foobar” – similar to using an IF formula in Excel 😸.

    BPMN is easy to understand even without knowing the formal specification. Take this Pizza Delivery process as an example:

    Just by looking at the elements, visual hints and texts, it is clear that “after waiting 30 minutes and complaining to the delivery service, when the pizza hasn’t arrived after an additional 20 minutes, the order is cancelled.”

    It’s visual expressiveness qualifies BPMN not only as a notation standard, but also as a comprehensive documentation tool!

    Which, in turn, is its greatest pitfall: if only used for documentation purposes, BPMN models tend to transition into the digital filing cabinet quickly. Sitting and collecting virtual dust rather than being constantly updated and referred to.

    This is where Camunda comes in – an engine that can run BPMN and DMN models!

    Camunda SaaS and SAP BTP

    Camunda provides a cloud-based solution for both drawing and running BPMN- and DMN-models. In addition to the modelling capability, It provides so-called job workers representing a particular BPMN task of the model. Following the above Pizza example, the “Cancel Order” service task would create a job worker containing all relevant business and technical data to perform a cancellation of the order in IT systems.

    It is now the task of a business logic runtime to perform the work associated with Camunda’s job worker – in our project, this is done by the CAP layer in SAP BTP. CAP is SAP’s “Cloud Application Programming Model” designed for building cloud-native applications. In our case, we utilized CAP’s Node.js flavour to provide Camunda with job workers, implementing the required business logic, including interaction with 3rd party and SAP S/4 HANA systems. Interfacing with the Camunda SaaS via gRPC creates a fault-tolerant, yet highly performant, integration between the business logic runtime and the process execution engine.

    On top of the business logic, a UI5-based User Interface provides user input to the running BPMN process where necessary. The CAP runtime updates the UI along the BPMN process, keeping the business process in sync with user interaction. By using web sockets for refreshing UI elements, the user experience becomes instant and blazingly fast.

    In addition to using OData- and REST-APIs for interacting with 3rd party and SAP systems, our solution uses the Event capabilities of BTP to both send and receive events from connected systems. This allows for quickly adding and removing event-capable business system, without having to connect APIs directly.

    By providing a CAP implementation for all major BPMN tasks, a literal platform was created that allows a very generic execution of runtime logic for business tasks – which in turn puts the Modellers into the driver’s seat. By creating BPMN and DMN models, the Modeller build a software application without having to write code: the definition of “low-code software development”.

    No code necessary: BPMN drives the software

    By separating BPMN modelling and execution from BTP business logic runtime, the key users never have to bother with technical implementations of their business processes. They model BPMN and DMN on the Camunda layer, never being burdened with technical configurations.

    Changes to the running application on BTP don’t require code changes and redeployments, but adjustments of the BPMN and DMN model only – an increase in flexibility and turn-around time benefitting the business users.

    In case there are updates necessary to the business logic runtime on BTP, developers can independently proceed from the modellers, not disturbing their work on the subject matters.

    No real SAP pendant no process-driven software

    Is there something from SAP serving the same purpose? Yes and No.

    “Yes”, because on a high level, there’s SAP Build Process Automation. It allows creating workflows and automations on BTP, similar to Camunda Modeller, and running them, similar to Camunda Process Orchestration.

    “No”, because SAP Build Process Automation is not providing BPMN- and DMN-capabilities, but a proprietary modelling standard. This requires upskilling on that proprietary modelling language, resulting in a lock-in for the modellers: all process design will only work in Process Automation, they’re not portable, nor universally valid.

    And again “No” because in terms of “orchestration” capabilities, Process Automation only provides a friction of the Camunda engine features. Controlling the workflow via APIs, interacting with other systems (S/4, 3rd party, etc) or in-process data handling is where Camunda truely shines. Also, Process Automation holds very few capabilities of running custom buiness logic in a process. It doesn’t follow the “job” pattern by handing out work to a technical runtime like Camunda does, but requires the “job” to run as part of the Process Automation execution. This quickly results in limitations for providing business logic results.

    Summary

    Our integration between Camunda SaaS for business process modelling and SAP BTP for runtime logic caters ideally to the target audiences: a well-know User Experience for end users, a domain-specific capability for key users, and a familiar environment for developers. All can work independent of each user, with code and models deployed separately, disjunct update cycles, and no hindering close coupling.

    Could this be a sustainable solution for generically running BPMN- and DMN-processes in BTP? Absolutely. There’s no technical reason why the solution only works for a specific customer. In fact, the solution has been so well-perceived that ideas started circulating for productising the Camunda-BTP-integration as a BTP “Add-On” for customers.

    We have already implemented this successfully. Read more about Costumer’s requirements and KPIs.

  • re>≡CAP 2021

    TL;DR: Watch the recordings of re>≡CAP 2021, the 2nd edition of the “(un)conference on the SAP Cloud Application Programming Model”, that streamed June 25th, 2021.

    Another pandemic-dominated year, another virtual re>≡CAP conference – but with the same positive vibe that already characterized the 2020 event.Sponsored by j&s-soft GmbH amongst others, once again the CAP-Community and the CAP Dev-Team joined forces, this time with many community-led sessions! Not to speak of the “event band” getting back together for both organizing and moderating the event.Sorry if you missed it – but don’t worry, here are the recordings:

    Grande Opening (DJ Adams)

    DJ Adams queueing in re>≡CAP 2021.

    https://play.vidyard.com/ma7n46yzPi1d3G3kVCS817

    Keynote (DJ Hutzel)

    Keynote – by Daniel Hutzel, showing where CAP is heading and what to expect. 

    https://play.vidyard.com/MLUY1JmZqSS1oWxePaRwMK

    Usability and reusability with CAP (Jorg Thuijls, Tanveer Kaur)

    Thanks to the modular nature of CAP, more complex environments can be abstracted out and reused. This can be done by importing an existing EDMX file so an existing service can be called, but much more interesting is the idea if importing a CAP project as a dependency. Database entities or services can be augmented, added to or changed without losing the integrity of the existing tables and services. Service implementations can be shared or ignored.

    https://play.vidyard.com/Sqt2ido4prnDgMm7Ror6WY

    Enabling collaboration in sales processes – SAP meets Microsoft (Sebastian Esch)

    A solution to automate the provisioning of a Microsoft Office 365 environment to support the collaboration between Sales and Engineering people during the creation of a Sales Quote. The solution was built during a Hack2Build event and covers SAP Sales Cloud, S/4HANA, various services on SAP BTP and MS Graph APIs for Teams and SharePoint.

    https://play.vidyard.com/7uAiSxi72XgPRqKsggbcKX

    Orchestration of micro-frontends with Luigi, Azure AD, CAP & UI5 (Leo van Hengel, Kushal Mokashi)

    How Luigi, an orchestration framework to implement micro frontends, plays with Azure Active Directory for authentication, SAP cloud application programming model (CAP) for the development of backend service with authorization and UI5 as frontend technology.

    https://play.vidyard.com/F65dtLRR7DEaM2kYnwDYYj

    Taking CAP to the next level – with TypeScript (Simon Gaudek)

    TypeScript has become an essential part of modern development with Node.js. Not only does TypeScript provide better code completion, but its strong typing also prevents runtime errors. Two tools have been developed by the CAP community that enable the use of TypeScript in CAP projects and support development. This session shows cds2types and cds-routing-handlers.

    https://play.vidyard.com/nAnNSeeEo6NCBrSVGnkYwv

    Use CAP (Node.js) with other databases than SAP HANA (Mike Zaschka)

    Due to its’ modular concept, CAP offers an abstraction layer for database adapters. By using this layer, it is possible to add support for other relational and even non-relational databases. But since there is no out-of-the-box solution provided by SAP, those database adapters need to be implemented by others. In this talk, an overview of the current state of the database abstraction layer (from a non CAP core developer perspective) is given and the Open Source PostgresSQL adapter (cds-pg) implemented by members of the SAP Community is presented.

    https://play.vidyard.com/o4Fop888eeVP2ubkKf457o

    CAP outside SAP (Tobias Hofmann)

    CAP and its components are tightly tailored to work with SAP BTP. Yet, the overall programming model, concepts and the components are open.This presentation shows a CAP solution running on a non-SAP K8s infrastructure and how to get CAP with PostgreSQL as database running on OpenShift.

    https://play.vidyard.com/7SuYN5h5fMepFHKBVeZR3D

    SAP Support Message Reporting with CAP (Gregor Wolf)

    Replicate data from SAP Support Launchpad Incident OData service for local reporting.

    https://play.vidyard.com/dMmX1tWrp8y1QZQ68oLeDX

    Schema Evolution and Tools (Christian Georgi, Lothar Bender)

    See our improvements for schema evolution on SAP HANA in action. Learn how you can build custom build tasks. Get excited about CDS Linting.

    https://play.vidyard.com/2vsYgUdDfwqZDpLikqCpGQ

    Messaging and Service Consumption (David Kunz)

    How to use CAP service consumption and messaging in a grow-as-you-go fashion, quickly iterating on extending the well-known CAP bookshop sample. A remote SAP S/4HANA API is imported, first mocked, then actually called, extending the bookshop to reference remote entities, do partial replication of them, and keep them up to date by subscribing and acting on change events sent by the remote system.

    https://play.vidyard.com/SwdrZEQefMQtw3f1r6X7CH

    Star Wars API rewritten in CAP (Thomas Jung)

    What started as a holiday season fun diversion turned out to be a rather robust opportunity to explore the extreme edges of CAP capabilities, including bi-directional, many-to-many relationship modeling, bulk loading of data via CAP CQL, and annotations for semantic keys and value help.

    https://play.vidyard.com/fXy3KWizbx1MR2Rg2zFah2

  • Recordings of reCAP online 2020

    TL;DR: Watch the records of the “reCAP (un)conference on the SAP Cloud Application Programming Model”, hosted on 15th of May 2020.

    In May 2020, j&s-soft GmbH made it happen: We hosted the “reCAP (un)conference on the SAP Cloud Application Programming
    Model” establishing the link between the CAP-Community and the CAP Dev-Team! We were blessed with state of the art information and hands-on coding
    sessions by great lecturers including Daniel Hutzel, the CAP-inventor himself.
    We are quite sorry if you missed it – but don’t worry. Today, we want to share the recordings with you so you can catch up! 🙂

    Opening

    Welcome words by Volker Buzek and kicking off the event.

  • Upcoming blog series about on-device UI5 testing with wdi5

    TL;DR: Check out the github repository of the Open-Source testing framework wdi5 (/vdi5/). Contributors welcome!

    We all agree on the mantra “software testing is important”. Yet we all write too few tests and dedicate too little project-time to creating tests. Why? You answer. Because we at j&s-soft do things differently: we recognize the business value of writing unit- and integration tests and make enough “room” for it in projects.

    Especially in the area of hybrid apps – i.e. web applications running natively on the phone or desktops via tools like Cordova or Electron – testing end to end functionality, including native capabilities of the respective device, is demanding. And as we write more and more productive hybrid OpenUI5/SAPUI5-apps for our customers, we pro-actively started addressing these challenges with wdi5.

    But let me start with some questions I had in my role as project lead of a hybrid app at j&s-soft, before wdi5 was introduced:

    • How to test the hybrid UI5 app on the different devices, like smartphones, tablets or desktops?
    • How far can native functionality be tested on the different platforms, like iOS, Android, Windows, macOS, …?
    • Is it possible to test not only the UI5 frontend, but also the service layer and the backend API with the same tests?
    • Can device features, accessed through plugins, be used in a test scenario?
    • What about on-device performance and positive/negative performance changes over different versions?

    Some – if not all – of these questions are solved by running tests on the actual device – best: in the actual productive environment of the device (e.g. slow cellular network!). There are great tools out there which help developing such tests, like appium or WebdriverIO. However, the link between these tools and the underlying app functionality is usually missing. In our case, we most dearly missed “the glue” between the afore mentioned tools in combination with OpenUI5 / SAPUI5.

    To overcome this, j&s-soft introduces an open-source testing framework called wdi5. It uses de-facto standard testing tools and common syntax to run UI5 applications and their tests natively on the devices. wdi5 is maintained on github under an open-source license, can be used in any UI5 project and is happy about every contribution (be it drinks or code ????).

    As the architecture of wdi5 and its manyfold usage capabilities span a broad area of topics, this blog post is only the introduction to a series about wdi5. Stay tuned!