<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>alexander.grobe</title>
    <link>http://scn.sap.com/people/alexander.grobe/blog</link>
    <description />
    <pubDate>Thu, 22 Dec 2011 19:56:13 GMT</pubDate>
    <generator>Jive SBS 5.0.1.1  (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2011-12-22T19:56:13Z</dc:date>
    <item>
      <title>Process Feature Patterns</title>
      <link>http://scn.sap.com/people/alexander.grobe/blog/2010/06/18/process-feature-patterns</link>
      <description>&lt;!-- [DocumentBodyStart:a563b751-5379-4aed-b1fd-fb6dc5e681a3] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;There are some useful&amp;#160;patterns that implement features in SAP NetWeaver Composition Environment (SAP NW CE) that are not available out of the box.&lt;/p&gt;&lt;h4&gt;Auto Put Back&lt;/h4&gt;&lt;p&gt;Lets assume that there is a group of potential owners for a task. The first&amp;#160;user that opens&amp;#160;the task will be&amp;#160;its exclusive owner. Until the task is not put back, it will never be visible for the other potential owners again. The assumption behind&amp;#160;this exclusive&amp;#160;task assignment behavior is that the task owner will immediately work on the task and complete&amp;#160;it.&amp;#160;But the owner might not&amp;#160;be able to do that. With time cirtical tasks this can be an issue.&amp;#160;A feature that puts back an exclusively assigned task after some configurable duration would solve the problem.&lt;/p&gt;&lt;p&gt;There is a simple solution for this requirement. Let's look at the pattern below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53819-65946/AutoPutBack.JPG"&gt;&lt;img align="middle" alt="AutoPutBack" border="0" height="291" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53819-65946/281-291/AutoPutBack.JPG" width="281"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;By defining a boundary 'CompletionDeadLineIsCriticalException'&amp;#160;that is routed back to the same task you can define a certain duration until the task has to be completed. If&amp;#160;the task&amp;#160;is not&amp;#160;completed in time the task will be automatically canceled and restarted. The task&amp;#160;will then be&amp;#160;visible for all potential owners again.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Don't choose a&amp;#160;short time interval as this solution puts additional load on&amp;#160;the process server. Also consider that the task is canceled and restarted even if some user is&amp;#160;processing it right now.&lt;/p&gt;&lt;p&gt;You can use an expression to set&amp;#160;the duration&amp;#160;dynamically based on task attributes the describe its criticallity. My recommendation is to calculate the duration in a way that&amp;#160;the exception is triggered at a time with low system usage (e.g.&amp;#160;&amp;#160;at user night time).&lt;/p&gt;&lt;p&gt;The upper process model layout does not&amp;#160;represent the routing back sequence connector properly but I'm of the opinion that implementing such a feature should not mess up your proccess models.&lt;/p&gt;&lt;h4&gt;Draft Handling&lt;/h4&gt;&lt;p&gt;Now let's look at the following business requirements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Business user&amp;#160;wants to save process instances&amp;#160;as "draft"&lt;/li&gt;&lt;li&gt;Automated deletion of untouched "draft" process instances after a configurable time&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The idea is to always actually start the process in the user interface&amp;#160;with a&amp;#160;"save as draft" button. This information is passed to the process context via the interface of the start event. If the&amp;#160;user has selected the "save as draft" option he will get a task in the UWL with attributes that distinguishes it from running instance (e. g. subject "Draft", no due date, etc.). For the automatic deletion requirement we use a CompletionDeadLineIsCriticalException boundary event. If triggered after the defined time period, the process instance&amp;#160;is terminated.&lt;/p&gt;&lt;p&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53819-65947/FullProcess1.JPG"&gt;&lt;img align="middle" alt="FullProcess1" border="0" height="329" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53819-65947/379-329/FullProcess1.JPG" width="379"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53819-65948/FullProcess2.JPG"&gt;&lt;img align="middle" alt="FullProcess2" border="0" height="329" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53819-65948/379-329/FullProcess2.JPG" width="379"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Be aware that process analytics will of course consider this process as started, so you need to correct process cycle time accordingly.&lt;/p&gt;&lt;p&gt;The above process model&amp;#160;brings solutions for more business requirements&lt;/p&gt;&lt;h4&gt;Reuse of Instances&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Ability to&amp;#160;reuse data from&amp;#160;other process instances (running, completed, draft) for new processes&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A solution for this requirement&amp;#160;is to leverage reporting activities and reporting data sources to store process context data that is used in new process instances.&amp;#160;You will need to create a 'process picker' user interface component in Visual Composer using the&amp;#160;standard SAP and custom reporting data sources with the right filter criteria. The custom reporting data source&amp;#160;is used&amp;#160;to start new process instances&amp;#160;populated with&amp;#160;data from other process instances. Be aware that the user&amp;#160;can only&amp;#160;use data from other process instances if he was involved in that process.&lt;/p&gt;&lt;h4&gt;Anytime Read Access&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Users&amp;#160;must be able to look into the context of running process instances any timeeven if they don't have a task in their inbox.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is achieved by the already described process instance picker user interface, the parallel spilt gateway and the following intermediate message event. On the left branch of the parallel gateway the normal process flow is modeled which consists in this case of an "Enrich Request" and an "Approve Request" human activity. At the end the process instance data is saved into the custom reporting data source to be reused for new process instances as described above.&lt;/p&gt;&lt;p&gt;The interesting part is on the right hand side of the parallel split gateway. To look into the content of a running process instance the user starts the process picker in NetWeaver Portal and selects a process instance. In the next step the UI triggers the intermediate message event which creates a task in the UWL for the user. Ideally the UI directly invokes the task avoiding the detour via UWL. It might be necessary to wait for a moment until the task is created. You can use&amp;#160;a dummy service with some sleep()&amp;#160;function for that purpose.&lt;/p&gt;&lt;p&gt;The UI used in "Display Request"&amp;#160;has to be a read only UI. After the "Display Request" task is executed the process waits on the next intermediate message event to be triggered. As the termination event on the left hand side kills the whole process instance there is no need to have a parallel merge gateway in the process model.&lt;/p&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;p&gt;With a little effort it is possible to enhance SAP NW CE with some additional features.&amp;#160; Be aware&amp;#160;that some of the described patterns are not technology neutral. For example reporting data sources are not available in Web Dynpro Java. In the demontrated scenarios I used the process context for persistence. SAP does not recommend to do this if you have&amp;#160;a large data model&amp;#160;and/or high process instance volume. My purpose was to show what is possible out of the box without coding.&lt;/p&gt;&lt;p&gt;Stay tuned: In&amp;#160;the next blog entries I&amp;#160;will cover more useful patterns&amp;#160;for ad-hoc processes,&amp;#160; process administration and&amp;#160;process synchronisation.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:a563b751-5379-4aed-b1fd-fb6dc5e681a3] --&gt;</description>
      <pubDate>Fri, 18 Jun 2010 06:51:59 GMT</pubDate>
      <guid>http://scn.sap.com/people/alexander.grobe/blog/2010/06/18/process-feature-patterns</guid>
      <dc:creator>Alexander Grobe</dc:creator>
      <dc:date>2010-06-18T06:51:59Z</dc:date>
      <clearspace:dateToText>1 year, 5 months ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://scn.sap.com/people/alexander.grobe/blog/comment/process-feature-patterns</wfw:comment>
      <wfw:commentRss>http://scn.sap.com/people/alexander.grobe/blog/feeds/comments?blogPost=53819</wfw:commentRss>
    </item>
    <item>
      <title>Process Templates</title>
      <link>http://scn.sap.com/people/alexander.grobe/blog/2010/06/15/process-templates</link>
      <description>&lt;!-- [DocumentBodyStart:f4ec3517-e69b-480d-b2b9-03f57305fead] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;With SAP NetWeaver Composition Environment (CE) it is possible to develop composite applications that are designed to meet the current business requirements.&lt;/p&gt;&lt;p&gt;But is this the best possible solution design? Actually not, because you should not have to change the solution if the business requirements change in a certain way. For example the solution should be flexible that it can be used by different legal entities.&lt;/p&gt;&lt;p&gt;There are many ways to achieve flexibility in solution design:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;Service orientation&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Configuration (unguided&amp;#160;setting of parameters)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Customizing (guided setting of parameters)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;BADIs, User-Exits and Enhancement Points&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Templates&amp;#160;(parameterized patterns)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Variants&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;etc.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For&amp;#160;the implementation&amp;#160;of process&amp;#160;templates I will focus on the options to define parameters within SAP CE that will change the behavior of a process.&amp;#160;&lt;/p&gt;&lt;h3&gt;Parameter&amp;#160;settings&amp;#160;&lt;/h3&gt;&lt;p&gt;Below I compare different options that are available in SAP NW CE 7.2 in the following table:&lt;/p&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;&amp;#160;CAF Business Object&lt;/p&gt;&lt;/td&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;+ Accessible via web service and EJB&lt;br/&gt;+ Detailed authorization concept (down to instance level)&lt;br/&gt;+&amp;#160;Transportalbe&lt;br/&gt;-&amp;#160;Flat data model (no complex structures without Java coding)&lt;br/&gt;- No version management&lt;br/&gt;- Requires to develop an interface for the business users&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;&amp;#160;Business Rules&lt;/p&gt;&lt;/td&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;+&amp;#160;Accessible via web service, EJB or as mapping function in process models&lt;br/&gt;+&amp;#160;Business user&amp;#160;interface (Rules Manager)&lt;br/&gt;+ Flexible data model&lt;br/&gt;+ Transportable&lt;br/&gt;+ Version management with approval (4 eyes principle)&lt;br/&gt;+ Can, but must not be linked to process model versions&lt;br/&gt;+ Easy to define depended parameters&lt;br/&gt;- Only high level authorization concept&lt;br/&gt;- No customizable and extensible user interfaces&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;&amp;#160;Java Config&lt;/p&gt;&lt;/td&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;+ Framework with API&lt;br/&gt;+ Flexible data model&lt;br/&gt;- Only for administrators&lt;br/&gt;- No version management&lt;br/&gt;- Requires to develop an interface for business users&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;&amp;#160;Custom Development &lt;/p&gt;&lt;/td&gt;&lt;td align="left" style="border:0px solid black;" valign="top"&gt;&lt;p&gt;+ Everything is possible&lt;br/&gt;-&amp;#160;High manual effort&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;From the list above Busines Rules Managment (BRM)&amp;#160;seems to be&amp;#160;a good way to implement process template parameters.&lt;/p&gt;&lt;p&gt;So let's take a closer look of how this can be implemented. The following images show a way to define different approval patterns in a process template.&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53773-65890/DecisionTable.JPG"&gt;&lt;img alt="DecisionTable" border="0" height="326" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53773-65890/640-326/DecisionTable.JPG" width="640"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The&amp;#160;decision table&amp;#160;above allows&amp;#160;different organizations to choose between one or two level approval. Furthermore the organizations can choose if the approval should happen in a sequential or in a parallel way. A process template using these parameters for process control is illustrated below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53773-65891/ApprovalProcessTemplate1.JPG"&gt;&lt;img align="middle" alt="ApprovalProcessTemplate1" border="0" height="400" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53773-65891/423-400/ApprovalProcessTemplate1.JPG" width="423"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53773-65892/ApprovalProcessTemplate2.JPG"&gt;&lt;img align="middle" alt="ApprovalProcessTemplate2" border="0" height="400" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53773-65892/439-400/ApprovalProcessTemplate2.JPG" width="439"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Process Variants&lt;/h3&gt;&lt;p&gt;Another way to achieve flexibility and still enforce standardization&amp;#160;are process variants.&lt;br/&gt;How can this be implemented with SAP CE 7.2?&lt;br/&gt;Please take a look at the model below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53773-65893/ProcessVariants1.JPG"&gt;&lt;img align="middle" alt="ProcessVariants1" border="0" height="400" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53773-65893/456-400/ProcessVariants1.JPG" width="456"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://scn.sap.com/servlet/JiveServlet/showImage/38-53773-65894/ProcessVariants2.JPG"&gt;&lt;img align="middle" alt="ProcessVariants2" border="0" height="400" src="http://scn.sap.com/servlet/JiveServlet/downloadImage/38-53773-65894/528-400/ProcessVariants2.JPG" width="528"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The idea is to leverage embedded sub processes that contain referenced sub-processes that&amp;#160;represent the actual process variants. This way of modeling keeps the top most process model clean of the process variant details. With the referenced sub processes a process variant can be changed without effecting the rest of the executed process.&lt;/p&gt;&lt;p&gt;&amp;#160;In the next blog&amp;#160;entry I will&amp;#160;cover&amp;#160;useful process patterns for a number of frequently reoccurring buisness requirements.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:f4ec3517-e69b-480d-b2b9-03f57305fead] --&gt;</description>
      <pubDate>Tue, 15 Jun 2010 03:02:39 GMT</pubDate>
      <guid>http://scn.sap.com/people/alexander.grobe/blog/2010/06/15/process-templates</guid>
      <dc:creator>Alexander Grobe</dc:creator>
      <dc:date>2010-06-15T03:02:39Z</dc:date>
      <clearspace:dateToText>1 year, 5 months ago</clearspace:dateToText>
      <clearspace:replyCount>1</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://scn.sap.com/people/alexander.grobe/blog/comment/process-templates</wfw:comment>
      <wfw:commentRss>http://scn.sap.com/people/alexander.grobe/blog/feeds/comments?blogPost=53773</wfw:commentRss>
    </item>
  </channel>
</rss>

