srinivas.reddy

9 Posts

Having recently got my HTC Desire HD android phone, I have been trying out lot of things, as a end User and Developer on it. In this blog I would like to share some of my experiences. As someone involved with Mobile app development I am impressed with the ease of use (even my 3 year old kid can use it) and feature set available. I better understand know why Google’s CEO Eric Schmidt keeps emphasizing ‘get your best developers to work on Mobile!’.

After getting to startup my device (must say slot to insert mobile card in the phone can be better) as probably most people do I installed social networking related apps (Facebook, Twitter, LinkedIn, Foursquare). It was interesting to note LinkedIn had no own app (unlike for Blackberry) for Android. The usage of Android Appstore itself to find and install apps was easy. But still not sure what’s the difference between HTC likes and Market app installed on the device by default to install apps from the appstore. Having added a 8 GB SD card could at least could install apps without needing to worry about space and the good search integration in device makes the lookup experience nice. Liked the integration of Google content in the device including Reader app (to read blogs), People (i.e. contacts, like the way it links contacts from facebook and other services), GMail, Maps, YouTube, Google Places, Google Earth, Google Sky and Googles. While some of the applications clearly need more work the current feature set is also impressive. I mostly find my self using the Barcode Scanner app to scan barcodes on my PC to install apps on my mobile, its kind of neat and no typing effort :)

Other apps I am currently using include MobileVoip (as a Voip user find this pretty convenient), Dropbox (like the idea of access to files anywhere, but would expect google docs would do this for me sometime…), Evernote (like to idea of digital notes but did not use much still), Barcoo (a consumer app to scan barcodes to get product information). There are some apps installed for Exchange rate info (does not work currently...), Weather and Stock information as well.  As for the games have the usual suspect top rated free apps (Angry Birds, Talking Tom, Dora Memory, Kids Puzzle/Number games, Teeter,..). Mostly motivated by my kids needs, but must say he really loves them all!. It would be great if you could just export all installed apps and share it, maybe just need to find the app that does it ;)

Now to switch gears and put on my Developer Hat. Its nice to use the many apps out there but it would be more fun to develop own application :) I tried this out using the Android SDK with Eclipse plugin and using the Adobe Burrito release.  While details on using them can be content for next blog, in short its easy to use the environments to quickly develop apps for Android. The Video of my demo app developed using the Adobe Burrito can be found below. This demo (work-in-progress) adapts the Flex Mobile Survey Ape sample app to work against the SAP River platform.  

 

I found using Mocking UI development tools particularly useful to think through the Mobile application idea and share with others. Some tools that I tried out and can suggest are AppInventor tool from Google and Balsamiq mockup tool, I find the latter tool better. If you plan to work on Mobile apps in the SAP environment than projects in SAP Code Exchange can provide a good starting point. This blog on using SAP Xcelsius on Andorid phone, also gives some idea of potential for Mobile content on Android.  Using OCR cloud service to automate data capture on the device is one area I find interesting in context of mobile apps. Augumented Reality app Layar   also opens up interesting options for contextual apps on the Mobile device. Hopefully I was able to inspire you to use and build apps for the Mobile platform..

I would like to share my experiences in learning and using OAuth in this blog entry. Authentication is the first feature we will encounter when we try to use any (web) application. OAuth is a open protocol to standardize authentication. It has already gained wide industry acceptance and most web users are likely to have already used it without actually knowing it (ex: using their facebook or twitter user to login on to  other services be it slideshare or host of other web 2.0 applications). While there are other contending standards (open and proprietary) in this area such as openID, facebook connect and google connect to name a few, currently OAuth seems to be the way to go for most vendors/developers.

I have tried to learn OAuth by actually using it to access Google Gdata API’s and SAP Streamwork API’s. Using the Google App Engine I created simple web apps that use OAuth for authentication to these services. Using the Google plugin for Eclispe its pretty easy to create web apps for the Google app engine. I used the Java SDK to build the web apps. The tricky part was to get OAuth to actually work and get some real data!

Below are some of my nice to know’s/gotchas from the project

- Goolge OAuth playground tool was pretty hand to understand the whole sequence of OAuth dance. There are actually 6 steps before you can see some real data! While the whole process is pretty cumbersome one can only hope that vendors will standardize on it and the effort will payoff

- For Goolge services I followed the instructions here. I used the 3-legged OAuth and signature method HMAC-SHA1. I tried with Public key/private key (RSA–SHA1) but it was too much trouble and could not get it to work.

- I used the Google App Engine OAuth demo app code here to test the GData API’s. It took me some time to get all the keys/Tokens to work but the most time was lost step where I had hard time to see the actual data. I run into this issue which cost some time.

- My experience with trying to get OAuth to work with SAP Stream work was much easier thanks to the blog entries SAP StreamWork OAuth, a code walk through. and SAP StreamWork REST API Authentication, Authorization, and OAuth. I basically adapted the code in the blog to make it run on the app engine.

- The demo of the running apps can be seen here for the Google OAuth Sample App-

 

and here for the Streamwork OAuth Sample App

 

- I would be glad to share the code if interested contact me.

Now that OAuth actually works for these services I can begin with the actual work of building some interesting composite mashups :o)

Having got a Christmas gift of Developer access to the sandbox system of 12psrints.com, I did a test drive of it and am pleasantly surprised by what it offers. I would like to share my related findings and thoughts on this blog.


What did I do with it?


I played around with its REST based API for Method invocation (in JAVA, Flex and using CURL). It was amazingly easy to add content (Activities/items) using the API's. While it supports adding different types of content, adding Table type items would be of particular interest to applications. It will be surprisingly easy for example to create Decision Activity, based on data available contextual inside (SAP!) Applications, by using the REST API's. If you have read the book "Driven to Perform", you will find many examples on how such collaboration can help business.
I tried to use the Custom Business Method development feature (in Flex). It was relatively easy to expose my custom Flash application as a business method and then embed it in any activity as needed. I must admit I did not understand what the container was doing with it but it least did what I wanted :o)
Other features that impressed me were the easy with which documents (tried with PDF) could be added from local file system including import of Excel files which can be straight away used to create charts.


What would I like to try out with it?


• "Contextual integration" in SAP UI's (ABAP/JAVA webdynrpo, Flex, BSP...) using REST API's
• Expose SAP UI's as custom Business methods (ABAP Webdynrpo flashislands?)
• Voice apps integration. You can check here for some motivation
• Integration with BusinessObjexts Explorer and other BusinessObjects OnDemand products
• Integration with other social networks/communities (including SDN, Twitter, Linkedin..)
• Google Wave and Google docs integration


What can be better or what I did not understand?


While I liked the coordinating and Decision making related features, I must admit I did not understand the analysis related features. In particular how it can consume external content. I assume its work in progress, it’s still Beta release after all!. While there have already been critical reviews on it by experts on business use cases for it, as an optimist I would prefer to see what others are doing here. What can really help would be public (cloud) access to SAP data. It’s here I think the SAP SAP releases Simple Sample Applications for Enterprise Services Consumption can really help. While I continue playing around with my Christmas gift, hopefully have managed to make enough people envious and wanting to have this gift.

There is a lot of media coverage these days about 'Social Media'. In this blog I would like to share my views on Social Media and its implications for (personal) productivity. 

Some recent reading that got me thinking in this direction is a blog entry on the same topic on Oreilly Radar and a SDN The specified item was not found. on Social BPM. Before getting into the details having a common understanding on what social media means can he found here from Wikipedia. As 'Mass Media' and 'Communication' make the transition from being traditional monopoly (walled garden) Industries into being a more open 'Social Media' driven ones, powered by the Collective Intelligence of the masses collaborating using the Internet, the changes can be felt in all Industry verticals.  The Business model transformation effect of Social media usage has been well established starting from success of Open source software to increasing adoption of network driven 'Open innovation' culture across Industries.

Given that the Individual and Enterprise participation in Social Media is a prerequisite, how can we do this in a productive manner? To be more precise who should contribute, how much, how and who is going to measure the value of the contribution?  For example - Not sure how important/useful it is to frequently update status on 'what are you doing?' . While increasingly Enterprises formulate rules for engagement with social media, it would to an extent give a new definition to the 'social' aspect of the interaction. Given that there are a lot more 'consumers' of social media than ‘producers', the drivers for contribution to social media need to be better understand. Given most people have a day job to do and a family life after, the consumption driven social media is probably not too surprising.  While IT innovations (read mobile devices, broadband networks...) are making it increasingly easy to contribute to social media, the trend is probably being more driven by the younger generation (who are natural users of social networking sites).

Given the 'information overload' we are already under data from additional social media channels (blogs, twitter, waves,..) only makes the 'productivity' problem more worse (for producers and consumers). While the extent of social media activism depends on 'social' inclinations of individuals, provision of tools for 'smart' social media consumption can definitely help. As a regular user of 'Bloglines blog reader' and 'Windows Live Writer', can only wish for more such tools to enable productive usage of social media. While the natural human interaction with social media (embedded in the context of human interaction) needs a lot more innovation we see some already being built into the tools (ex: retweets). While developments in areas of 'Text analytics' and 'Event Stream Processing'  promise huge productivity enhancements for social media consumption, I personally think the production process still lags in productivity.

With increasingly more data being accessible by public API's every day, we will see a lot more collaborative use of it using social media. Hence it's a good time to think of how we can 'sustainable' be part of the social media driven innovation ecosystem.

Srinivas Reddy

Inside Processes

Posted by Srinivas Reddy Apr 30, 2008

I would like to share my new insights into the Process world and build on Process Technology Trends Understanding Business processes (or any processes for that matter) needs a deeper look at work itself.  In some sense its a history of evolution of man and machine.  Over the years human work has transitioned from manual labor to increasingly intellectual work (as in designing better machines which automate manual work if you like).  In this transition the processes followed by humans to do work also changed. 

In modern organizations its normal to see most (manual) work automated with humans usually acting as handlers of "exceptions" in process when things do not work "as designed".  The traditional "blue collar" (as in manual work) and "white collar" (as in management work) jobs are being replaced by new terms such as "information worker", "knowledge worker" and "business user". Without going into what this terms can mean, in any organization we have one set of people working on the planning/monitoring (be it strategy, new product/service ideas, process design,...) and other set working on the operations to get things done.  With the companies increasingly demanding more from there employees (be it in form of performance based pay, regular reviews,..) the pressure to generate more value from the workforce is ever increasing. This also manifests itself in 'flat organization structures' and more power being given to the edges (i.e. people who actually get things done).  Some key patterns in modern work are increasing need for "human interactions"  and ad-hoc/semi-structured human workflows. Check link (http://human-interaction-management.info/) for some interesting insights into how such adhoc human interactions can be managed. The patterns it introduces are REACT (Research, Evaluate, Analyze, Constrain and Task) with the Research phase itself being further broken down to AIM (Access, Identify and Memorize) stages.   REACT pattern rightly identifies the different stages a knowledge worker goes through in his work, it also provides details on how human interactions needed to transform information into knowledge that can be executed as work tasks.  While tool support for such interaction patterns are still evolving, it rightly identifies that processes with human interactions (using digital tools or otherwise) are at the heart of knowledge work. 

Another interesting view to process patterns can be checked out at link (http://www.global360.com/blog/index.php/2008/03/04/prevalent-process-patterns-enable-bpm-benefits-differently ).  At one end are core standardized processes (mostly automated) and at the other ad-hoc/semi-structured domain experts driven work processes. Most process platforms (in all the different flavors that they come) are good at handling standardized (i.e. static and pre-designed) processes, its in support for dynamic and adaptable processes that new efforts are being focused. Service Orientation (as in exposing of business logic using open api's) of applications provides a good foundation for design of dynamic processes. Its here that process composition using transactional, analytical and collaborative services can add most value.

One latest addition to the process world is the latest buzz word, 'Business network transformation (BNT)'. See link (Business Network Transformation (BNT) and process-like interactions) for a interesting view on what BNT could be. In some sense business networks are "business versions" of social networks, so they can have a transformation effect on businesses  just as social networks can have on Individuals.  As the article rightly points out business context needs standarized network interactions for good reasons. While having such collaborative processes with network partners can have transformational effects on business, a prerequisite for this is a process platform which can enable such interactions "by design". In any case a lot of action is in store for the business process expert!.

Off late I am trying to understand process technology and the changes it's going through. I would like to share my current understanding.  Historically process automation has been at the heart of most information systems (enterprise systems in particular).  In early times, application infrastructures included 'workflow engines' which ensured 'work flowed' digitally between human user and system as efficiently as possible. Example: when a new employee is hired a series of workflow processes are started like for allotting equipment, training, salary payment... The system ensured that the work is pushed to the right person and the process gets completed.  With the increasing digital nature of work (ex: connecting with vendor systems, employee self services, performance KPI's, regulatory compliance...) more process steps got automated. Process technology which existed in a single component system (ERP systems for example) increasingly needed to interact with multiple internal and external systems. 

While one aspect of process technology needed to interface with human users the other needed exchanging messages with other systems  On one hand 'task management engines' where built which are a kind of abstraction on top of different 'process/workflow engines' and provide a 'universal work inbox' to human end users. On the other hand we see many 'messaging middleware / enterprise service bus' addressing process automation across component systems. Two recent developments of particular interest here are 'Service oriented architecture (SOA)' and business process standards such as 'Business process execution language (BPEL)'.  SOA ensures that component systems expose functionality as (web) services. This is a precondition to compose composite services/process in a flexible way.  BPEL and related standards help to standardize the way we model business process and the related execution runtime.

Process technology has a important role to play in increasing end user productivity and driving innovation. Seamless integration of process steps into end user interfaces be it office clients (as in the case of Duet), web based collaboration portals (such as Enterprise 2.0 applications) or custom widgets are part of this productivity enhancers. Innovation needs adaptive systems for creating next generation business processes. How do we design adaptive systems?  It has a lot to do about having a process technology, which enables flexible 'model driven' process composition. As we transition from 'component based'  to 'service based' systems its important to understand that both technologies are complementary. What's new is the ability to create business process on the fly, which are executed collaboratively and leverage the predictive capabilities of the huge data warehouses we are building.  The four key building blocks for this as I see are 'process engine', 'analytical engine', 'transactional engine' and 'collaboration engine'. I see here the role of process engine to leverage the other three engines to create the next generation 'process technology'.  This process technology will come in different flavors ( be it Workflow foundation as Microsoft would call it or many flavors of  Event driven middleware),  but at the end its about how 'well designed' the different components work together. If there is one thing consumer apps can learn from enterprise apps it's about better using process technology. Consumerisation of enterprise apps on the other hand is posing new challenges to process technology. Hopefully we will see more advances in this space in the near future.

Recently I had a challenging task of giving an overview on Model Driven Architecture (MDA) to a non IT audience. It sure was a humbling experience and present here some of my travails. I started of saying: MDA is base architecture for Object Management Group’s (OMG) standards, which include UML, MOF, XMI & CWM. Software development in the MDA starts with a Platform-Independent Model (PIM) of an application's business functionality and behavior. MDA tools convert this PIM first to a Platform-Specific Model (PSM) and then to a working implementation on virtually any middleware platform.

image
I showed the slide above
MDA offers a 'Meta-metamodel' abstraction (M3 level) to represent different 'Metamodels' (M2 level) in a standard way. I could see a lot of blank faces in the audience. I tried to reassure them saying that I had to re-read it several times myself before I understood what they were talking about. It did not seem to have helped much. I proceeded saying that 'Models' (M1 level) themselves are instances of the Metamodels. Then came the first question, what is a model? I gave example of a Customer class as a model and its UML representation as a metamodel. Then came the apologetic reply, what is UML? Can you give a simple example like when paying at supermarket? My reply, if you consider your shopping bill, the items on it and amount is the data (M0 level) and the objects used to represent them (like item name and price fields in database table bill) are the Metadata (M1 level), the relational database used is itself an example of Metamodel (M2 level). They still seemed apprehensive why one needed so many Meta levels.

I proceeded saying that the goal of MDA is to raise level of abstraction by enabling reuse at model level. The models are stored in common repository in a standard way. The end users will be working at a model level, with the underlying implementation generated for them automatically. No coding needed (or only minmal coding needed). I went on tell them how we were doing this at SAP as a part of the development of Composite Application Framework (CAF)
image

For the business applications domain we have metamodels for User interface (UI) layer, Process layer, Service and object layer. Based on this users can develop application specific Models with the underlying implementation generated for them based on the Models. While I was expecting a great applause from the audience, there was still apprehension on a lot of faces. Then came the usual down to earth question, when I use a calculator I know it works correctly can the users of MDA models be equally confident? This was a tough one, I had to agree that was the vision. The process on industrialization of services has begun but it will take some time before it becomes as mature.
Obviously explaining things without technical jargon is tough and I sure did a bad job by starting with the 'Meta-metamodel' level. Hopefully my next audience will be luckier.
If xApps are about next practices in business, xApps development is about next practices in development of business applications. xApps development leverages the composite application framework(CAF) to enable weaving together of applications, a la Carte. The CAF in turn leverages the different components of NetWeaver platform, the Java stack of the Web Application server in particular.


So what are the next practices in development of business applications? I will try to give a brief overview of these, details with code samples can be substance for future blogs.

- Model driven and pattern based: as stated in my previous post, xApps development is all out models and patterns.

- Service-Oriented Architecture (SOA): CAF offers a layered approach to application development. By decoupling different layers of a application it enables easy development of composite enterprise services. As enterprises struggle to find a way to leverage their existing IT infrastructure, xApps development shows the way.

- Application Lifecycle Management: a robust application framework offers not only an ability to model and develop applications but also a infrastructure for its lifecyle maintenance. xApps developments seamless integration with Design Time Repository(DTR - a source code management system from SAP), Central Build Server (CBS) and Change Management System (CMS), enable this.

- On Demand Computing: web application server provides an extensive infrastructure for monitoring and management of applications. Supportability features including API's for logging and exception are part of it. xApps development leverage this to enable on demand computing.


Hopefully this short overview has excited you to jump into xApps development, as this is where a lot of action in the future will be. While the road from 'next practices' to 'best practices' will be a challenging one, xApps development raises the bar for ease of application development. It surely is no silver bullet but makes the transition into service oriented world a 'mission possible'.

I still remember the excitement when the xApps team was formed and the initial slides of what we shall be doing was presented (i.e. a 30,000 feet above the ground view). Being part of the team since inception has been a technically rewarding experience. I hope to share some of this through the weblog.


Being part of the CAF team in xApps, my focus is on technology. Whenever I tell people that I work for xApps, they get very excited and ask me - so how do you develop xApps – my short answer is abstractly. Abstractions are what xApps development is all about. Each layer of the stack i.e. User Interface, Process, Service/Object & Persistence is abstracted. Metadata is at the heart of abstraction with each layer having its own metamodel. In the UI Web Dynpro has its metamodel, in the process layer guided procedures has its metamodel, and the CAF metamodel is used for the rest. Each has its own repository into which the design time metadata is stored. The SAP NetWeaver developer studio plugins for each layer provide the design time environment based on the respective metamodels. It is important to note that each layer is decoupled from the other. Following the model driven architecture (MDA) paradigm, the runtime is generated for each layer based on the modeled design time metadata. This involves the conversion of the abstract models into real Java code on the fly. Without going into the details (it can be a topic for future blogs) it must be said that each layer comes with a lot of functionality built in. Be it Web Dynpro patterns, preconfigured guided procedures, or core services, to name a few.


My message here is that a lot of technology has been built to simplify application development. As the rubber meets the road I must say that the view below is as good if not better than that from 30,000 feet above, and the flight was great. I hope you are all equally excited and ready for takeoff.

Filter Blog

By date: