As an SAP Mentor, I am lucky to have the chance to be part of the SAP River private beta and get access to SAP’s new Platform as a Service (PaaS) platform in a relatively early stage. Please let me share some first expressions.
Fig. 1: River as a container for speedboats?
This is especially true for data-driven applications. You can get the skeleton of your application – its entities, their associations and relationships, data maintenance screens, and cross-entity forward navigation – up and running in minutes. This includes search screens, a full-blown REST API for your application, and data upload and download capabilities.
Fig. 2: Look and feel of a typical SAP River application
The tight integration of design time and run time allows you to switch back and forth between data modeling and data entry anytime.
The system is extremely robust and flexible with regard to changes in the data model even if there already are data in tables. Changing the attributes of an entity, its relationships with other entities or a composition relationship on the fly is a breeze, even if major changes to the data model occur that would cause you to run away from your SAPGui or NetWeaver Development Studio screaming and pulling out your hair if they occurred in classical SAP development environments.
Fig. 3: Form Editor
Because the user interface and the data model are really one (the data model and REST API are derived directly from what you model in the WYSIWIG form editor), you don’t have to go through the trouble of manually keeping the database layer, access layer, UI layer, and service layer consistent with each other as in more conventional development models.
(I should add that although every user interface starts out as a data maintenance screen, it’s possible to move away from pure Create-Read-Update-Delete user interfaces towards task-based user interfaces.)
Going beyond reading and writing data from and to database tables, there are several ways to incorporate business logic into River applications.
Fig. 4: Action Edtor
My impression is that while the Create/Read/Update/Delete data (CRUD) and user interface part of an application may be 10 to 50 times faster (depending on developer skill) to develop in River than in ABAP or Java, the effort for implementing business logic is about the same in River as in traditional development platforms.
If you invest just minutes into your user interface, you get off-the-shelf screens that closely represent your data model. If you want more control over the user interface, you have several options that allow you to deviate more or less from the standard River look and feel:
Unfortunately, the default style and colour scheme looks very different from the SAP Signature Design Theme so River has – currently – a very un-SAP-like look and feel.
I suggest that the River team change this quickly and make default River applications look more like Visual Composer, Web Dynpro, NetWeaver Business Client, and Webclient UI Framework: While it my appear to be nitpicking on a superficiality, the audiences of early-stages River demos are likely to be key influencers and decision makers. If these key people get the impression that River is, in its DNA, an isolated tool, or a platform for building “silos in the cloud”, River will be dead faster than you can say “bang”. SAP would be well-advised to stress the integration capabilities of River and its role as a speedboat circling the supertanker of the SAP Business Suite any way they can.
River allows three kinds of service integration:
I’m not quite sure yet how difficult it is (or will be) to implement asynchronous integration scenarios.
The most significant type of integration will be River calling SAP Gateway. SAP Gateway is an add-on to SAP Business Suite systems that allows you to expose its data and functionality through Atom-based REST web services. SAP Gateway speaks exactly the same protocol natively and allows you (currently, but not for long, with heavy XML editing) to created Linked Applications whose data can be displayed, edited, and otherwise managed in a River application but reside not in River’s database but anywhere they are accessible through Atom-based REST web services.
This means that River's primary use case will not be stand-alone applications ("silos in the cloud") but fringe or edge innovation on top of the applications in your on-premise SAP back-end or other core applications (speedboats).
Alternatively, integration via CSV file export and import is possible but limited to root entities: If an entity has a hierarchic structure and contains sub-nodes (composition as opposed to aggregation with independent entities), these cannot be exported and imported via the CSV file import. As a work-around, you can create complicated constructs in which you upload sub-node data into one table (staging area) and then propagate it into another by means of custom actions.
The overall principle seems to be: Plain vanilla River applications are available at your fingertips and within minutes; if you want to deviate from the default way of doing things, it’s usually possible with more or less additional effort. River never feels like a closed system and is much more open than, say, Visual Composer. On the other hand, many development tasks are completed much quicker than with Visual Composer. I would say it is really unparalleled for data-driven applications. (See Jürgen Schmerder’s excellent blog post SAP "Project River" - how does it compare to xyz?.)
The obvious benefit of Platform as a Service (PaaS) offerings is that you as a developer or Independent Software Vendor (ISV) and, more importantly, your customers don’t have to operate the platform. When customers ask you about sizing, the server resources they have to reserve, the requirements for hardware, operating system, and database, and about the deployment procedure, it will be nice to tell them they need just a standard web browser, internet access, and a URL – and not to worry about deployment.
If you run SAP NetWeaver Composition Environment, Enterprise Portal or AS ABAP as an on-premise development platform, you’re likely to have at least one person permanently busy administrating and maintaining the platform. That’s part of the total cost of ownership. At River, you’re not an owner but a user, so you will have to invest less time and effort into keeping the platform running and up to par. However, it's unclear how this will affect the cost side because, to my knowledge, the pricing models and rates for SAP River are not yet known.
I was surprised by the sophisticated application lifecycle management functions built into river:
There is so much more to say I cannot cover in this first blog post. Just some keywords: