<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-756178296427243422</id><updated>2025-11-24T17:15:41.908+05:30</updated><category term="Best Practice"/><category term="Connect-Excel"/><category term="Cusotm Rules"/><category term="FUA"/><category term="Pega"/><category term="Rule Resolution"/><category term="Apache Lucene"/><category term="CSSA"/><category term="Check-In"/><category term="Clipboard"/><category term="Code Smell"/><category term="Compliance Score"/><category term="Content Search"/><category term="Data Table"/><category term="Data Transform"/><category term="Debugging"/><category term="Design"/><category term="Dynamic System Settings"/><category term="Error Messages"/><category term="Exam"/><category term="Extension Points"/><category term="First Use Assembly"/><category term="Flows"/><category term="Map Value"/><category term="PDN"/><category term="PRPC"/><category term="Pega Warning"/><category term="Refactor"/><category term="Sandbox ruleset"/><category term="Static Code Analysis"/><category term="Technical Debt"/><category term="Test rules"/><title type='text'>PRPC Developer</title><subtitle type='html'>Exploring the wonderful world of Pega Rules Process Commander</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-1433900400645978122</id><published>2018-10-15T08:25:00.000+05:30</published><updated>2018-11-03T22:55:39.219+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Check-In"/><category scheme="http://www.blogger.com/atom/ns#" term="Code Smell"/><category scheme="http://www.blogger.com/atom/ns#" term="Compliance Score"/><category scheme="http://www.blogger.com/atom/ns#" term="Extension Points"/><category scheme="http://www.blogger.com/atom/ns#" term="Pega Warning"/><category scheme="http://www.blogger.com/atom/ns#" term="Refactor"/><category scheme="http://www.blogger.com/atom/ns#" term="Static Code Analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="Technical Debt"/><title type='text'>No Check-in with Pega Warnings</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Prevention is better than cure.&lt;br /&gt;
&lt;br /&gt;
One of the main pain points of any Pega project is the gradual accumulation of &lt;a href=&quot;https://en.wikipedia.org/wiki/Technical_debt&quot; target=&quot;_blank&quot;&gt;technical debt&lt;/a&gt;. This buildup can be clearly seen by the declining compliance score. One of the ways to mitigate technical debt is to have a keen eye on &lt;a href=&quot;https://en.wikipedia.org/wiki/Code_smell&quot; target=&quot;_blank&quot;&gt;code smells&lt;/a&gt;&amp;nbsp;and refactor regularly. To identify code smells Pega has a
&lt;a href=&quot;https://en.wikipedia.org/wiki/Static_program_analysis&quot; target=&quot;_blank&quot;&gt;static code analysis&lt;/a&gt; mechanism called Pega Warnings.&lt;br /&gt;
&lt;br /&gt;
Even though the best practice is to fix (or occasionally justify) the warnings as soon as they appear, the best practice is not always followed and
rules are checked-in with unattended warnings consequently increasing the overall technical debt of the system.&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: left;&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: left;&quot;&gt;
What if there is a way to stop the check-in process if a rule has unattended warnings. Following simple change will halt the check-in process if a
developer tries to check-in with unjustified warnings.&lt;br /&gt;
&lt;br /&gt;
From my practical experience I can say that this small change will have a huge impact on the overall quality of the code.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;
&lt;o:p&gt;&lt;/o:p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_EG2yotBJuK1Ny0Nh-FwwrjaZ8xpBUEyHFUwT3MMZuYbqaxdtsLnzDnSKWLG2GCnvWfUqRX6n-BOYNoUoBpKKLvdlDNsApSXaqsBO5MD6H25e6y-1Qjn7MvAwNrBHURhNZ6TCeju8Prx/s1600/Pic+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;345&quot; data-original-width=&quot;1003&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_EG2yotBJuK1Ny0Nh-FwwrjaZ8xpBUEyHFUwT3MMZuYbqaxdtsLnzDnSKWLG2GCnvWfUqRX6n-BOYNoUoBpKKLvdlDNsApSXaqsBO5MD6H25e6y-1Qjn7MvAwNrBHURhNZ6TCeju8Prx/s1600/Pic+1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTAmtRSJEZyItTG2gRi5AjLr0799xgmRYA7rgKIy-SzldLMKaJ66GQKvReVXH9RyBV_syHsh557kxp-skunD0ubk_0jkkkkZPu5kMSnAXZZ9NPGqEbIypsFosJ6tkO_w11_SRq7EPd6YTA/s1600/PIc+2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;218&quot; data-original-width=&quot;884&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTAmtRSJEZyItTG2gRi5AjLr0799xgmRYA7rgKIy-SzldLMKaJ66GQKvReVXH9RyBV_syHsh557kxp-skunD0ubk_0jkkkkZPu5kMSnAXZZ9NPGqEbIypsFosJ6tkO_w11_SRq7EPd6YTA/s1600/PIc+2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibZvcNMbh_9kMyxJ3o8Li128LVsPLtjPmU0yc_hmJemvxzD5kc5CwkhbuCvx4u243os4JmkBd5iChN_I6AX0LuVgv5G7T9M8G_47NnaKREcdB6d4o739KcykxhmcspEt2RYc_XAXfFIgRN/s1600/PIc+3.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;517&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibZvcNMbh_9kMyxJ3o8Li128LVsPLtjPmU0yc_hmJemvxzD5kc5CwkhbuCvx4u243os4JmkBd5iChN_I6AX0LuVgv5G7T9M8G_47NnaKREcdB6d4o739KcykxhmcspEt2RYc_XAXfFIgRN/s1600/PIc+3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/1433900400645978122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2018/10/no-check-in-with-pega-warnings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/1433900400645978122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/1433900400645978122'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2018/10/no-check-in-with-pega-warnings.html' title='No Check-in with Pega Warnings'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_EG2yotBJuK1Ny0Nh-FwwrjaZ8xpBUEyHFUwT3MMZuYbqaxdtsLnzDnSKWLG2GCnvWfUqRX6n-BOYNoUoBpKKLvdlDNsApSXaqsBO5MD6H25e6y-1Qjn7MvAwNrBHURhNZ6TCeju8Prx/s72-c/Pic+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-4248718858488889057</id><published>2014-03-15T13:39:00.000+05:30</published><updated>2014-03-17T00:20:24.745+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data Table"/><category scheme="http://www.blogger.com/atom/ns#" term="Data Transform"/><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Dynamic System Settings"/><category scheme="http://www.blogger.com/atom/ns#" term="Map Value"/><title type='text'>Managing Configuration Data in Pega Rules</title><content type='html'>&lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Identifying and incorporating configuration data into a rule base is one of the design best practices in PRPC development. &lt;font face=&quot;Verdana&quot;&gt;PRPC has several out of the box features where users can create and manage configuration data with less effort and minimum steps.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Configuration data in PRPC can be classified into three different domains mainly based on the actor who configures. &lt;/font&gt;&lt;font face=&quot;Verdana&quot;&gt;The k&lt;/font&gt;&lt;font face=&quot;Verdana&quot;&gt;ey to good design is identifying the best feature, for a given requirement with the actor in mind.&lt;/font&gt;&lt;font face=&quot;Verdana&quot;&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Following table lists down all three actors and supported PRPC features with examples.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;1&quot; width=&quot;492&quot;&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;91&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;strong&gt;Actor&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;117&quot;&gt;&lt;strong&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;PRPC Feature&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;98&quot;&gt;&lt;strong&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Environment &lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;186&quot;&gt;&lt;strong&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Examples&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;91&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Business User&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;117&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Data Table&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Decision rules that support rule delegation e.g. &lt;/font&gt;&lt;font face=&quot;Verdana&quot;&gt;Map Value &lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;98&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Production&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;186&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Limit Approval values for Managers&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;91&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;System Administrator&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;117&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Dynamic System Settings&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Data Table&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;98&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;All environments&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;186&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Web service end point URLs on each environment&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Web Service Security user credentials on each environment&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Performance alert settings&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;91&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Developer&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;117&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Dynamic System Settings&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Data Transform&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Map Value&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Data Table&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Hierarchy &lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;98&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Development&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;186&quot;&gt;           &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Implementation layer class names&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Any constant value in the code&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Above three scenarios can be described as follows. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Authorized business users should be able to change runtime process level values so that certain changing business needs can be easily managed without waiting for a full development cycle. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;System administrators should be able to manage values specific to inter system communications, system security, etc.., which are key components in the smooth operation of runtime environments. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Finally, developers should incorporate configuration aware rules and data instances into the overall design so that fellow developers will find it easy to modify existing functionalities with minimum rule changes.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;If all are considered well in the design, the end result is a system with utmost flexibility, where a change is easy to handle and less prone to break the rest of the functionalities.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Please leave a comment with your practical experiences on how you have used configuration data in your projects. Thank you.&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/4248718858488889057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2014/03/managing-configuration-data-in-pega.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/4248718858488889057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/4248718858488889057'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2014/03/managing-configuration-data-in-pega.html' title='Managing Configuration Data in Pega Rules'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-4357864268685470689</id><published>2013-01-13T18:21:00.000+05:30</published><updated>2013-01-13T20:15:36.227+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Best Practice"/><title type='text'>Beauty of Higher Order Functions</title><content type='html'>&lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;If you are familiar with JavaScript you must have come across the usage of Higher Order Functions. Simply put higher order functions can accept functions as parameters or can return function as a result. When you understand the basics, it&#39;s joy to work with them. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;Due to the elegant design of PRPC runtime, we can easily simulate higher order functions using activities. Following activity is a good example of such a scenario.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;em&gt;&lt;strong&gt;Code-Pega-List.ProcessSelection&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;So next time when you find a problem see if you can solve it using higher order functions. If properly used your code will be more modular and look very professional.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/4357864268685470689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2013/01/beauty-of-higher-order-functions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/4357864268685470689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/4357864268685470689'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2013/01/beauty-of-higher-order-functions.html' title='Beauty of Higher Order Functions'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-2040818106017083516</id><published>2012-12-09T04:16:00.000+05:30</published><updated>2012-12-16T19:24:10.402+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Best Practice"/><category scheme="http://www.blogger.com/atom/ns#" term="Clipboard"/><title type='text'>Clipboard Page Analyzer</title><content type='html'>&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Have you seen a colored clipboard like this before, probably not right, please read to find out how and more importantly why it looks as it is.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtZLNNr5pJaMasRpfiOcTU9S71Jsa6b8YsAlLUGNksS0CVIgzAzCp-upGpoYgcgwpK0ncLOuCUiu-knqgX6j9mPgH7RIKfp-NDP09mH6039ws4OttQDqCOLiNitVy6nvbaCo0xK3nR_6O5/s1600-h/ColorClipboard%25255B22%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Color Clipboard&quot; border=&quot;0&quot; alt=&quot;Color Clipboard&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPPoJgnMtmI52KSxeDlIwr_5a5-oh2E7EykF3lXgCX7H2OXxwpkP7bZoHZpR3lapYh2QHfzpDVtRKGZzhg0XCzGRHosF0EBXWsGtDAxrBMEC3SkIYurlhYJXLTmiP1GWKQ4Go4pB9BgOX/?imgmax=800&quot; width=&quot;500&quot; height=&quot;329&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;We love creating Pages, especially finding good names for them. &lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Within Pega Rules Process Commander (PRPC) pages play a very critical role as a highly flexible data structure that offer application developers the ability to abstract the underlying business data model.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;But with all this glamor, “named” pages hold one dark secret, once created they have to be manually deleted through the code. Which means you have to track most of the pages that system create for you (Obj-Browse, Obj-Open) and all of the pages that you create (Page-New), so that you can remove those pages at the correct moment within the business process after they are no longer needed. If not this can lead to significant performance issues as every page in the clipboard occupies memory.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;This being a design feature in PRPC, Pega has given couple of ways to delete named pages. Widely used Page-Remove activity method is the easiest and by far the best way to delete named pages, but if you are writing Java then removeFromClipboard Pega Java API method can be used to achieve the same outcome.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Everything is working perfectly up to this point, there are ways to create pages and ways to delete pages. But there is a problem, since we are doing these tasks as humans, e&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;ven though it is a good development practice to remove pages whenever not needed, sometimes we tend to find the best practice is not being followed, resulting a cluttered clipboard. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;So what if there is a way to find out pages that were created but not deleted within two different points in an execution flow that you have selected. &lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Which brings us to the beginning of this post the colored clipboard. Yes you guessed it correctly, those colored pages indicate exactly that. &lt;/font&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Those are pages that were created but not deleted within a user specified two points in an execution flow. I like to call this the &lt;strong&gt;Clipboard Page Analyzer&lt;/strong&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;So you know the problem and you have seen an answer, let’s see how to implement this.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Let’s start with an example, Imagine you have a process with 3 flow actions (FA) and you are creating two pages called A and B within the boundary of these 3 flow actions. According to the technical design correct life span of these two page should be as follows.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Page A – Initialized within FA1 and removed within FA2&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Page B – Initialized within FA1 and removed within FA1&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Following diagram shows the correct representation of that.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIILbUqLwb06txgTTse5kX-Y3NBZlftqQwYqetpvBH9kPrN51LFIGfWUg962F3juwVLjRrZeN2rel6f-9gAJKRG8jNge98S4k_aKWU5OqZlAetrb7rQVqY51DfcT7qAT3B4JaeMegQC6S1/s1600-h/image5.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Correct Implementation&quot; border=&quot;0&quot; alt=&quot;Correct Implementation&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDKlGRMI9R7wHY3Q9X6sfbqy1m5n5lrKnhz6s2Pi_Ja7lfjg_ZifT4VGJwFdpizsnoXkbrMwdVe4ZixzVt0MvFIAiu_WY-BOTkny2NYqr-oRoIF-zalveaRXn3OwTEvLNXD1m_Ip1XIigB/?imgmax=800&quot; width=&quot;463&quot; height=&quot;205&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Now for a moment let’s analyze the following diagram which is an incorrect implementation of the technical design&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW0qiC0nB6uMNf1YvehCWhM9G6ua2uQd4CQhy0LzU2XQIgjDL7MJXxJMOJemfFfvN9SMniP7yUKprX80l5Vxek-aNDS4JuXe1Ir1-oZ3GN9XC4_qjjzoYYgC_FvdhHcs9w4N4MQLehGpe6/s1600-h/image27.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Incorrect Implementation&quot; border=&quot;0&quot; alt=&quot;Incorrect Implementation&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbq7C0135TOuCG1-km9KMWy1uPCVJvphvsUwjy_TSn4u_7InI1GHnsQqlCu4LMHjq4yqxGX_LiRqI8US0fJhFa4zCAMcp-HwKBaBa5tGCcGQWgW1-CT-9J-YdLUh2CkZ1xZmhSXNlOksYM/?imgmax=800&quot; width=&quot;479&quot; height=&quot;206&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;So as you can see if you examine the clipboard after the FA1 you will find Page A and B both on the clipboard, but according to the design only Page A should be present, which means the developer has not removed Page B at the correct moment within the process. Something similar can be seen if you examine the clipboard after FA2, where you will see both the pages present but according to the design none should be there.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;So how do we track these clipboard page creation and deletion moments. It turns out to be that we do not have to track, there is a neat trick that can be used to get the delta of pages within two different points in time.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;If you examine the PRPC Java API you will find a method called getPageNames in PageDirectory interface.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/font&gt;&amp;#160;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-UDexUdrBZCp9b2Umq-Bhvnx2M7e1XxTDkwlP_SSWGtYVzphSe3S9Vw7GSgt-fSRsZJQN0acNsfhyphenhyphenlU38yGRyi5MFd_PpjznSXysg5THxKqt1WtGo7FJAuRkG9mtzGDHXB-wKwvFcLq49/s1600-h/image%25255B34%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;getPageNames API method&quot; border=&quot;0&quot; alt=&quot;getPageNames API method&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEholAOpTxYGZm5_h13dbOHEG9-q5CtBMru2zBLA3mZqOsi-daFwj2JvYGmQ4ahm7j1mVoyMVkpkQ63iikrGzbpAUj-LlgqjhlQ0ZvYnbuT2EQtOEUr5_X6wnuYm-Snpz728x4Pk9d4-qJng/?imgmax=800&quot; width=&quot;501&quot; height=&quot;41&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Once you have this method it is matter of invoking this method at two points in time and find the delta. So with this in mind and after some client side coding following is what you get. (Please see the video in YouTube directly with HD full screen for better quality).&lt;/font&gt;&lt;/p&gt;  &lt;div style=&quot;padding-bottom: 4px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0b119489-0984-443b-9adc-c3ea561218e4&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;div id=&quot;a7fa5f52-ddfb-49ad-b0dc-617ed79cedd4&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=0N0eFiMMk1E&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhanNco4NZKZJp109EO4BC6mlzyEHNhOI4Bs5ymNTHGC_Xd4vLbH7biFKdbogGyUk2JZkL2-MFzcWxmq3_q-EElu29aSS08E4STUkKWUGGcjRwoXPWKylCHNTBdlLoHQlk57TDjuUkqApUo/?imgmax=800&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;a7fa5f52-ddfb-49ad-b0dc-617ed79cedd4&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;493\&amp;quot; height=\&amp;quot;277\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/0N0eFiMMk1E?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/0N0eFiMMk1E?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;493\&amp;quot; height=\&amp;quot;277\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;width:493px;clear:both;font-size:.8em&quot;&gt;Clipboard Page Analyzer&lt;/div&gt;&lt;/div&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/2040818106017083516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2012/12/clipboard-page-analyzer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/2040818106017083516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/2040818106017083516'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2012/12/clipboard-page-analyzer.html' title='Clipboard Page Analyzer'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPPoJgnMtmI52KSxeDlIwr_5a5-oh2E7EykF3lXgCX7H2OXxwpkP7bZoHZpR3lapYh2QHfzpDVtRKGZzhg0XCzGRHosF0EBXWsGtDAxrBMEC3SkIYurlhYJXLTmiP1GWKQ4Go4pB9BgOX/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-2770144692437781068</id><published>2012-04-29T17:51:00.000+05:30</published><updated>2012-09-18T02:25:25.614+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Best Practice"/><category scheme="http://www.blogger.com/atom/ns#" term="Sandbox ruleset"/><category scheme="http://www.blogger.com/atom/ns#" term="Test rules"/><title type='text'>Importance of Sandbox ruleset</title><content type='html'>&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;One of the major problems that Pega projects face with time is build up of test rules within the official business rulesets. If not properly managed these rules could end up in the production environment which is not an ideal situation to have. But can we really stop creating test rules, for me the answer is no, because creating test rules is also an integral part of the iterative development process. So how can we maintain a clean development environment while also allowing the creation of test rules.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;The answer is the &lt;strong&gt;Sandbox ruleset&lt;/strong&gt;. By creating a separate ruleset only for test rules it is possible to have a clean development environment while allowing the creation of test rules in development process.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Following are the steps that have to be followed&lt;/font&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Create a sandbox ruleset and version&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Update ruleset restrictions in classes to include the sandbox ruleset&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Create a separate sandbox application rule and include the sandbox ruleset and put your main application as the Built on Application&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Create a sandbox access group and include the sandbox application&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Include the sandbox access group as an optional entry in the operator access group list&lt;/font&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Now you will get the sandbox application as an optional application rule when you log in as a developer. So next time when you want to create a test rule, switch the application to the sandbox application and use the sandbox rule set to save your test rule.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;If your team is not used to this process, it will take some time for them to adjust to this new way of working, but with time you will see better results.&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/2770144692437781068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2012/04/importance-of-sandbox-ruleset.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/2770144692437781068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/2770144692437781068'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2012/04/importance-of-sandbox-ruleset.html' title='Importance of Sandbox ruleset'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-3846336388842139458</id><published>2012-02-23T04:55:00.000+05:30</published><updated>2012-03-19T01:03:06.200+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Connect-Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="Cusotm Rules"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Resolution"/><title type='text'>Creating custom rules in PRPC</title><content type='html'>&lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;You can find the first part of this post from &lt;a href=&quot;http://prpcdeveloper.blogspot.com/2011/01/creating-custom-rules-in-prpc.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;What do you think one of the &lt;a href=&quot;http://pdn.pega.com/Forums/topic.asp?TOPIC_ID=3155&quot; target=&quot;_blank&quot;&gt;frequently&lt;/a&gt; asked question in PDN forum, any guesses?, it&#39;s about Excel integration with PRPC, but ironically by the time of this writing PRPC still does not support a rule based approach to the problem of Excel integration. So are we in a dead-end, frankly not. Due to the elegant design of PRPC, we can create our own custom rule to accomplish the task.&lt;/font&gt;&lt;font face=&quot;Verdana&quot;&gt;&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Welcome to the second post of the series &amp;quot;Creating custom rules in PRPC&amp;quot;, as I pointed out in the &lt;a href=&quot;http://prpcdeveloper.blogspot.com/2011/01/creating-custom-rules-in-prpc.html&quot; target=&quot;_blank&quot;&gt;first&lt;/a&gt; post, in this post I am planning to systematically lay down the steps that need to be taken in order to create a custom rule.       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Word of caution: Most of the things I am writing here are, what I called observable knowledge, meaning - understanding how something works literally by observing the system and in case of PRPC reading the rules in the system without going through a formal How-To documentation, reason being we do not have such documentation, &lt;a href=&quot;http://pdn.pega.com/productsupport/products/pegarulesprocesscommander/documents/prpc/help_v55/howto/howto2/howtocustomrules.asp&quot; target=&quot;_blank&quot;&gt;this&lt;/a&gt; is the only article I was able to find in PDN regarding custom rule creation. According to the PDN there had been some documents, but not anymore. &lt;a href=&quot;http://pdn.pega.com/Forums/topic.asp?TOPIC_ID=2465&quot; target=&quot;_blank&quot;&gt;Search&lt;/a&gt; for the lost pearls didn&#39;t go well either:). So if you feel that I have missed something please feel free to correct it by leaving a comment.&lt;/font&gt;&lt;/p&gt;  &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Let&#39;s start with a question - Why do we need to create a custom rule ? - To impresses our colleagues, while that could be a possible reason, we will be able to find a better answer if we look at the definition of the custom rule again.&amp;#160; &lt;/font&gt;&lt;/p&gt; &lt;font face=&quot;Verdana&quot;&gt;   &lt;p&gt;Custom rule is a rule which describes a process / execution pattern which does not available as out of the box rule in PRPC&lt;/p&gt;    &lt;p&gt;One of the the key phrases with in the definition is &amp;quot;which does not available as out of the box rule in PRPC&amp;quot;. So we should never create a custom rule if we can find something alternative with in PRPC as an OOTB feature.&lt;/p&gt;    &lt;p&gt;Following list explains what needs to be done to plan and finally implement a custom rule&lt;/p&gt; &lt;/font&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Plan and Design &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Create rule class and properties &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Create a rule form &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Create a model rule in the rule class &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Create a validation activity &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Create a custom warning activity &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Create the activity which does the actual rule logic &lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align=&quot;left&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Map the custom rule to a new table cloning pr4_rule table&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;font face=&quot;Verdana&quot;&gt;&lt;/font&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;I will explain each step by giving reference to the Connect-Excel rule, please try to relate these steps to a common rule you are familiar with and try to see how Pega has done the same steps with reference to the rule you are examining. &lt;/font&gt;&lt;/p&gt; &lt;font face=&quot;Verdana&quot;&gt;   &lt;p&gt;&lt;strong&gt;&lt;u&gt;Plan and Design&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;One of the most important step that has to be done before doing anything is to plan and design the custom rule. Always wear the end users hat and look at the custom rule from their angle as well. Consider the most critical functionalities that the end user is expecting from your custom rule and think about the end user profile (Technical / Business) while doing the design.      &lt;br /&gt;Plan and Design step can be sub divided in to four steps.       &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Finalize the initial scope of the rule in terms of functionalities that the rule offer &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;In Connect-Excel rule there are four main functionalities&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Reading data from a table structure &lt;/li&gt;      &lt;li&gt;Reading data from a cell &lt;/li&gt;      &lt;li&gt;Writing data to a table structure &lt;/li&gt;      &lt;li&gt;Writing data to a cell &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;strong&gt;Sketch the UI of the rule to better align with the functionalities of the rule and to align with the end user knowledge of the domain. &lt;/strong&gt;&lt;/p&gt; In Connect-Excel rule there are 2 main tabs to distinguish reading and writing functions of the rule, inside those two tabs fields are aligned such a way that users will be able to better relate to the domain that they are working with, which is an Excel sheet with the rule.     &lt;br /&gt;This UI mock-up will be very helpful in the 2nd step when you are creating the properties     &lt;p&gt;     &lt;br /&gt;&lt;strong&gt;Setup/configure the PRPC environment to include any third party libraries or jar files &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Depending on the problem, you might use external jar files or libraries that will deliver the functionalities of your custom rule, please put them to the correct &lt;a href=&quot;http://pdn.pega.com/devnet/PRPCv5/kb/20931.asp&quot; target=&quot;_blank&quot;&gt;class paths&lt;/a&gt; so that PRPC will identify those in compile time and run time.       &lt;br /&gt;&lt;a href=&quot;http://poi.apache.org/spreadsheet/index.html&quot; target=&quot;_blank&quot;&gt;Apache POI&lt;/a&gt; package was use to implement the Connect-Excel rule. &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Workout the algorithms that will describe the behavior of the custom rule &lt;/strong&gt;&lt;/p&gt; It is always better to workout the algorithms offline before creating the full fledged rule, in terms of the Connect-Excel rule, basic operation of reading and writing was carried out with the Apache POI methods.     &lt;p&gt;     &lt;br /&gt;&lt;strong&gt;&lt;u&gt;Create rule class and properties &lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;As you all know classes play pivotal role in PRPC Object Relational Model, where you as the developer is abstracted from low level CRUD operations, so if you need to work with instances of a rule, first you need to have a class to start with. Not any other class, but a class which inherit from Rule- class, why, as I explained in the &lt;a href=&quot;http://prpcdeveloper.blogspot.com/2011/01/creating-custom-rules-in-prpc.html&quot; target=&quot;_blank&quot;&gt;first&lt;/a&gt; post, when you inherit from Rule- class or any one of its descendants you get the Ruleness to your rule. The four magical spells. &lt;/p&gt;    &lt;p&gt;So in Connect-Excel rule I have created a class called Rule-Connect-POI-Excel, as you can see it inherits through the the Rule-Connect- class, since Connect-Excel rule is related to connecting to a external source inheriting through the Rule-Connect- was the obvious choice. &lt;/p&gt; &lt;/font&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDUVuLt_us1OlsobOCElAlOTqjPb5y7nGzMWprI-EIcZSP-ZIXK5Rup6qV2OcsMudmj33D1ksNrU_aNK_yLKTY5b8zomjj5wUIYO86yyQUJsL97nxQ9hDWlnBoh_vO3BUE-0MPR0fI9fye/s1600-h/image19.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;PRPC class rule for the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;PRPC class rule for the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilYyhLDw48eSxQY0fJr-WD5GfOgkt4MD-i6TM1_T7IcutH-18Kwgd5ixDYg_O01PR2M05-N85qwvr4KKc2iK_Pv1978xdFGBvkvdRzKfrJwQvkpgzGrXMrys-D9O23VtlJrwyy3PMMsRxU/?imgmax=800&quot; width=&quot;496&quot; height=&quot;476&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Normally when a class is created inheriting from Rule- class PRPC maps the class to pr4_rule table in the PegaRULES database, we will see at the last step of this process how we map our new rule to a new table.&lt;code&gt;&amp;#160;&lt;/code&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;font face=&quot;Verdana&quot;&gt;With the class created now it is the time to create the data model of the rule, the UI mock up will be very useful in this step as you have to map the UI with properties.&lt;/font&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;font face=&quot;Verdana&quot;&gt;The best way to understand the property mappings in Connect-Excel rule is to go through the following screenshots. &lt;/font&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk4XlSCYz1-3njyvgWX0pgWATaz8mis2_OgwoLxDf2r8MRbUspRvNRTljRf6KZnl5X5VJFUdYA3dAJvjlBcuWmIaNNDFzTNQiIMUwXWNWsM7tytBKGvSLRIU2p8xo3rY7Pv7KVJUOvZuSc/s1600-h/Properties-19.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;PRPC Property structure for the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;PRPC Property structure for the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitQvSVkjlY12AzK620rmJO42mfLv6z0sCBNVbgCAXyUaNKiiTHBrXhJmcaziT4f8PSZiOcsFLWrRvPPDRlzCKwOVDWJxBQ3ddCBSJ8l7ErcF6sUzTIPgG7gt8cG1n_coYt596nejwA7Oy2/?imgmax=800&quot; width=&quot;314&quot; height=&quot;277&quot; /&gt;&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMVDXVikdW0I5p_kqhIGyeQBXgrtGLoXzim47Bjxfe4oVSI8EJwNsXTzMy7exUSFNlPQHsFqoWRpNY-euvKvT-0lotD-ekYOm67EjSsxrGN3uvTu0wQGVH60qzjMleM45Nk6l-FhO3kG7w/s1600-h/Properties-23.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;PRPC Property structure for the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;PRPC Property structure for the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZllDWm0Yce5tuzNhgKr05RtON27bKL05tieMwoVqxplzBUrvg7crZe2_ya7PbPoUaFLChaFQ-wt4aKWcE2Ob4RjIkBYY-Xuyxs4pK8q0TpdRHQV2HH_myYiRVMp5Hov_M6_DXvTFodAHh/?imgmax=800&quot; width=&quot;314&quot; height=&quot;131&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjK-L0HCOJxKJnlDXZG0sAumfOXxeUEHmrJoP066rNsXftBSzJhhH_BJWZdRW5ng9skcocPVq9vTUActJTExDt6x_z4uglSdwHdZlJCEtatCLvIlWTgUMnaJXmaORNkN1M-22qLeVyZS60/s1600-h/ConnectExcelRulewithProperties7.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Connect-Excel custom rule with property structure&quot; border=&quot;0&quot; alt=&quot;Connect-Excel custom rule with property structure&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBfLrknn39J2oq0elolar3d1TL0NcFeBx8F9ZNMjUgNXwiiyhCI-kbnU9bA8HNZW3AFtb1EeSu7DZU4JBVP4ajAnzWiaou9sRBUGsyoZf_YcbV2vABzvA1uJjFUP0Hr2_XVnEM6xBckG_d/?imgmax=800&quot; width=&quot;495&quot; height=&quot;602&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;u&gt;&lt;strong&gt;Create a Rule Form&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Up to now we have created the class and the properties of the new rule, in this step we will be creating the actual UI of the rule, which we call Rule Form in PRPC.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;There are two ways in which we can create Rule Forms&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;1. The classical Rule-File-Form approach using Form Builder Tool&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;2. The new Rule-HTML-Harness approach starting from version 5.5&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;The Rule-File-Form approach is still widely used even in 6.2 version of the PRPC application, this is one of the biggest reasons why PRPC developer environment is IE only, reason being Rule-File-From use XML Data Islands, which is IE only, but from version 5.5 Pega has started to use Harness rules to define the rule forms, which is the best way to go forward. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;I have used the Rule-File-Form approach to define the UI of the Connect-Excel rule&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;If you open an existing Rule-File-Form rule (e.g Connect SOAP) initially you will be overwhelmed by the amount of source code it has. but as always Pega has given a nice abstraction to us, called Form Builder, using Form Builder it is very easy to create a Form rule with in minutes. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;The best way to understand the Form Builder is to investigate Form Builder layout of a know rule like Connect SOAP. Open existing Rule-File-Form rules and try to see how Pega has created the form rule layouts. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuObJ3jH7N5fxPhZ_zFiBde-Ynd0Ujm5jO90HjqWIxmkauMIVBWTgTgKdnhzxmjA89K99g3U0GfP7H6TFOvyexvVmy233ruVfVLzifqffm617lu-FkqggjcCK2zHgwRJ7C8z3rlOCzTqUv/s1600-h/RuleForm4.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Rule-File-Form of the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;Rule-File-Form of the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH6KlEIpgXEdZVijl_DxnIItkVckb4kQjzTEmSx6q3pPV8ecNP2DZ1gVxKHKvUnTc82pWzvF3l9BxpSbSKPwZIsA6ZSL9H3A9atXlqZf9tE9iujbamOtokJ6QaFHqb_g5nYgsKI0APuK3t/?imgmax=800&quot; width=&quot;503&quot; height=&quot;208&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisCNzkuv66Ej2ZWYxXyMNlzDgEzunMNse3-8rmcVKKdBl59q3b6bvQf1TB32e7ijPCQXM1IeiInDj238F_D49y4yHVtSu2ap15dV6_oKXcVqHnUQSuvCIJqdxzBDNz8ps74fWGSwa5ecKr/s1600-h/FormBuilder7.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Form Builder layout of the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;Form Builder layout of the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9BIOH9qVfh9MRZiKoDZsKUPN4IAmQxsFObUGcIQ7Tr7Ath0pex-Qnq0ca6n-5XF4e5QtOIidbdbuS6CdYwy-FarwRmDILwKSbdnb_PD-gJl_mU-zEpm8Ivp0nd5YjLaPo3AmFJc0aSyJg/?imgmax=800&quot; width=&quot;503&quot; height=&quot;543&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;As you can see while you configure the tree structure according to your rule form UI by mapping properties of the rule class with UI elements,&amp;#160; the Form Builder is creating the complex underline Form Rule UI source code.&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;If you can remember, in the Connect-Excel rule form, you can see a color picker component within the rule form itself, which you have not seen in Pega supplied rule forms. This demonstrate the power of PRPC to express anything you want in any level of the product, since PRPC is a web application, even while we use highly abstracted tool like Form Builder we can use normal web technologies like HTML, JavaScript to accomplish custom functionalities.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;So finally after building the Rule Form you have to attach it to the rule class so that PRPC knows which UI to display when you want to do CRUD operations on an instances of the new Rule class.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ff9V7j5xl5xXBuFNd0AfLe1P9jhMMv4e_yr1_-EKQLrPceHy4o4261S9MjqCv6Dp6Z7ZBUTXU-Ol7UnrGqAamZeS6tkPthWKBD6Iv5OYeIpPIS8SCNMsXeLzUdZqlJ9_Ad-fqDyt8wsy/s1600-h/ClassAdvancedTab4.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Mapping Connect-Excel new rule from in the class advanced tab&quot; border=&quot;0&quot; alt=&quot;Mapping Connect-Excel new rule from in the class advanced tab&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2MDj8cj-PSlboWapJvF8RJ9nIV8tGjBh-EhgJWWiUD-IR_ZuV1RjjipDFiSDkYI3zmUE-T4GBMg77HwEvBG69A9TZn3SI7cYRMzodKeNCIyCeH6ixSPO2__H2xkafPq8XPLfV4kL-Go3/?imgmax=800&quot; width=&quot;346&quot; height=&quot;239&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_exhKXwmFRomvBlrsaLLFt_1todzSd2bMOX3ierq2J5IPJWi1c1P9JBOWroATVgRO_NQpHXv5hn_ulZtaEcgD85x5FBK6qTC13qUslu5xJW8qBKA1SbfkKJKmQHdkybgJLTvzDgdJ7CJ4/s1600-h/RuleTree6.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Updated PRPC menu with new Connect-Excel rule&quot; border=&quot;0&quot; alt=&quot;Updated PRPC menu with new Connect-Excel rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ7OzSr2-zTGrDT3aDIHez6jqVSFW4QKLHzJUH1Cn208n5KW8eFjH1PThVcHXPdSbN8Dk9f4coWD_LJGpyPWthn9t1_I-dQp_JAEaAJ3QspAAgtMRkcHkJVGSHyqS21wiFtw0y9BbFbo3g/?imgmax=800&quot; width=&quot;463&quot; height=&quot;296&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;u&gt;&lt;strong&gt;Create a Model rule in the rule class&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Model rule is used to initialize the rule properties of the new rule.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib0J1t21kGZAG7_3X6yGiAV7NWhRleVAFofsSZihIXkCf5JDZMQ9dxJfQdaAXsBhS1mJPI8svR_23xII2oSh_SCElIT4tGCRRNomctSTfEvUAThs9_bWOufUlGNw_przlV_mTfy1P5r-0X/s1600-h/ModelRule5.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Model Rule which initialize the properties&quot; border=&quot;0&quot; alt=&quot;Model Rule which initialize the properties&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4o-c96auF2k75pwPWL4r4b308luxytS9o3klt2ssIAv63C9QX8dQp6drTS-7S2lqJtRHq7dGfk2uj7LTTeL8WcOtltxqKvx86-UlKPcAnfVQzxKadSyUbi7W5hdxqj-DIpUmcizWpBKft/?imgmax=800&quot; width=&quot;502&quot; height=&quot;468&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;u&gt;&lt;strong&gt;Create a Validate activity&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Create an activity rule with the name Validate in the rule class and put all the custom validations of the new rule. PRPC will pick the validate activity using rule resolution and execute while the rule is being saved, resulting errors if errors are found.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1aPYWv4FpHsHejraPgruZSu2d32dEc_BSp4M5LUMdhl5nwE8LIeH3D-H8EAYvoEROz8cy7NeTK3nNtkR0VH5pp4Nb3mYhQkvOWzuiPnY8uOZEMKb2jjZuHUtTpK0kal95ivVGkGf53eee/s1600-h/ValidateActivity3.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Validate Activity of the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;Validate Activity of the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNEjrqLq4gysV52BA16741rp-NVokTl7Bo6w-2HvQf7VQO2_M6LMLE1Hj_Cuu8X_sPbgAUYjnH_Lemt3eNWeXrD-nuodFAsu9yH5JUgkNxbpy-PToZ_IhcjZiiiFcA6dGAlgz5V7yNHM7K/?imgmax=800&quot; width=&quot;496&quot; height=&quot;154&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgtR7Tmp1UdGF5oANjWVcY5pjqCZZoq9HKDoJdrKBmNW2bZzij2z1xF1xpxzam3t26KJ1YOWB1nyf8jerA4JDoaNv2EMMvM86M-_MzpgIp_H5Mn5lOt9qjHjEddoqx6uI_4XnJZGMSc9Dk/s1600-h/CustomErrors9.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Custom Errors&quot; border=&quot;0&quot; alt=&quot;Custom Errors&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjP6U3LknCoBfGVdXK3iJTquHBAz_S1pKVNa4fsVbE5AM8cPbcuXaTzc6mHNnwKg0N0MBOzaEtAUZ6Z2kMGMMOlQMwVU0EWJP5hEwjKlJ6oIoUATQ-GZ1VbYm-qSD1mpe2u4jy8xA9C3h8/?imgmax=800&quot; width=&quot;495&quot; height=&quot;307&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;u&gt;&lt;strong&gt;Create a custom warning activity&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;If you are planning to add custom warning to your new rule, override the @baseclass CheckForCustomWarnings activity and save it to your rule class, &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;u&gt;&lt;strong&gt;Create the activity which does the actual rule logic&lt;/strong&gt;&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Now we have come to the main step of the new rule creation process where we create the actual activity rule which carry out the logic behind the new rule.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Before describing the steps of our activity, let’s try to understand how we would normally use a connect rule which is available in PRPC. (e.g. Connect-SOAP). &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;So when we want to call a web service we will use the Connect-SOAP activity method and pass the parameters which the method is expecting. One of the parameter is name of the Connect SOAP rule. With that information PRPC magically does something and we have our data we requested.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;So what does PRPC do, it basically does two things,&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face=&quot;Verdana&quot;&gt;Opens the passed rule instances to the clipboard with the help of rule resolution&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face=&quot;Verdana&quot;&gt;Apply the logic (in this case call an activity which has the logic) using the data which is in the rule&lt;/font&gt;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;You will be able to see this if you examine the generated java code of an activity with the Connect-SOAP method.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;We will be doing the same thing, but with small changes because of some limiting factors in PRPC.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;So let’s start,&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Sadly as soon as we start we are hitting a wall, we all would like to have a catchy name like Connect-Excel to call our new rule right, but in PRPC you can not create Rule-Methods rules, this is what you have in help under Rule-Methods in bold letters.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;You cannot update methods, create new methods or override standard methods&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;So we have to find another alternative way to call our new rule, this is what I did, I created an activity with the name Connect-Excel and put the above described two steps in to that activity and use it to call our new rule. So when the developers want to use a Connect Excel rule they would call the Connect-Excel activity with proper parameters and you have the results. That was the best we can do with the PRPC limitations.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWl2MgeJrROaDPWjPK-D5wOKM4kjJIbNs9Z3w5g7JN7wMOqjIpfj5yK9n62Onu0hWBY0mOEMlWcy9_9VryASXTvdSQlyUz4NIs15VM2dPEBbu0TQvf3PFH-0PJKja-YTEK1z_E6QPNuVnD/s1600-h/Connect-Excel-16.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Parameter tab of the Connect-Excel custom rule execution activity &quot; border=&quot;0&quot; alt=&quot;Parameter tab of the Connect-Excel custom rule execution activity &quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihsmoTpIW9RJmfmVlvYD8ZDRzygrKdSdY2bsuK5GIHyudReoc8b8g6HE6YkgbaPbz_DhLiKF_m2MtxraIcsDTCFZordmfTjqwkh3NvYSqmafeVtfA3ExJZBc1IU8Lk6hhLJT7qMoqbt0pA/?imgmax=800&quot; width=&quot;509&quot; height=&quot;212&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;Having said that, Actually Pega has given a way to execute new rule type with an instruction called “Rule instruction”. The only reason I went with the first approach is to get a more catchy name.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;So we have seen the activity signature and how you would go and call the activity to get the work done. If you are a developer who is using this new rule those information would be enough.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;But we are implementing a new rule here, so let’s see how we would write the implementation code, the real stuff that will do the work.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhExVIcBp2fVUVPHFfkKrYaNpy-vTRQOWCFR7xWOyZIzYqpZKO52nJA-nOUpKL4GJrfOxFJa9etKPaQGBsQ6QB1veVwUqflW9Q_W5EXv251ruR_7V1N20e71vuTnKmJGE5b4PA2ynzeK7Q6/s1600-h/Connect-Excel-29.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Execution logic of the Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;Execution logic of the Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgImk3_C9O2OvoqYwnPtpeKNUITc7tVJ-Prv0t3Ec7y35L6Ta-uS0zKOS9hdLvUdDJyTE_6hOBbO1hbsXxB_AJ6djVMEEBNvf7GCDqifn2nB1kMS6mo-ws9OL8X7WeDPGnt-hVIOgp-_6TI/?imgmax=800&quot; width=&quot;505&quot; height=&quot;230&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;As you can see in the first step Connect-Excel rule is being opened with the keys that was passed to the activity as parameters and in the second step the actual logic is written using the POI package.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX-7xy_I4ikbdZ3MRVwSKLGSwgS4d9g-CivHFVd3RiSGLNXj_jViMDarhWuHdyLCZlmQaEd0b6-HAMOaX7rp2VsjrPu7UIMRPWdF-ttuFPFOVrlRlrRgtGs8zj2zbaFavBOzt-t27N7Jv0/s1600-h/Rule-Clipboard10.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;Clipboard structure of a Connect-Excel custom rule&quot; border=&quot;0&quot; alt=&quot;Clipboard structure of a Connect-Excel custom rule&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghj8y7rSL7LbwiT6uioXRJYJYjq47Fsl5cKMJ2LEukV2hJH7gQsE-gUaWuEr1Dq2zJwYmdvaIMJfQ1ptKp35v2oCr0w_qfvswqmLPE6t9kEbOLNLUjoFwp5FWqcfZ38rVEJU3-8utdlXFf/?imgmax=800&quot; width=&quot;418&quot; height=&quot;430&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Verdana&quot;&gt;I will be writing the remaining part in the next post, till then happy reading.&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/3846336388842139458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2012/02/creating-custom-rules-in-prpc.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/3846336388842139458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/3846336388842139458'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2012/02/creating-custom-rules-in-prpc.html' title='Creating custom rules in PRPC'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilYyhLDw48eSxQY0fJr-WD5GfOgkt4MD-i6TM1_T7IcutH-18Kwgd5ixDYg_O01PR2M05-N85qwvr4KKc2iK_Pv1978xdFGBvkvdRzKfrJwQvkpgzGrXMrys-D9O23VtlJrwyy3PMMsRxU/s72-c?imgmax=800" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-7929650895999527209</id><published>2011-01-15T02:18:00.001+05:30</published><updated>2012-05-06T23:35:29.937+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Connect-Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="Cusotm Rules"/><category scheme="http://www.blogger.com/atom/ns#" term="FUA"/><category scheme="http://www.blogger.com/atom/ns#" term="Rule Resolution"/><title type='text'>Creating custom rules in PRPC – Introduction</title><content type='html'>&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Pega Rules Process Commander is such a wonderful product. It is built so elegantly with layer upon layer of abstraction so that a normal business user can easily change the runtime behavior in order to adjust to the changing business conditions without going through a typical development cycle. At the same time it is a mixture of J2EE technologies, bunch of browser based thin client technologies and more importantly a wonderful design that has the unique feature of &amp;quot;ability to be extended in multiple layers&amp;quot;, where a person could not distinguish whether a feature is out of the box or custom made. All these are possible due to the initial wonderful design of PRPC.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;One of the best things that the designers of PRPC have done is, even though there are multiple layers of abstraction, they have given us, the end developers a chance to extend the core product through custom rule creation. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Before creating custom rules first let&#39;s get a clear understanding to the question &lt;strong&gt;&amp;quot;What is a rule?&amp;quot;&lt;/strong&gt;. If you can remember the Fast Track training that you have attended, you may remember the phrase &amp;quot;Everything is a rule&amp;quot; and how you left the Fast Track training with that in mind. but is it correct?, frankly not, technically a rule is an instance of a concrete class which is inheriting from Rule- Class. So while Decision Table / Decision Tree are rules, Operator ID / Access group are not, they are just data objects which does not have the &amp;quot;Ruleness&amp;quot; within them. So naturally the next question should be What is &amp;quot;Ruleness&amp;quot; ?&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;It turns out to be, when you inherit a class from Rule- class and make it concrete, all the instances of that class will get some magical powers as opposed to instances of a normal class. Exactly 4 magical spells which as a unit can be called as Rule Resolution options.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDTT-lrbJU4rPIxCHJ7YJC9yHdMZRB055L63R2VrrrCribGqVax8v-k0sK2tbcLb8Ia14ibWvHE5psx_tytZ6VvOreYKKsIV3989XKTV9qjBBp5IHG2fTkl1_TYgSwFiO-Mt2LR9Nyzc8f/s1600-h/image1.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;Rule Resolution options&quot; border=&quot;0&quot; alt=&quot;Rule Resolution options&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyaXWquAoaQl6AR2LIljXnOv0kst3xEQoqVS6Q-q3U2sK_2lHDfJFzNoKiGfs4CksVMJy41D-YDs47VlGZRSMw2PrJa4DPerqY4kx6i-qGfTzf5JrAxyKBCF7kvG3azoa8D5OebeUKjC8H/?imgmax=800&quot; width=&quot;469&quot; height=&quot;110&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;More importantly you as the developer can adjust the &amp;quot;Ruleness&amp;quot; according to your requirements. You get to choose the Rule Resolution options for your custom rule. You get to choose how your custom rule should behave at runtime.&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;So far we have understood the concepts of Rule and &amp;quot;Ruleness&amp;quot;, now let&#39;s see the big question &lt;strong&gt;&amp;quot;What is a custom rule&amp;quot;&lt;/strong&gt;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;strong&gt;Custom rule is a rule which describes a process / execution pattern which does not available as out of the box rule in PRPC&lt;/strong&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;One of the unique features of a custom rule is that after the initial creation,&amp;#160; it can be used by other developers as if it were out of the box rule.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Basically there are two flavors when comes to creating and executing rules in PRPC &lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Using an Activity to interpret an instant of a rule type. (e.g. Rule-Connect-SOAP) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Using the “First Use Assembly” process turning the rule instance in to a java class file and then let the PRPC engine to execute (e.g. Rule-Declare-DecisionTable) &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;   &lt;p&gt;In the next post I will explain the method one, by creating a rule that connects to an excel file to read and write data (Let&#39;s call the new rule &lt;strong&gt;Connect-Excel&lt;/strong&gt; ). Here is a sneak preview of how the rule looks like.&lt;/p&gt;    &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMUmWy4PlKtD1AQk-3bbUaVZt0j88s1EMSI8SExbXF_yhb68M3voO6xdoY_KMRHHs3Nia7wFBDXrCw4xhhiFBS_6E0fU2ymmzRwGkYAxDTJMSTERKFBVzPWl5yp7arxMb9-2xtFMnLjwrO/s1600-h/ConnectExcelwritedata15.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;Connect Excel - write data&quot; border=&quot;0&quot; alt=&quot;Connect Excel - write data&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbpufK8eeXTaWK-qK9FsvsUaYn-kT-8Cgit59rgWYk5WLVr9Ateh72W85hfm9SCYmpxYVlCcSIhaDMXY4BI2GvLKIczfT8ZJUcjHVMMfvIRtuH4fGiJgZ0-73Ky7P6SQJAKaX6jJQOfFHr/?imgmax=800&quot; width=&quot;485&quot; height=&quot;590&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/font&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/7929650895999527209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2011/01/creating-custom-rules-in-prpc.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/7929650895999527209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/7929650895999527209'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2011/01/creating-custom-rules-in-prpc.html' title='Creating custom rules in PRPC – Introduction'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyaXWquAoaQl6AR2LIljXnOv0kst3xEQoqVS6Q-q3U2sK_2lHDfJFzNoKiGfs4CksVMJy41D-YDs47VlGZRSMw2PrJa4DPerqY4kx6i-qGfTzf5JrAxyKBCF7kvG3azoa8D5OebeUKjC8H/s72-c?imgmax=800" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-1767800167664895260</id><published>2010-10-24T12:43:00.001+05:30</published><updated>2012-07-08T17:07:55.534+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSSA"/><category scheme="http://www.blogger.com/atom/ns#" term="Exam"/><category scheme="http://www.blogger.com/atom/ns#" term="PDN"/><category scheme="http://www.blogger.com/atom/ns#" term="Pega"/><title type='text'>CSSA PDN Links Compilation</title><content type='html'>&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Following PDN links compilation document will help you to prepare for the Pega Certified Senior System Architect CSSA 5.5 exam. It is created according to the &lt;a title=&quot;CSSA blueprint&quot; href=&quot;http://www.pearsonvue.com/pegasystems/cssa_exam_blueprint.pdf&quot; target=&quot;_blank&quot;&gt;CSSA blueprint&lt;/a&gt;. Please use this as a starting point to prepare for the exam. Happy reading.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;a title=&quot;CSSA PDN Link Compilation&quot; href=&quot;https://docs.google.com/View?id=ddmbb9cg_4c6rqptkk&quot; target=&quot;_blank&quot;&gt;CSSA PDN Links Compilation&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/1767800167664895260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/10/cssa-pdn-link-compilation.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/1767800167664895260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/1767800167664895260'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/10/cssa-pdn-link-compilation.html' title='CSSA PDN Links Compilation'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-5435525044708618338</id><published>2010-10-16T14:09:00.000+05:30</published><updated>2010-10-16T14:10:59.585+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flows"/><title type='text'>Upgrading flows that are already in production</title><content type='html'>&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Business needs are always changing, so changing a logic of a process even after it went to the production is quite common. PRPC with the &lt;strong&gt;Build for Change&lt;/strong&gt; motto does very good job of keeping it promises. But you need to be careful when changing flows. Because you might be in trouble if you do not know the below points. Happy reading.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;&lt;a href=&quot;http://pdn.pega.com/DevNet/PRPCv5/KB/UpgProdFlows.asp&quot; target=&quot;_blank&quot;&gt;PDN article link&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/5435525044708618338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/10/upgrading-flows-that-are-already-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/5435525044708618338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/5435525044708618338'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/10/upgrading-flows-that-are-already-in.html' title='Upgrading flows that are already in production'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-7297759837742750975</id><published>2010-06-10T23:22:00.000+05:30</published><updated>2012-12-26T02:25:36.900+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Lucene"/><category scheme="http://www.blogger.com/atom/ns#" term="Content Search"/><title type='text'>Harness the power of PRPC Content search</title><content type='html'>&lt;p&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;According to my view &lt;strong&gt;Content search&lt;/strong&gt; is one of the main features within PRPC and most probably the best. Content search enables us to learn the beautiful PRPC architecture and it acts like a personal trainer. So how does the content search does all its magic. The secret is, Pega’s Content search is implemented using &lt;/font&gt;&lt;a href=&quot;http://lucene.apache.org/java/docs/index.html&quot; target=&quot;_blank&quot;&gt;&lt;font face=&quot;Verdana&quot;&gt;Apache Lucene&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;Verdana&quot;&gt; open source text search engine.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;You might be thinking it is a well known fact. Yes, you are absolutely correct, most of the Pega developers know that the content search is based on Apache Lucene. So then what’s all this fuss about.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;The truth is we only use a fraction of what is available to us as content search, since the content search is based on Apache Lucene, we literally get the power of Query Parser Syntax in Lucene directly into content search.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;That means you can do &lt;strong&gt;Fuzzy searches&lt;/strong&gt;, &lt;strong&gt;Wildcard searches&lt;/strong&gt;, &lt;strong&gt;Fields searches&lt;/strong&gt;, &lt;strong&gt;Proximity searches&lt;/strong&gt;, &lt;strong&gt;use Boolean operators&lt;/strong&gt;, &lt;strong&gt;Group several searches&lt;/strong&gt; and list goes on. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;For actual syntaxes please read &lt;a href=&quot;http://lucene.apache.org/core/old_versioned_docs/versions/2_9_1/queryparsersyntax.html&quot; target=&quot;_blank&quot;&gt;this&lt;/a&gt; wonderful Query Parser Syntax documentation.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;Play with all the combinations and have fun.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;Verdana&quot;&gt;In case if you have not enabled the Content Search &lt;a title=&quot;Lucene Indexing&quot; href=&quot;https://pdn.pega.com/node/9627&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; is the PDF.&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/7297759837742750975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/06/harness-power-of-prpc-content-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/7297759837742750975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/7297759837742750975'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/06/harness-power-of-prpc-content-search.html' title='Harness the power of PRPC Content search'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-5646562946772548804</id><published>2010-06-08T12:12:00.002+05:30</published><updated>2012-12-26T02:37:21.144+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="First Use Assembly"/><category scheme="http://www.blogger.com/atom/ns#" term="FUA"/><category scheme="http://www.blogger.com/atom/ns#" term="Pega"/><category scheme="http://www.blogger.com/atom/ns#" term="PRPC"/><title type='text'>Pinnacle of PRPC development</title><content type='html'>&lt;p&gt;&lt;font size=&quot;4&quot;&gt;&lt;span style=&quot;font-family: verdana; font-size: 85%&quot;&gt;&lt;font size=&quot;2&quot;&gt;As &lt;strong&gt;Software engineers&lt;/strong&gt;, the pinnacle of PRPC development is creating &lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana; font-size: 85%&quot;&gt;&lt;font size=&quot;2&quot;&gt;your own custom rules which goes through the Rules assembly or &lt;strong&gt;First Use Assembly&lt;/strong&gt; (&lt;strong&gt;FUA&lt;/strong&gt;) process. You might wonder why someone should put custom rules creation at the top, frankly the reason is when you design a custom rule and finally implement it, you are exposed to the wonderful design of Pega itself and you slowly understand the inner workings of PRPC.&lt;/font&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: 85%&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;strong&gt;The moral of the story:&lt;/strong&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: verdana; font-size: 85%&quot;&gt;&lt;font size=&quot;2&quot;&gt;Don’t be stuck in a higher level abstraction layer, go down and explore how the creature is build, then only you will understand its behavior.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/5646562946772548804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/06/pinnacle-of-prpc-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/5646562946772548804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/5646562946772548804'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/06/pinnacle-of-prpc-development.html' title='Pinnacle of PRPC development'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-756178296427243422.post-258274689402300168</id><published>2010-06-07T09:43:00.020+05:30</published><updated>2010-06-08T01:33:46.829+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="Error Messages"/><title type='text'>PRPC Error Messages</title><content type='html'>&lt;span style=&quot;font-family: arial, sans-serif; font-size: 13px&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;     &lt;div&gt;&lt;span style=&quot;font-family: verdana, sans-serif&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: georgia, serif; font-size: 130%&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: 16px&quot; class=&quot;Apple-style-span&quot;&gt;               &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/p&gt;               &lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;                 &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span style=&quot;color: #333333&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;Have you seen the following error messages, as developers we might have seen below error messages while developing with PRPC. But what will happen if these error messages happen to pop up on production environments. Look closely, these messages might be disclosing internal details or sometimes these messages are not meaningful to end users even though these are good debugging aid for developers. So as a solution PRPC has given us various options to customize error messages and configure some of them. To find out please read the following three PDN articles. Happy Reading.&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;               &lt;/span&gt;                &lt;p&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;                       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;1. &lt;a href=&quot;http://pdn.pega.com/ProductSupport/Products/PegaRULESProcessCommander/documents/PRPC/Help_V55/howto/howto2/suppresstraceback.asp&quot;&gt;Suppress details of show exception details (Java Exception Traceback)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin: 0in 2.25pt 0pt 0.75pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: verdana; color: #0000ff&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;                     &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib9HJYhu6Qru9YSDPvTA5lPTRQI6FvH_SCPlaTp36BDlmYPRFZ4YaEQlRt_BWLVldnEPjltTnDSJ5_IwA1qi8xJh_4KnMJyT5PiSb6ZepTiNnRjjbLrRauJSiCL4Hsre7mDj-8yJZRcky8/s1600/E1.jpg&quot;&gt;&lt;img style=&quot;width: 400px; height: 139px; cursor: pointer&quot; id=&quot;BLOGGER_PHOTO_ID_5479884719139062706&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib9HJYhu6Qru9YSDPvTA5lPTRQI6FvH_SCPlaTp36BDlmYPRFZ4YaEQlRt_BWLVldnEPjltTnDSJ5_IwA1qi8xJh_4KnMJyT5PiSb6ZepTiNnRjjbLrRauJSiCL4Hsre7mDj-8yJZRcky8/s400/E1.jpg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;2&lt;/font&gt;. &lt;a href=&quot;http://pdn.pega.com/DevNet/PRPCv4/KB/24110.asp&quot;&gt;How to suppress the Show Details link after a database exception&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;                           &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/p&gt;               &lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;                 &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span style=&quot;color: #333333&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;This article describes some legacy method of disabling the error messages; currently we have HTML rules inside PRPC for the same content.&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;               &lt;/span&gt;                &lt;p&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;                       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlmQNg6Zi-xWLPITzIkCAsA_QVsDB4bnOH0_MK8aTEs8mzJ3LEtpzvIwRGKVegtNMMHKHWabDUaNUk64kB_5LjI1JAOAUECOTWhLyx-P9EMYJrS8qcaC1elHGjwejcpJgSL2PAlrF-3BSZ/s1600/E2.jpg&quot;&gt;&lt;img style=&quot;width: 400px; height: 143px; cursor: pointer&quot; id=&quot;BLOGGER_PHOTO_ID_5479886312638874082&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlmQNg6Zi-xWLPITzIkCAsA_QVsDB4bnOH0_MK8aTEs8mzJ3LEtpzvIwRGKVegtNMMHKHWabDUaNUk64kB_5LjI1JAOAUECOTWhLyx-P9EMYJrS8qcaC1elHGjwejcpJgSL2PAlrF-3BSZ/s400/E2.jpg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;3&lt;/font&gt;. &lt;a href=&quot;http://pdn.pega.com/ProductSupport/Products/PegaRULESProcessCommander/documents/PRPC/Help_V55/howto/howto2/exceptionwindow.asp&quot;&gt;How to customize the success and exception windows&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;span style=&quot;font-weight: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;                           &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;/p&gt;               &lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;                 &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;apple-style-span&quot;&gt;&lt;span style=&quot;color: #333333&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;Please read the article carefully, because some of the rule names are mentioned incorrectly, but after you understand the article, it is easy to find the correct rules.&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;               &lt;/span&gt;                &lt;p&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;                       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p style=&quot;line-height: normal; margin-bottom: 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;color: black&quot;&gt;&lt;span style=&quot;font-family: verdana&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: small&quot; class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0wGwDpj7uNqjt4rKZqybOG_DGypKQzbj_mGHDE-Oo5B89y7oYdNcFpH1cZtioMTSE7gPEMfkDZ2OzB9A-iERO5vYmXpb3qclsDutiSN4tsp9GF2dpsbUQCh34DZgIW-X-BlC6B-cX2duM/s1600/E3.jpg&quot;&gt;&lt;img style=&quot;width: 400px; height: 126px; cursor: pointer&quot; id=&quot;BLOGGER_PHOTO_ID_5479887012674111106&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0wGwDpj7uNqjt4rKZqybOG_DGypKQzbj_mGHDE-Oo5B89y7oYdNcFpH1cZtioMTSE7gPEMfkDZ2OzB9A-iERO5vYmXpb3qclsDutiSN4tsp9GF2dpsbUQCh34DZgIW-X-BlC6B-cX2duM/s400/E3.jpg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                &lt;p&gt;&lt;/p&gt;                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;   &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/span&gt;  </content><link rel='replies' type='application/atom+xml' href='http://prpcdeveloper.blogspot.com/feeds/258274689402300168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/06/have-you-seen-following-error-messages.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/258274689402300168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/756178296427243422/posts/default/258274689402300168'/><link rel='alternate' type='text/html' href='http://prpcdeveloper.blogspot.com/2010/06/have-you-seen-following-error-messages.html' title='PRPC Error Messages'/><author><name>PRPC Developer</name><uri>http://www.blogger.com/profile/09804208614275332934</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib9HJYhu6Qru9YSDPvTA5lPTRQI6FvH_SCPlaTp36BDlmYPRFZ4YaEQlRt_BWLVldnEPjltTnDSJ5_IwA1qi8xJh_4KnMJyT5PiSb6ZepTiNnRjjbLrRauJSiCL4Hsre7mDj-8yJZRcky8/s72-c/E1.jpg" height="72" width="72"/><thr:total>2</thr:total></entry></feed>