Nightmarish!!! that is what I would have answered if some one had asked “how is your project on HCM P&F going on?”, but not after you know how to tame the beast. Working on the HCM P&F for the last one year has been a very learning and adventorous experience. Yes, it is a difficult horse to control, sometimes you feel you have to unlearn certain things and throw your reasoning to the back burner..
Nevertheless, we are succesful in deploying some of the most complex forms. This blog primarily focuses on the performance aspect of huge forms which can extend up to 15 pages in size.
For those who are unaware of what HCM P&F is..I would say.. it is a technology from SAP and Adobe to automate HR processes by leveraging the Adobe paper like look and feel, and ofcourse, the robust SAP workflow engine. HCM P&F basically helps in reducing cycle time in the HR processes apart from its other benefits.
So, coming to the topic, Huge forms can be very sluggish and this makes it totally unusable even after you have put in tremendous effort in developing the same. Apart from the documentation provided by SAP and Adobe on the performance front, here are some pointers which can give some throttle to the forms.. But before that…one good news from SAP.. they have released a note..which is a great move by SAP. I have not tried this yet..but would definetly love to.
So, here are some points to take care of.
1. Avoid data refetch in round trips by storing in class attributes and populating back to help values. The drop downs in forms needs to be populated everytime a user event happens or it loses its value.
2. Rules for executing generic services should be laid in place to execute only relevant generic service.
3. Service flags should be set for each user event so that we need to execute code relevant only to that user event.
4. Redundant loops should be avoided to get service fields.
5. Hide certain sections which might not require frequent entry and thus avoiding generic service execution
6. Hard coding of selected independent drop downs whose values do not change like country, currency and language can really bring down the rendering time.
7. Drop downs can be filled using reference drop downs by use of java script so that all drop downs need not be hard coded and changing single drop down reflects changes in all dependent, this improves maintainability also.
8. Last but not the least, be a good programmer and fine tune your queries for optimal performance.
Hope this tips were useful.
My special thanks to Chris Solomon and Otto Gold who were the inspiration for this blog. Chris.. your blogs have been really helpful..Thank you.