In an CAF Core Lessons Learned, I discussed my experiences with the CAF Core as I develop my first Composite Application. In this blog, I will focus on my experience with Guided Procedures. I will describe the steps I took as I learned the tool and a few gotchas that will hopefully help users using the tool for the first time. I wont try to describe all the different Block or Callable Object types but will describe my general approach towards gaining a basic understanding of how the tool works.
As described in my last blog, my goal was to create a Composite Application using the tools available. So I decided to try my hand at Guided Procedures. The first place I started was the SAP Composite Application Framework – CAF Tutorial Center , there are a number of introductory links (especially CAF Guided Procedures Overview that provide enough background material to get yourself oriented. As I looked at some of the tutorials, what really got me excited was the number of callable objects that were possible.
Callable objects are really the lowest building blocks of the processes that you are trying to model. For me, all these different callable objects represented possibility and potential. Actual processes in real companies are on occasion very complex. These callable objects represented the potential to meet the requirements originating from these processes. Since these requirements are varied, Callable Objects represented my ability to respond at variety of levels and use different tools (Knowledge Management, WebDynPro, Batch, etc.) to meet these requirements.
Sorry for that short excursion. So, back to my story. Based on the descriptions in the tutorials, I had a general idea of how to work with the tool. But what really helped and which I used multiple times were the tutorials using the SAP Tutor (For example, the Employee Leave Process tutorial.) These are tutorials where you must enter data into correct fields in the application and an agent leads you through the entire process development cycle. After a while, you get tired of Merlin but unfortunately you cant change the agent.
They are unfortunately a little old (from 2005) but still useful.
I looked at the tutorials and thought I want to try that. Before you run, you have to learn how to walk. Before you walk, you have to crawl. So, I started with the easiest tutorial Search SAP Pages. After I concluded this tutorial successfully, I tried out several real-life scenarios:
- Additional actions in the process. I added a second action to the process. It was based on the simple Search SAP Page action but with a different query value.
- Multiple users in the process. I set the Processor for the each action to a different user and tested to see how/if it worked.
- Access to Processes for users without GP roles. Here I wanted to try the UWL integration. There is an excellent Guided Procedures: Runtime in Universal Worklist that describes the few easy steps necessary. GOTCHA: If the UWL user has no GP tasks available, then theGP SubView in UWL UI will not appear. Only tasks for Action Processors will be visible in UWL. If you are an Overseer, Administrator or Owner you can just see these tasks in the GP Runtime.
Of course, these scenarios work but actually repeating them is useful to get a basic understanding of the real-life implications of GP as well as just get a feeling for how the tool works.
After I felt comfortable with the tool, I started trying out various block and callable action types. The best place to look for details is in the tutorials themselves. Just pick a callable object type and take it for test drive. When you really need a callable object or block type for a concrete requirement, then you know where to look for the best step-by-step description for these entities.
Below, a list of the gotchas that I found that might either prevent problems for others or help them better understand particular aspects of the GP environment. Many of these items belong in the GP WIKI on SDN.
- If you are creating UME roles that are to be visible in GP, then make sure the roles have a description. The GP Design-Time Add Roles dialog searches the descriptions and not the unique names
- Always make sure to save the sub-elements as well when saving a block orprocess,.
- Always perform parameter mapping at the lowest possible level first. If you have a process that contains multiple blocks, then perform your parameter mapping at block level before you continue at the process level.
- When you use Result States in your process development, this is not a choice between actions but provides the opportunity of skipping various actions in a block.
- One of most lessons learned was how to monitor your process instances. When you learning about this GP, this functionality is critical. The best was to check out the internals of a process is to use NetWeaver Administrator. You can find it under yourhost:port/nwa . Then go to Monitoring -> Guided Procedures -> Process Instances tab, then you can choose any completed or running process instance (initiator user has to be set as well), and there you can find all the “debug” infos. If you are attempting to discover why your process isnt working as expected this is the place to look.
- To make testing/starting your first example processes easier, set all roles to Initiator in the Built-in Roles at the process level. This makes initiating process instances in the GP Runtime less troublesome.
- Always be aware of the individual stati of block subelements. Whenever a newer version of the object is available, its status changes to (Deprecated). To update the object, select it from the list and choose Update. The status changes to (Active).
Many of these gotchas are buried the SAP Help Pages for GP but I picked the ones that I found the most useful.
I am not suggesting that I am now a GP expert who knows all about this environment but I feel comfortable with the tool and I know where and how to get the information that I need if I have problems. I hope that after you read this blog, you will also be able to say the same thing. If you have further questions, please use the Composite Applications or comment below.