10 Tempting Tips for building SAP NetWeaver BPM Processes
I’ve always found giving out tips is always something of a double-edged sword. The tip that is so useful to me might confuse or even hinder someone else. Like the suggestion we made in the Practical Workflow for SAP book and occasionally on workflow forums that using the SAP basic organizational hierarchy without using the HR module is one possible solution for assigning people, which technically works but I seem to have been walking that one back on sites ever since (no one ever maintains it properly).
On the other hand it might just add a little bit of joy and relief back into their day. Like the lovely guy who sent me a thermal coffee cup halfway round the world as a thank you for my answering a forum question that ended up saving his project (and his sanity).
So in fear and trembling and with all due cautions and disclaimers, and in no particular order, here are some tips for building BPM Processes that work for me and might work for you. Or as I tell my device-addicted Generation Y friends, “just because it’s there doesn’t mean you have to use it”.
And just to stop this being all too dry… I’ve named them after a somewhat eclectic mix of songs I like (ok so maybe sometimes my sanity needs saving too…).
Ooh Ahh… Just a Little Bit – Gina G.
Deploy little and often – especially when trying new things
Deploying little and often is sanity-saving measure, especially when you are trying some new technique, option, or function for the first time on this NWDS/server combination. When you’ve made 15 different types of changes and one of them is stopping your process but from deploying (or worse… it deploys to the Process Repository but doesn’t activate), working out which one is the offender is just not fun. Traversing SAP Logs, system logs, deploy logs, authentication logs, web service logs etc. might eventually get you there, but it’s a lot easier if you know what you did that broke it.
This is especially true if your NWDS and server versions are slightly different (out a support pack or two) so that something that builds fine suddenly has problems when you deploy. A case in point – at one of my sites my NWDS version is 7.3 SP07, my BPM server version is 7.3 SP05 – which means the built-in mapping function “IF” is deprecated on the NWDS but the new “if” command that replaces it isn’t recognized by the server – so if I use the new “if” my process deploys but won’t activate in the Process Repository and the server logs just give vague mapping transition exceptions. Making an “if” command the only new thing I added to the deployment was how I tracked down the problem in minutes.
Hard to Say I’m Sorry – Chicago
The Build Log is My Friend
Ok so I admit it, the first dozen or so times I opened the build log I closed it down just as quickly. Clearly we were in geekville territory (make no sudden movements and back away slooooowly). However I now freely take back all the inward reservations I was mentally sending in the direction of the build log developers, as I have found that learning to read the build log somewhat is moderately useful, even if you aren’t into the intense detail.
One of the useful things the build log shows you is the progress through the build. When building a Process Development Project containing 11 processes and sub-processes and almost 20 tasks, I could quite clearly see the order in which the build was progressing – which processes and tasks were ok and where it stopped and threw an error. Sometimes even the error message is not only helpful but encouraging, for example they usually tell if you Quick Fix in the Problems view is worth a try.
I’m spinning around – Kylie Minogue
Finding problems that need resolving
When you are trying to find the problems you need to resolve, the error marker icons (red circle with black cross icon) are a godsend. When I first started building processes I made the rookie mistake of only looking at error markers in the process diagram. With a little more experience under my belt, I’ve learned to also look for them in the Project Explorer and Outline panes, and of course in every data mapping view. The warning icon on the other hand can almost always be ignored (Grammar constraints? Bite me!).
Where Have You Been – Rihanna
Finding missing elements
Every so often, and especially when you are new to the process diagram pane, you drag something onto the diagram – e.g. onto a lane line – and it just disappears into thin air (or at least to some random part of the diagram where you are unlikely to find them again). I’ve also had this sometimes when using the Format Pool/Lane feature. Data Objects, if there is no connector line to a step, are particularly prone to this problem. I’ve found the Outline pane is a blessing in these situations so you can find, locate or delete the offending elements.
Rescue Me – Fontella Bass
Resolving changes in elements, files and diagrams
As a developer who was new to BPM, new to NWDS and new to Eclipse editors generally, one of my major frustration factors was the vagaries of workspace buffering/refresh behaviour. Generally this manifested itself in a XSD or WSDL file that I had clearly changed, the changes were visible and valid when looking at the file in the NWDS, but still those changes weren’t being reflected in Data Objects, mappings, events, etc. The two magic commands that reliably fix these problems are Reimport and Build Project. Both are available from the context menu in the Project Explorer pane.
Reimport is usually all that’s needed to bring in new versions of files and confirm the intended impacts are to be applied to referenced elements. Similarly within Tasks, the Reimport option for updating the task inputs/output of your changed user interfaces is a definite lifesaver as it picks up the changes usually without disturbing your existing mappings. Build Project is especially helpful when you suspect a workspace buffering problem, which I treat as more of a last resort, but has saved me more than once.
By the way if you can’t see the Reimport on your XSD or WSDL context menu, you are on the wrong level of the hierarchy – look for the file in the Data Types (for XSDs) and Service Interface (for WSDLs) folder.
Dem Bones Dem Bones Dem Dry Bones – James Weldon Johnson
Spend time on your XSDs and WSDLs
When I review the time spent on building BPM Processes and related User Interfaces, it’s clear to me that the most important technical activity I can do that helps me reduce time, effort and rework of the overall solution is to spend some time creating high quality XSDs and WSDLs up front.
This is mainly because so many generation and auto-mapping options are dependent on getting the XSDs and WSDLs as correct as I can from the beginning. While it’s not impossible to change these afterwards, tracking down and adjusting all the related elements (steps, tasks, notifications, data objects, mappings, user interface parameters both within and external to the process) is tedious. Regeneration of user interfaces is possible but rarely an option once you have spent significant time getting your user interface layout correct.
Also as a general rule of thumb, make the structure of your WSDLs and XSDs as flat as you can stand to minimize mapping work.
Friday on My Mind – The Easybeats
Minimizing Service Group configuration time
One of the traps-for-young-players is the need to do the (hopefully once-off) Service Configuration in the SOA tab of the SAP NetWeaver Administrator after deploying a process that calls web services. At first you think “but I could have sworn I uploaded that WSDL with endpoint”… but with the chance to reflect you quickly realize that this is about being able to adjust the endpoint as you transport your process from Development to Test to Production Landscapes.
If you have your Services Registry already setup the Service Group configuration is relatively painless. But if you aren’t quite there yet you face having to individually connect each Service Group to its matching WSDL and endpoint … or … you can get back your weekend and use a WSIL which lets you map multiple WSDLs and their endpoints in one go. As often we are calling SAP systems it’s handy to know where the WSILs are buried for SAP systems. Whether you are talking ABAP or Java SAP systems these are the best URLs to try:
Once you call the WSIL you can quickly search for the relevant Service Interface name and check that you have the WSIL you need.
Oh and if you are using a SAP NetWeaver PI system you might also want to take a glance at SAP Notes 1505853 and 1466002.
I Don’t Want to Talk About It – Everything But The Girl
Hiding actions and data objects
So you’ve got your process deployed, working, and you excitedly show it to your stakeholders…. and then there’s that one pernickety doomsayer who’s initial gut reaction and first comment is “can we turn <insert feature here> off?”. Usually this is presented as a change management issue along the lines of “our users are so <confused? thick? untrustworthy? overloaded?> we don’t want them to have to worry about/have access to <insert feature here>”.
While I sympathize with the difficulties of change management, my recommendation for this is always that the customer should first take the time to understand what that feature does before removing it. However if, after due reflection, the feature still needs to go this is the SAP Note you want to keep in your back pocket to tell you what is possible.
SAP Note 1456788 – NetWeaver BPM: Toggle visibility of TEx UI elements
There’s one other beauty of a hidden feature to know that can come in handy. Buried in the Properties of the Process Diagram pane(i.e. selecting the gridded area OUTSIDE your pools) are a small set of Appearance properties. Not only do they let you flip your pool from vertical to horizontal format (or vice versa), but they give you a quick option to hide all Data Objects and their connections, making for a cleaner, more user-acceptable process diagram. Handle with care – and remember to document it so the next developer has some clue as to where all the Data Objects have mysteriously gone.
Wake Me Up Before You Go-Go – Wham!
BPM and Adobe Offline Forms – the most critical things you need to know
The use of an Adobe Offline form as a human step in a BPM Process is a brilliant little feature, and remarkably easy to work with as a developer. This is one situation where using the SAP Library Help pays and pays again because it gives a lovely set of step-by-step activities to put this together with the minimum of fuss.
However there are a couple of gotchas to be awake to before you get going with offline forms:
- You can only receive one Offline Form per process instance. If you need to resend the form again you might need to get a little creative in how you organize your processes and sub-processes.
- The form has to be returned by one of the recipients you sent it to, and can only be returned once. So you need to make that clear in the instructions (user texts) to your recipients. Thankfully there are automated replies built-in if someone tries to send it again or from the wrong address.
- BPM automatically fills in the Submit button for you… but the gotcha here is that the button has to be the first button in the hierarchical element structure as viewed in the Hierarchy View of the Adobe form. SAP Note 1489643 – BPM Offline Form Submit Button URL processing – confidently states “The visual layout can be freely designed and has no influence”, but we all know that’s not quite true. The visual layout influences the hierarchal element structure and vice versa. Especially when you consider that in Adobe hyperlinks are often technically “buttons” too. So you might need to make the occasional compromise in your Adobe form layout to support offline forms with BPM.
Lean On Me – Bill Withers
I’ve often felt “Lean On Me” should be the theme song of all our SCN forums. Our forum contributors are remarkably helpful and patient with other forum members. The queries are wide-ranging and cover everything from detailed how-to information, to help-my-project-just-broke emergencies, to broad philosophical discussions on which approach should your organization (or SAP) should follow, and even the odd letting-off-steam gripe about SAP when we haven’t quite managed to meet your expectations.
Often the only socially unacceptable behaviour is not to have done your homework beforehand – which personally I consider to be simple good manners. Depending on the type of problem, you should have at least attempted to find some information in the SAP Library Help, and/or searched the SAP Support site for relevant notes, and/or read through or attempted relevant SCN tutorials/articles/blogs, and of course done a search on past forum posts.
That said, the ladies and gentlemen of the SCN BPM Forum are a particularly helpful and well-educated bunch – there are even people who can read that BPM build log! So please don’t hesitate to post your queries – that’s why we have forums in the first place.
Oh and don’t forget to pay it forward and help someone else out when you know the answer to their question.
Finally, I’m sure there are many others in the BPM SCN community with their own tips to add. Feel free to recommend your favourites as comments on this blog, or even write your own blog.