[Composite Apps - MM] QR-Code

The 'Composition Application - Missing Manuals' initiative hosted on the SDN Code Exchange Platform aims to create a productivity starter kit and sandbox system for the development of Composites by providing technical libraries and an easy demo app documenting its features & how-to use them.

Links: Composition Application - Missing Manuals | Twitter

Ready-Set-Go!

Having set the tone in my CompAppsMM #1 – Mission Statement a few days back I now would like to get started and talk about the anticipated architecture of the 'DemoKit' sample application. As you remember, one of the main aspects of Composite Applications is their adaptability to change. It's that inherent flexibility of Composites that makes them a good long-time investment and fundamental cornerstone of a Service-Oriented Architecture (SOA). I already shared my stance on this topic in a recent article for the Release of the 1st Mentors Quarterly titled 'Innovation without Disruption' and I see little-to-no value in paraphrasing it here again. Hence, I refrain from repeating that particular topic... and directly jump to the architecture overview.

Architecture Principles

In principal, the 'DemoKit' application design is based on a traditional multi-tier model, which clearly helps to separate the individual concerns that Composite Applications (Composites) have to take care of. We have the good old-known layers for data access, business logic processing and presentation plus an additional process orchestration layer on top (for our BPM needs) - nothing overly fancy or innovative at this point. Sure, this design approach certainly qualifies as a seasoned one, yet it has been highly effective in the Java Enterprise world for years and proven to be a very robust and reliable blueprint to develop enterprise software.

The main idea is simple: we decouple the Composite from a concrete backend system or data model/type system by separating the data access from the business logic processing. This is the first of many level of abstractions we will apply that cater to our flexibility needs from the inside.

We invest into our SOA by steadily nurturing the repository of services/functionality available in our landscape by exposing the new business services provided by the Composite as Enterprise Services. These services comprise the public API of the Composite, which can then be leveraged and build-upon by additional technologies such as BPM. We will also provide means to alter and enhance the processing flow of the Composites by introducing ExtensionPoints that can be implemented by customers/ISVs in a modification-free manner on the business logic layer.

The API is also the foundation of the presentation layer and as such needs to be flexible enough to be tailor-fitted to individual requirements from multi-channel consumers (desktop, mobile, web apps or other composites.) With all the movement we see in the UI/UX domain these days it seems as valid as it ever was to aim for keeping the presentation layer as lean as possible. That being said, this design approach may speak in favor of shifting some of the controller coding (as in MVC) to a facade layer in between BL and UI layer.

Componentization

As you can see it all revolves around developing a new application based on a set of well-defined, re-usable and loosely-coupled components. Now, that we have come to a common understanding of the fundamental design principles of the application it's about time to map them to our tool set - SAP NetWeaver Composition Environment.

The recommend way of structuring your composite application is to leverage the SAP Component Model in conjunction with the SAP NetWeaver Development Infrastructure (NWDI.) My pal Arvind Goel wrote a series of blog posts on the topic on behalf of the CompApps initiative that I highly recommend:

(For those that prefer video over writing or those who want to get the full scoop I would like to mention the blog post by my fellow SAP Mentor Greg Chase who caught me on tape (or better 'on disk') just after TechEd. In our Video:  Lost #SAPTechEd sessions – CD301 “Advanced Composite Patterns” about the Loose-coupling and strong bonding @ TechEd 2010 we talk about Componentization and its importance.)

Application Architecture

Based on the information provided in these blog posts the basic structuring of the 'DemoKit' application is as shown in the screenshot at the right. It illustrates a Development Configuration (aka development track)  called CDEMOKT_dev, which consists of the following 7 Software Components (SCs):

  • [CD_DEMOKIT] This SC is special and only contains the Product Description of our Composite as required by the Composite Designer Perspective.
  • [CD_DEMOKIT_BC] All the connectivity and persistence related concerns are encapsulated in a dedicated Backend Connectivity (BC) layer.
  • [CD_DEMOKIT_BL] The business logic (BL) belongs here and the functionality is typically implemented based on Stateless Session Beans (EJB 3.0), which can be exposed as Enterprise Services.
  • [CD_DEMOKIT_CMN] This SC contains both the technical components (TC) as well as the domain model and service interfaces of the demo application. This will be the first Software Component we will setup as we follow a bottom-up approach. The application specific objects defined on this layer are used across all other layers and as such have been labeled as Common (CMN).
  • [CD_DEMOKIT_PL] We also separate the process layer (PL) which acts as a container for our BPM process models.
  • [CD_DEMOKIT_QM] This Software Component is the home of our unit tests and developer tools such as stubs, scripts and configuration tools etc. It may or may not be shipped as part of the application.
  • [CD_DEMOKIT_UI] The demo app ships with a standard UI (one to start with), which in encapsulated into a distinct SC as well based on our design principles.

We'll have a much closer look on all of these layers/components as me move along. Now that we have a rough overview about our main building blocks it's time to set the foundation of our demo application. As mentioned above, we do that from the ground up - in our case it means we will start with the common layer and more precisely the technical components (please see the screenshot below.)

In the past, we made very positive experiences in laying out this foundation first before expanding the development team. This way, all the required cross-cutting concerns have already been establish and are more likely to be used in a unified manner - by all developers.

That's important: the design of the application emphasizes on Separation of Concerns (SoC) and the development should be setup alike - to minimize redundant work. The sooner the tool set is in place, the higher the chance for broad adoption.

A word on the SAP Component Model and Code Exchange

As mentioned above, the SAP Component Model and NWDI are the recommended way of developing Composites and as such a solid understanding of these concepts is vital to get this important aspect of the application right. It's the first step of the development phase and if you don't do it properly at the beginning it may grow a very long tail. Therefore, we believe this aspect of Composite architecture is too important to be neglected.

Unfortunately, the current toolset around Code Exchange and the underlying Subversion source code repository does not yet provide easy means to use Software Components and Development Configurations. In the perfect world we would have a simple option that would allow us to import software configurations by using the standard wizard directly out of a Subversion repository hosted on Code Exchange. A fresh breeze of reality makes us realize that this day is yet to come and an evaluation of alternatives is required. Fortunately, the SAP NetWeaver Developer Studio (NWDS) provides simple ways to import Software Component Archives (SCAs) and we opted for leveraging this functionality and providing our 'DemoKit' application as SCAs.

I've written a short document that walks you through the process of importing the SCAs into your NWDS to get the 'DemoKit' app installed locally.

Next steps

So, in the next episode - which is already in the making - I'll get started with the COMMON and QM layer. True, we are not really moving in god speed, yet the steady and medium-paced progress should allow the interested followers to catch up on the reading, jump aboard and then move along. Such an excursion is always twice the fun when having good company, isn't it?

[Composite Apps - MM] QR-Code

The 'Composition Application - Missing Manuals' initiative hosted on the SDN Code Exchange Platform aims to create a productivity starter kit and sandbox system for the development of Composites by providing technical libraries and an easy demo app documenting its features & how-to use them.

Links: Composition Application - Missing Manuals | Twitter

First things first

In my Composite Apps - The Missing Manuals I introduced the idea of "Composite Applications - The Missing Manuals" and the team behind it. In today's edition of my accompanying blog series I'd like to provide some more details and background information about the concept we have in mind. I'll talk about our vision and then discuss how we approach our first contribution to SAP Code Exchange.

One of the main motivations that drives the team behind the project is to roll-out our experiences gathered in the process of developing Composite Applications over the years. I'd rather avoid the term 'best practices' as there's a bad taste to it and may lead people to believe that there's such a thing as a silver bullet or one-size-fits-all solution. There is not! By that rational, all we can and want to offer is to share with the community what worked for us in the past - there is a great likeliness that it may also work for you or at least provides you with a wider spectrum of lessons-learned to make a more educated decision in the future.

From the Ground up

In a nutshell, our mission statement revolves around documenting our approach to developing Composite Applications based on SAP NetWeaver Composition Environment from the ground-up. As such, it has to be considered as a companion to other resources already available:

So, what is our unique selling proposition (USP) you may wonder? Fair enough.

What we want to accomplish is to develop a complete sample application that illustrates/demonstrates all aspects of developing this type of enterprise applications and to document this process in parallel. We are aiming for a holistic approach that does not only provide results, but also reveals the reasoning behind the design decisions taken.

We believe that flexibility is the key characteristic of Composites and as such some of the recurring terms we will elaborate on are Separation of Concerns (SoC), Aspects, Loose-coupling, abstraction and proper componentization. We have already started doing so by sharing some of these generic design principles that  our sample app 'DemoKit'  will be based on (please find the complete list of documents here.)

Technical Components

Now that you know what to expect it's time to have a closer look on the details. As always when developing a new application it is a good investment of time to think about the purpose of the to-be-build application for a while before getting started. In our case the 'DemoKit' application is supposed to be an easy and comprehensive demo application showcasing design patterns commonly used to develop composites.

It contains several technical components (TCs) that simplify the usage of cross-cutting concerns and hereby allowing the developers to focus on the business processes. The concept is to provide an application frame set that can be leveraged to more rapidly build applications without having to re-invent the wheel again in regards to all these low-level and non-business related aspects of software development. I intentionally avoided the term "framework" in my last sentence, as we certainly do NOT intend to build another framework on top of a framework!

As a matter of fact, flexibility (our highest-valued good) demands that the entire application is build in a loosely-coupled fashion. As such, every technical component is well-advised to be minimal obtrusive to the application that wants to leverage it. To our experience, a great way to achieve this loose-coupling between technical components and the embedding application is an AOP-like approach of treating cross-cutting concerns as Aspects. My buddy Shobhit has written a great introduction blog about this particular topic a while back: Lower the TCP!

In addition, you may also want to watch the Video:  Lost #SAPTechEd sessions – CD301 “Advanced Composite Patterns” that SAP Mentor Greg Chase and I recorded after SAP Teched last year. In the second part/video of the session I talk about the topic of Aspectizing (around the ~ 9:30 minute mark.)

DemoKit Sample Application

But the 'DemoKit' is more than just a set of technical components. Much more. In order to demonstrate the ease of integrating the technical components with any given or to -be-created application we will develop a small sample application for this purpose. As we want the people to be able to focus on the technical aspects without being distracted by overly complex business logic we opted for a simple app. One of the most cost commonly found business object in enterprise applications is the 'business partner' and therefore it was a natural choice to build a business partner cockpit that allows you to search and maintain business partners. Maybe not the most original idea, but certainly one that helps lowering the entry-barrier. And... this scenario is ideally suited to demonstrate the flexibility of the application as we can easily connect various backend systems as data repositories.

Vision

Now, if that by itself didn't get you on the edge of your seats yet then let me share our vision with you. We envision the 'DemoKit' as a sandbox that can be used as a generic starting point to develop proof of concepts (PoC) using emerging technologies. We would love to see other people on Code Exchange to build on-top or around our 'DemoKit' and use it as an accelerator for their own proof of concepts and the like. It's a bold vision - true - but then... a wise man once said one needs to apply high standards in order to meet them.

Based on the flexible nature of the solution and the used concepts the 'DemoKit' allows to extend/replace components of the application in a modification-free manner. Connecting new UIs to the exposed business logic API such as Adobe Flash and Microsoft Silverlight are scenarios that come to mind instantly. Or what about creating a mobile (-friendly) front-end using HTML5 or jQuery/jQuery Mobile - or maybe even project Phoenix? The potential add-on scenarios are certainly not limited to the UI layer either...

Due to the Extensibility framework incorporated into the application it will be feasible to plug into so called extension points to alter or extend the processing flow. I already mentioned backend abstraction and the ability to provide alternative implementations of data provisioning. While the initial release will 'only' come with support for two alternative data repositories (ERP and CRM) in the near future we may see an implementation connecting to SAP Business ByDesign or any other system that exposes API to retrieve and manipulate business partners. The sky is the limit... :)

Next Stop - Architecture Overview

Alright, let's wrap it up for today... if you would like to stick around and closely witness our progress you may be interested in the next blog post of the series, where I'll provide an overview about the high-level architecture and a recap on Componentization. Stay tuned...

Introduction

Today I have the privilege to officially announce the kick-off of the 'Composition Application - Missing Manuals' initiative!

Having build Composite Applications on all releases of SAP NetWeaver Composition Environment (NWCE) and its predecessors for several years now we - SAP Custom Development - have gathered a lot of experience in how-to develop this new breed of enterprise software. Since myTalking About Custom Composite Development in 2007 I've been actively rolling out our findings and learnings on behalf of the organisation and in 2011 we want to take our contributions to the next level with this initiative:

[Composite Apps - MM] QR-Code

The 'Composition Application - Missing Manuals' initiative hosted on the SDN Code Exchange Platform aims to create a productivity starter kit and sandbox system for the development of Composites by providing technical libraries and an easy demo app documenting its features & how-to use them.

Links: Composition Application - Missing Manuals | Twitter

Background

Being the lazy developers we are, we try to do things right... and right-away? Right? Great ... thought so! :)

Now, while there's nothing wrong in writing a prototype or PoC - the opposite in fact - as long as they remain prototypes or PoCs and not suddenly get productized afterwards. I think we all heard about these urban legends talking about such incidents happening though... this is where we jump in by providing a toolbox of re-usable components, technical libaries and low-level utilities to get you kick-started!

Our DemoKit comes with several technical components as typically required in any project using NWCE and its core (Java 5 Enterprise Edition application server). The motivation for such a toolset is simple: without having to worry about basic cross-cutting concerns no more, you can exclusively focus on the business logic of your application. These components will be bundled up with a lightweight demo app illustrating and documenting how-to use and integrate them.

We are striving for high standards in both code and source code documentation and we strongly believe that proper documentation goes a long way. (One of rewarding aspects of proper documentation is the implicit permission to reply with RTFM - "Read The *Fantastic* Manual!" ;) ) We have already started our series of blogs providing background information and explaining some of the key concepts; for the complete list please refer to our documentation page. There is plenty of material lined up waiting to be massaged and we will continuously share this information with the SCN community from now on.

The Team

Reema Mittal

Reema Mittal is a Senior Consultant at SAP Labs Custom Development. Currently, she is developing Composite Applications using SAP NetWeaver Composition Environment with a focus on JPA and WebDynpro for Java. Prior to this, she has worked on various development projects in the ABAP world in functional areas like finance, GTS, HR for 2 years.

Katharina Seiz

Katharina Seiz is a Solution Designer at SAP Custom Development. In this role she is supporting customer projects from evaluation to execution. She has more than 10 years of experience across a broad range of SAP technologies such as NW CE, WD4J, Java EE, SOA, BPM, ABAP and WD4A. As core member of the Technology Competence Team she is constantly pushing the edge with her focus areas being User Interface technologies and UX (User Experience.)

Shobhit Garg

Shobhit Garg is a Principal Consultant at SAPLabs Custom Development. In his current role he is actively engaged in developing custom applications on some of the cutting edge SAP technologies. Prior to this he spent close to two years developing the SAP NetWeaver Mobile 7.1 platform.

Arvind Goel

Arvind Goel has been working on J2EE and composite applications developement since 2006 and involved in designing and architecting flexible composite applications.

image

Jens Steckhan is a Solution Architect at SAP Custom Development. He has been programming Java from day one and has worked with a variety of SAP and mobile platforms. He is currently working on the integration of digital signatures and the new German electronic ID into NW CE.

Matthias Steiner

Matthias Steiner is a Principal Solution Architect for SAP Custom Development, where his role is to evaluate SAP's cutting edge technologies and transform them into real solutions for SAP customers using the potential of SOA and composite applications. As a core member of the Technology Competence Network within SAP Custom Development he has been pioneering Composite development since 2004 and has gathered significant experience in numerous enterprise-scaled development projects in both the ABAP and the Java world.

My whereabouts

 

Those who closey follow my blog may have been wondering about my lack of blogging in the last couple of months and the reasons behind it. Well, truth is... the fact that I haven't been as active as in the past in this regard does not mean that I have abandoned this aspect of my job - the OPPOSITE. In fact, I put it to a whole new level... I've been writing a book.

 

Writing a book

 

Building Extensible Composite Applications with SAP - Book Cover

It all started around two years ago with my first few articles and blogs about the topic of extensibility in Java applications being published on SDN, which were well perceived by the community. Shortly after I found myself confronted with the idea about writing an entire book about the topic, which I just couldn't resist. So I jumped on the challenge...

 

I have always enjoyed blogging, discussing technical topics with my peers and sharing my thoughts and views here on SDN. Yet, writing an entire book takes it to the next level for sure.  While I spent more than one late-night session seeing the project's steady progress kept me motivated. The excitement of getting the chance to write an entire book - especially for such a reknown publisher as SAP Press - kept me going for the last couple of months.

The positive feedback I received from my colleagues who reviewed the individual topics rest-assured me that I was on track with my vision of writing a book that offers a unique selling point. Not only does the book cover various extensibility techniques in great detail, but I also managed to incorporate my knowlegde gathered in over 5 years of Composite development projects. As such the book provides insight on best-practices and proven design patterns that help to build flexible Java applications. Despite the title I did not solely focus on extensibility techniques exclusivly, but also point out other topics and concepts typically encountered during Java development projects based on SAP NetWeaver Composition Environment. 

Feedback welcome

 

Enough of the advertizing now... in fact, the main motivation for today's blog has been to setup a place for discussions about the book. I explicitly want to encourage all my readers to post their feedback and questions here. The more, the merrier! :)


PS: Oh, I almost forgot... now, with the book getting into print these days  I hope to get back to my routine of blogging on a monthly basis. The potential topics have been pilling up on my desk over the last couple of months and I sure got some very interesting articles up my sleeve... stay tuned!

 


Extensibility Sessions at TechEd'09

 

As personally I will not be able to attend TechEd this year due to other assignments I'd like to take the opportunity to refer you to some of the sessions presented/hosted by my colleagues that cover the topic:

  • BPM300 - Architecture Guidelines (Oliver Mayer, Volker Stiehl)
  • CD267  - Java Extension Configuration Framework in SAP NetWeaver Composition Environment(Raphael Vogel)
  • BPM360 - Composite Application Development: the Business Objects and Services Layer (Katrin von Ahsen, Stefan Henke and Volker Stiehl

Actions

Filter Blog

By author: By date:
By tag: