Some time ago I wrote: Composite Applications: Hype or Real?? Conclusion was – of course – REAL. During the TechEd in Berlin there were 12 out of 309 sessions about Composites. And as we all know, at TechEd we learn what is/will be real. So again, composites are real 😉
Despite these signals, reality is that sometimes it is hard to explain to customers what Composites are and why they want to implement them. “Mashups, composites, Web2.0 is something for the internet not for my enterprise environment.”
Let me help you with this blog about two real life composites that we have developed for a utility customer. Real life as these applications are live since early 2008 and in use by the end customers and the call center of this company.
Front Office Automation
This application gives call centers the functionality to support offers and contracts in the portal solution. From here, employees and partners (e.g., front office agents and external call center agents) can create and search business partner contacts and register energy offers and contracts. Front Office Automation is composed on top of SAP CRM and SAP ISU, combined with custom Java applications.
Budget Monitor offers the end customers an advice on the contract type based on the consumption amount and rate category. If customers accept the proposal, the SAP ISU contract get updated automatically.
Also Budget Monitor is composed on top of SAP CRM and SAP ISU, combined with custom Java applications.
Sorry that the screenshot is in Dutch. Short translation: You get an overview on the contracts you have. At “Uw voorschot” (= Your budget billing amount) you can see what your current budget billing amount is and on base of the calculated consumption (another composite application) the tool calculates a proposal for your amount. If you agree, just select “hier” (= here) and your SAP ISU contract gets updated automatically. Well of course after some validations 😉
How to compose?
For composing the application we used the Composite Application Framework, release 7.0.12. Application functionality is provided via web services into the CAF Service layer. Role based screens were developed with Web Dynpro for Java. You can read more in my article in SAP NetWeaver Magazine, Real-World Lessons of Building a Portal with Composite Applications and Enterprise SOA.
Besides the lessons that are already described in the article, I would like to point out some lessons on the 7.0.12 release of the Composite Application Framework. (Thanks to my colleagues Ronald Kleijn, Alain Corsius and Peter Mayringer for pointing out the Benefits and Concerns)
- Accessing multiple resources (ABAP, Database (entity services), web service) within one SAP NetWeaver Developer Studio interface. All necessary code is generated so no knowledge of EJB/JCO is necessary.
- Easy web service creation via a wizard
- Easy to add business logic within the application services and entity services
- Easily reusable by multiple applocations
- Once deployed correctly it runs stable
- Based on Java standards
- Use of NWDI and CAF:
- Only 1 developer can work on the CAF project at the same time.
- Metamodel is not usable due to vast amount of xml files which then need to be checked in and out causing a slow development process. Metamodel can grow easily to multiple hundreds of xml files.
- Due to generation and interpretation of the metamodel it takes a long time before the CAF perspective is opened in the SAP NetWeaver Developer Studio. Furthermore an activity is always created when opening the CAF perspective. Checking code quickly for review is in this way impossible.
- Compilation takes extremely long. Can take up to 10 minutes on good performing systems.
- Buggy code generator:
- Poor support for Relational Entity Services and indexes
- Not always working code completion within the application services’ implementation.
- Poor regeneration of changed data structures when creating web services
- No good deployment without starting the generation. Every action needs generation which slows down development process.
- No clear technical error/exception messages. A very common error was a null pointer exception on the ICoreConnectionFactory. This could be due to several reasons, but which was never clear from this message.
- No conversion from CAF release 7.0 to 7.1
- Unclear what data types are supported when using RFC. Issues are with certain decimal and date data types.
- Using entity services only short text can be used for parameters which need to be searched on. Short text is only 32 long and longer types are necessary. Other fixed length of type string should be possible.
- CAF is not mature yet, we experienced a maximum of 2 simultaneous connections to the SAP backend. A patch for the SAP NetWeaver Developer Studio resolved this issue.
And now …
And now we are looking forward to actually use the Composition Environment release 7.1 in a real project environment, especially combined with the BPM possibilities. I already know that this is not some day far far away in the future, but that is something for next time.