tag:blogger.com,1999:blog-446191206878873772024-03-13T05:04:54.677+05:30I Came,I Learned,I Experienced....Welcome To My Little Corner Of The IT Virtual WorldMarimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.comBlogger98125tag:blogger.com,1999:blog-44619120687887377.post-88327374078486449052020-03-26T12:56:00.000+05:302020-03-26T12:56:05.068+05:30Solution Architect Show - What Solution Architect Does In a Project<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=11698823" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/11698823">Listen to "What Solution Architect Does In a Project" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-18736732173812051612020-03-26T12:55:00.002+05:302020-03-26T12:55:30.539+05:30Solution Architect Show - What skills required to become an excellent solution architect?<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=11750590" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/11750590">Listen to "What skills required to become an excellent solution architect?" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-8113211301132886142020-03-26T12:54:00.003+05:302020-03-26T12:54:43.768+05:30Why You Want To Become A Solution Architect<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=11810026" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/11810026">Listen to "Why You Want To Become A Solution Architect" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-88098005709957637052020-03-26T12:54:00.000+05:302020-03-26T12:54:00.111+05:30How To Become A Solution Architect<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=11861660" data-theme="light" data-width="100%" href="https://www.spreaker.com/user/ybbest/how-to-become-a-solution-architect">Listen to "How To Become A Solution Architect" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-59004641103055928532020-03-26T12:53:00.001+05:302020-03-26T12:57:36.842+05:30Solution Architect Show - The 7 HABITS OF HIGHLY EFFECTIVE SOLUTION ARCHITECT<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=11941194" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/11941194">Listen to " The 7 HABITS OF HIGHLY EFFECTIVE SOLUTION ARCHITECT" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-17100102161364247212020-03-26T12:52:00.002+05:302020-03-26T12:52:32.218+05:30Solution Architect Show<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=12045141" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/12045141">Listen to "8 Common Mistakes For New Solution Architect And How To Avoid Them." on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-42350898913121929062020-03-26T12:51:00.000+05:302020-03-26T12:51:30.664+05:30Solution Architect Show<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=12146536" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/12146536">Listen to "The disruption to your IT Career is coming , are you ready?" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-21476648684508584032020-03-26T12:50:00.000+05:302020-03-26T12:51:43.281+05:30Solution Architect Show<div dir="ltr" style="text-align: left;" trbidi="on">
<a class="spreaker-player" data-autoplay="false" data-cover="https://d3wo5wojvuv7l.cloudfront.net/images.spreaker.com/original/89e8fd5379b31e99a3026fca533ae16a.jpg" data-height="400px" data-playlist="false" data-resource="episode_id=14853306" data-theme="light" data-width="100%" href="https://www.spreaker.com/episode/14853306">Listen to "The fundamental skills" on Spreaker.</a><script async="" src="https://widget.spreaker.com/widgets.js"></script></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-3496826739247220912019-11-21T12:05:00.000+05:302019-11-21T12:05:33.995+05:30Fetching Task PendingWith ( User / Team ) - BPM<div dir="ltr" style="text-align: left;" trbidi="on">
function checkEmptyString(x) {<br /> return (null == x || typeof x == 'undefined' || undefined == x || 'null' == x || '' == x);<br />}<br />
<br />
function getUserInfo(employeeId) {<br /> var userInfo = employeeId;<br /> if(null != employeeId && typeof employeeId != 'undefined' && undefined != employeeId) {<br /> var user = tw.system.org.findUserByName(employeeId);<br /> if(user != null) {<br /> userInfo = user.fullName + " (" + employeeId + ")";<br /> } <br /> }<br /> <br /> return userInfo;<br />}<br />
<br />
<br />
var pendingWith = "";<br /><br /> if( !checkEmptyString(processId) ) {<br /><br /> <br /><br /> try {<br /><br /> <br /><br /> var search = new TWSearch();<br /><br /> search.organizedBy = TWSearch.OrganizeByTypes.Task;<br /><br /> var searchColumnList = new Array();<br /><br /> var conditionList = new Array();<br /><br /> <br /><br /> // Task #<br /><br /> var searchColumn = new TWSearchColumn();<br /><br /> searchColumn.name = TWSearchColumn.TaskColumns.ID;<br /><br /> searchColumn.type = TWSearchColumn.Types.Task;<br /><br /> searchColumnList.push(searchColumn);<br /><br /> <br /><br /> // Task - AssignedToRole<br /><br /> var searchColumn = new TWSearchColumn();<br /><br /> searchColumn.name = TWSearchColumn.TaskColumns.AssignedToRole;<br /><br /> searchColumn.type = TWSearchColumn.Types.Task;<br /><br /> searchColumnList.push(searchColumn);<br /><br /> <br /><br /> // Task - AssignedToUser<br /><br /> var searchColumn = new TWSearchColumn();<br /><br /> searchColumn.name = TWSearchColumn.TaskColumns.AssignedToUser;<br /><br /> searchColumn.type = TWSearchColumn.Types.Task;<br /><br /> searchColumnList.push(searchColumn);<br /><br /> <br /><br /> <br /><br /> // Add Conditions<br /><br /> // Task - Status Equals Received<br /><br /> var searchColumn = new TWSearchColumn();<br /><br /> searchColumn.name = TWSearchColumn.TaskColumns.Status;<br /><br /> searchColumn.type = TWSearchColumn.Types.Task;<br /><br /> searchColumnList.push(searchColumn);<br /><br /> <br /><br /> var condition = new TWSearchCondition();<br /><br /> condition.column = searchColumn;<br /><br /> condition.operator = TWSearchCondition.Operations.Equals;<br /><br /> condition.value = TWTask.Statuses.Received;<br /><br /> conditionList.push(condition);<br /><br /> <br /><br /> // Process - Status Equals Active<br /><br /> var searchColumn = new TWSearchColumn();<br /><br /> searchColumn.name = TWSearchColumn.ProcessInstanceColumns.Status;<br /><br /> searchColumn.type = TWSearchColumn.Types.ProcessInstance; <br /><br /> searchColumnList.push(searchColumn);<br /><br /> <br /><br /> var condition = new TWSearchCondition();<br /><br /> condition.column = searchColumn;<br /><br /> condition.operator = TWSearchCondition.Operations.Equals;<br /><br /> condition.value = TWProcessInstance.Statuses.Active;<br /><br /> conditionList.push(condition);<br /><br /> <br /><br /> // Condition with Process Instance #<br /><br /> var searchColumn = new TWSearchColumn();<br /><br /> searchColumn.name = TWSearchColumn.ProcessInstanceColumns.ID;<br /><br /> searchColumn.type = TWSearchColumn.Types.ProcessInstance;<br /><br /> searchColumnList.push(searchColumn);<br /><br /> <br /><br /> var condition = new TWSearchCondition();<br /><br /> condition.column = searchColumn;<br /><br /> condition.operator = TWSearchCondition.Operations.Equals;<br /><br /> condition.value = processId;<br /><br /> conditionList.push(condition);<br /><br /> <br /><br /> search.columns = searchColumnList;<br /><br /> search.conditions = conditionList;<br /><br /> <br /><br /> var results = search.execute();<br /><br /> <br /><br /> if ( results && results.rows && results.rows.length > 0 ) {<br /><br /> <br /><br /> for ( var i = 0; i < results.rows.length; i++ ) {<br /><br /> <br /><br /> var values = results.rows[i].values;<br /><br /> <br /><br /> for ( var j = 0; j < values.length; j++ ) {<br /><br /> <br /><br /> var key = searchColumnList[j].type + "_" + searchColumnList[j].name;<br /><br /> <br /><br /> if( key == 'Task_AssignedToRole' && !checkEmptyString(values[j]) ) {<br /><br /> pendingWith = (checkEmptyString(pendingWith)) ? (values[j] + " Team") : (pendingWith + ", " + values[j] + " Team");<br /><br /> }<br /><br /> else if( key == 'Task_AssignedToUser' && !checkEmptyString(values[j]) ) {<br /><br /> pendingWith = (checkEmptyString(pendingWith)) ? getUserInfo(values[j]) : (pendingWith + ", " + getUserInfo(values[j]));<br /><br /> }<br /><br /> }<br /><br /> }<br /><br /> }<br /><br /> }<br /><br /> catch ( Exception ) {<br /><br /> log.error("Process App : " + tw.system.model.processApp.acronym + ", Error while looking up pending with for Process # " + processId);<br /><br /> if( tw.system.error )<br /><br /> log.error("Error Details : " + tw.system.error.toString(false));<br /><br /> }<br /><br /> return pendingWith;<br /> }<br /><br /><br />
<br /></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-67676683853519309972016-06-22T11:00:00.000+05:302016-06-22T11:00:24.313+05:30Limitations in IBM BPM document store<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="body refbody">
<div class="shortdesc">
There are some limitations in administering the IBM BPM document store. In most situations, you can successfully work around these limitations.</div>
<div class="section">
<div class="p">
The following list contains some known limitations of the IBM BPM document store:</div>
<ul class="ul">
<li class="li">The document store must be enabled at configuration time for an IBM BPM installation that is configured to use DB2 on z/OS</li>
<li class="li">The document store is only available when Federated Repositories is used as the user registry</li>
<li class="li">An exception occurs when you are logging or tracing document store operations</li>
<li class="li">Defining too many properties can exceed the table row size limit</li>
</ul>
</div>
<div class="section">
These limitations are described in the following sections.<div class="p">
Although the IBM BPM document store is not available in these situations, you can continue to work with your document attachments in the IBM BPM database. Alternatively, you can configure an external Enterprise Content Manager (ECM) system for storing your documents. In either situation, the legacy document APIs continue to be used. Any ECM operations that specify the IBM BPM document store as a server will fail.</div>
</div>
<div class="section">
<h2 class="title sectiontitle">
The document store must be enabled at configuration time for an IBM BPM installation that is configured to use DB2 on z/OS</h2>
At configuration time, you decide whether you want to enable the IBM BPM document store. After you configure the IBM BPM document store, you cannot dynamically enable or disable the IBM BPM document store.</div>
<div class="section">
<h2 class="title sectiontitle">
The document store is only available when Federated Repositories is used as the user registry</h2>
The IBM BPM document store is only available when Business Process Manager is configured to use Federated Repositories as the user registry. If you are using a different user registry configuration, disable the autostart mechanism of the IBM_BPM_DocumentStore application.<div class="p">
To use the IBM BPM document store with your LDAP users and groups, configure LDAP as a repository in Federated Repositories instead of using stand-alone LDAP as the user registry. Additional information is found in the topic "Configuring external security providers."</div>
</div>
<div class="section">
<h2 class="title sectiontitle">
An exception occurs when you are logging or tracing document store operations</h2>
When the server is started or the IBM BPM document store commands <span class="keyword cmdname">maintainDocumentStoreTrace</span> or <span class="keyword cmdname">updateDocumentStoreApp</span> are run, the following SystemErr exception might be logged:<pre class="pre codeblock"><code>[3/19/13 23:31:12:548 PDT] 00000084 SystemErr R log4j:WARN No appenders could be found for logger (filenet_error.api.com.filenet.apiimpl.util.ConfigValueLookup).
[3/19/13 23:31:12:548 PDT] 00000084 SystemErr R log4j:WARN Please initialize the log4j system properly.
[3/19/13 23:31:14:482 PDT] 00000084 SystemErr R log4j:WARN Configuring default logging to the file E:\IBM\WebSphere\AppServer\profiles\Custom01\FileNet\
testDE1.AppCluster.WIN-E6GDL89KDJDNode01.0\p8_server_error.log
[3/19/13 23:31:49:536 PDT] 00000084 SystemErr R log4j:WARN No appenders could be found for logger (filenet_error.api.com.filenet.apiimpl.util.ConfigValueLookup).
[3/19/13 23:31:49:536 PDT] 00000084 SystemErr R log4j:WARN Please initialize the log4j system properly.
[3/19/13 23:33:25:867 PDT] 00000108 SystemErr R SLF4J: Class path contains multiple SLF4J bindings.</code></pre>
The exception is caused by the tracing and logging mechanism that is used with the IBM BPM document store. The exception does not result in any operational problems and can be safely ignored.</div>
<div class="section">
<h2 class="title sectiontitle">
Defining too many properties can exceed the table row size limit</h2>
Over time, the number of properties that are defined for an application can exceed the table row size limit. You can delete unused properties by completing the actions that are described in <a class="xref" href="http://www.ibm.com/support/knowledgecenter/en/SSFPJS_8.5.5/com.ibm.wbpm.admin.doc/topics/tbpmdoccleanup.html">Cleaning up the IBM BPM document store</a>.</div>
</div>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com1tag:blogger.com,1999:blog-44619120687887377.post-46115294187513374802016-05-24T12:56:00.001+05:302016-05-24T12:56:28.717+05:30BM Business Process Manager Event Manager - Common symptoms and Solutions<div dir="ltr" style="text-align: left;" trbidi="on">
<table border="0" cellpadding="0" cellspacing="0" class="lotusTable blogsFixedTable" role="presentation" summary=""><tbody>
<tr class="lotusFirst"><td class="min-h4-padding min-entry entryContentContainerTD blogsWrapText"><div class="ibm-anchor-pointer">
<a href="https://www.blogger.com/null" name="ibm_bpm_event_manager_common_problems"></a></div>
<div id="css-entry">
Introduction<div dir="ltr">
The event manager is the central component in IBM Business Process
Manager that is responsible for scheduling a number of different tasks.
If it's not working correctly, you might run into severe problems that
need to be resolved quickly.</div>
<div dir="ltr">
This blog entry describes some of the most common symptoms and shows how to resolve them.</div>
<div dir="ltr">
In <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#PartI">Part I</a>, some common event manager problems will be shown. <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#PartII">Part II</a> explains how to analyze and fix these problems. <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#PartIII">Part III</a> lists the available APARs that are related to the event manager.</div>
<div dir="ltr">
Special thx to Mark Filley and Bill Wentworth for their technical input and in depth review!</div>
<div dir="ltr">
</div>
<h1 dir="ltr">
<div class="ibm-anchor-pointer">
<a href="https://www.blogger.com/null" name="PartI"></a></div>
Part I - Common event manager symptoms</h1>
<h2 dir="ltr">
Symptom A - Event manager is not processing any work</h2>
<div dir="ltr">
The event manger is responsible for the scheduling of various jobs like:</div>
<ul dir="ltr">
<li>
Executing undercover agents (UCAs)</li>
<li>
Executing system lane tasks</li>
<li>
Triggering business process definition (BPD) timers</li>
<li>
Scheduling BPD notifications, which are essential to move the process flow forward through the business process diagram (BPMN)</li>
</ul>
<div dir="ltr">
<br />
If your process instances are stuck, timers not fired, and UCAs are no
longer executed, then the event manager is not running or could be
blocked.<br />
<br />
The Process Admin Console gives you a comprehensive view that shows the status of the event manager. When the status light is <span style="color: red;">red</span>, the event manager is paused or did not start and its jobs are accumulating with a <span style="font-family: courier new,courier,monospace;">Scheduled Time </span>much behind the current time. In the Process Admin Console, these jobs would show 'Job Status' as '<span style="font-family: Courier New; font-weight: bold;">Scheduled</span>' and jobs would not be in the '<span style="font-family: Courier New; font-weight: bold;">Executing</span>' state.</div>
<div dir="ltr">
For example:</div>
<div dir="ltr">
The following screen shot, which was taken from the Process Admin
Console, shows the last event manager heart beat expiration time stamp
of "12/10/2014 2:00:15 PM." This time stamp is normally ahead of the
current time. The event manager job's (UCAs and BPD notifications) <span style="font-family: Courier New;">Scheduled Time</span>
shows an earlier time stamp and a job is not currently executing. In
this example, the event manager is shown as inactive (red light), which
explains the situation.</div>
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_1.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_1.png" style="display: block; float: left; margin: 1em 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
</div>
<div dir="ltr">
<span style="font-weight: bold;">Note</span>: Even if the event manager
is not running, it is possible to start new process instances, but they
will not move forward! As services are not scheduled by the event
manager, those could also be executed.</div>
<div dir="ltr">
</div>
<h2 dir="ltr">
Symptom B - Event manager shows jobs with a scheduled date of 2099</h2>
<div dir="ltr">
The Process Admin Console can show event manager jobs scheduled for 2099 as shown here:</div>
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_2.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_2.png" style="display: block; float: left; margin: 1em 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
</div>
<h2 dir="ltr">
Symptom C - Event manager is active, but long running system lane tasks block the event manager throughput</h2>
<div dir="ltr">
There can be situations where the event manager is actively working,
but you experience throughput problems. For example, the flow in the
process instances is not moving forward or the execution of timers is
delayed.<br />
<br />
The following screen shot shows five system lane activities being
executed, but a couple of BPD notifications are waiting to be executed.
These BPD notifications are overdue as the 'Scheduled Time' is greater
than the current time. This situation can indicate that the event
manager configuration needs to be tuned and/or the execution time for
system lane tasks needs to be optimized, if possible. </div>
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_3.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_3.png" style="display: block; float: left; margin: 1em 0pt 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
See resolution section <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#CDEF">C,D,<wbr></wbr>E,F <wbr></wbr>- Ev<wbr></wbr>ent <wbr></wbr>mana<wbr></wbr>ger is acti<wbr></wbr>ve, <wbr></wbr>but <wbr></wbr>thro<wbr></wbr>ughp<wbr></wbr>ut p<wbr></wbr>robl<wbr></wbr>ems exist</a> to analyze and resolve this problem.</div>
<h2 dir="ltr">
</h2>
<h2 dir="ltr">
Symptom D - UCAs are not processing at the desired rate</h2>
<div dir="ltr">
According to the definition in the process application, UCAs are bound
to a couple of synchronous queues or a single asynchronous queue managed
by the event manager. The capacity for these queues is defined by the
following parameters in the <span style="font-family: courier new,courier,monospace;">80EventManager.xml</span> configuration file:<br />
<span style="font-family: Courier New;"><asy wbr="">nc-q<wbr></wbr>ueue<wbr></wbr>-cap<wbr></wbr>acit<wbr></wbr>y> </asy></span>or</div>
<div dir="ltr">
<span style="font-family: courier new,courier,monospace;"><syn wbr="">c-qu<wbr></wbr>eue-<wbr></wbr>capa<wbr></wbr>city<wbr></wbr>></syn></span></div>
<div dir="ltr">
These numbers limit the rate of UCAs that can be executed at a time.<br />
<br />
See resolution section <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#CDEF">C,D,<wbr></wbr>E,F <wbr></wbr>- Ev<wbr></wbr>ent <wbr></wbr>mana<wbr></wbr>ger is acti<wbr></wbr>ve, <wbr></wbr>but <wbr></wbr>thro<wbr></wbr>ughp<wbr></wbr>ut p<wbr></wbr>robl<wbr></wbr>ems exist</a> to analyze and resolve that problem.<br />
</div>
<h2 dir="ltr">
<br />
Symptom E - Many BPD timers wake up at the same time</h2>
<div dir="ltr">
When the event manager processes a timer, it loads the applicable task
into the "BPD async queue," whose capacity is defined by the <strong><span style="font-family: courier new,courier,monospace;"><bpd wbr="">-que<wbr></wbr>ue-c<wbr></wbr>apac<wbr></wbr>ity> </bpd></span></strong>setting from the <span style="font-family: courier new,courier,monospace;">80EventManager.xm</span>l
configuration file. If the application design has hundreds or thousands
of timers that start at the exact same time, then this setting might
need to be increased beyond the default of forty (40).</div>
<div dir="ltr">
Keep in mind that this queue is shared between timer executions, BPD notifications and the execution of system lane tasks.<br />
<br />
See resolution section <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#CDEF">C,D,<wbr></wbr>E,F <wbr></wbr>- Ev<wbr></wbr>ent <wbr></wbr>mana<wbr></wbr>ger is acti<wbr></wbr>ve, <wbr></wbr>but <wbr></wbr>thro<wbr></wbr>ughp<wbr></wbr>ut p<wbr></wbr>robl<wbr></wbr>ems exist</a> to analyze and resolve that problem.<br />
<br />
</div>
<h2 dir="ltr">
Symptom F - Event Manager warning messages CWLLG2156W, CWLLG2236W occur</h2>
<div dir="ltr">
If the BPM run time detects that the database connection pool is too
small, it will dynamically reduce the queue sizes and you will see
entries in SystemOut.log like the following messages:<br />
<span style="font-family: courier new,courier,monospace;">"CWLLG2156W: The database connection pool size xxx of the Process Server data source might be too small." and/or<br />
"CWLLG2236W: The configured <%%%<wbr></wbr>%%%-<wbr></wbr>queu<wbr></wbr>e-ca<wbr></wbr>paci<wbr></wbr>ty> parameter of xxx has been changed to yyy."</span></div>
<div dir="ltr">
These messages indicate that there is a mismatch between the event manager queue capacity and the JDBC data source pool size.</div>
<div dir="ltr">
See resolution section <a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/ibm_bpm_event_manager_common_problems?lang=en#CDEF">C,D,E,F - Event manager is active, but throughput problems exist</a> to analyze and resolve that problem.</div>
<div dir="ltr">
</div>
<h2 dir="ltr">
Symptom G - Event manager tasks fail when Lomb<wbr></wbr>ardi<wbr></wbr>Even<wbr></wbr>tEmi<wbr></wbr>tter<wbr></wbr>Inpu<wbr></wbr>tQue<wbr></wbr>ue reached max threshold</h2>
<div dir="ltr">
When you have your IBM Business Process Manager environment configured
to forward monitoring events to a Business Monitor server, the execution
of event manager tasks involves sending a message to the local queue
called "<span style="font-family: Courier New;">Lom<wbr></wbr>bard<wbr></wbr>iEve<wbr></wbr>ntEm<wbr></wbr>itte<wbr></wbr>rInp<wbr></wbr>utQu<wbr></wbr>eu<wbr></wbr>e</span>." This queue maps to the JNDI name <span style="font-family: Courier New;">jms/<wbr></wbr>com.<wbr></wbr>ibm.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>/Eve<wbr></wbr>ntEm<wbr></wbr>issi<wbr></wbr>onQu<wbr></wbr>eu<wbr></wbr>e</span>.</div>
<div dir="ltr">
If the queue depth of the <span style="font-family: Courier New;">Lomb<wbr></wbr>ardi<wbr></wbr>Even<wbr></wbr>tEmi<wbr></wbr>tter<wbr></wbr>Inpu<wbr></wbr>tQue<wbr></wbr>ue </span>reaches
the configured maximum threshold, no more message can be put to this
queue and the execution of an event manager tasks will end up in an
exception like the following text:</div>
<div dir="ltr">
<span style="font-family: courier new,courier,monospace;">J2CA0027E: An exception occurred while invoking prepare on an XA Resource Adapter from DataSource jms/<wbr></wbr>com.<wbr></wbr>ibm.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>/Eve<wbr></wbr>ntEm<wbr></wbr>issi<wbr></wbr>onQu<wbr></wbr>eueF<wbr></wbr>acto<wbr></wbr>ry, within transaction ID {XidImpl: formatId(57415344), gtrid_length(36), bqual_length(54),<br />
data<wbr></wbr>(000<wbr></wbr>0014<wbr></wbr>ac68<wbr></wbr>0b3d<wbr></wbr>d000<wbr></wbr>0000<wbr></wbr>10c3<wbr></wbr>c5a4<wbr></wbr>c306<wbr></wbr>53f6<wbr></wbr>b06f<wbr></wbr>16c1<wbr></wbr>e578<wbr></wbr>2cea<wbr></wbr>7f4f<wbr></wbr>ce4b<wbr></wbr>60a8<wbr></wbr>f48d<wbr></wbr>3000<wbr></wbr>0014<wbr></wbr>ac68<wbr></wbr>0b3d<wbr></wbr>d000<wbr></wbr>0000<wbr></wbr>10c3<wbr></wbr>c5a4<wbr></wbr>c306<wbr></wbr>53f6<wbr></wbr>b06f<wbr></wbr>16c1<wbr></wbr>e578<wbr></wbr>2cea<wbr></wbr>7f4f<wbr></wbr>ce4b<wbr></wbr>60a8<wbr></wbr>f48d<wbr></wbr>3000<wbr></wbr>0000<wbr></wbr>1000<wbr></wbr>0000<wbr></wbr>0000<wbr></wbr>0000<wbr></wbr>0000<wbr></wbr>0000<wbr></wbr>0000<wbr></wbr>2)} : java<wbr></wbr>x.tr<wbr></wbr>ansa<wbr></wbr>ctio<wbr></wbr>n.xa<wbr></wbr>.XAE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>:
CWSIC8007E: An exception was caught from the remote server with Probe
Id 3-013-0010. Exception: CWSIC2029E: This transaction cannot commit as
an operation that was performed within the transaction boundary failed.
The first operation that failed generated the following exception: com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.p<wbr></wbr>roce<wbr></wbr>ssor<wbr></wbr>.exc<wbr></wbr>epti<wbr></wbr>ons.<wbr></wbr>SIMP<wbr></wbr>Limi<wbr></wbr>tExc<wbr></wbr>eede<wbr></wbr>dExc<wbr></wbr>epti<wbr></wbr>on: CWSIK0025E: The destination Lomb<wbr></wbr>ardi<wbr></wbr>Even<wbr></wbr>tEmi<wbr></wbr>tter<wbr></wbr>Inpu<wbr></wbr>tQue<wbr></wbr>ue on messaging engine Proc<wbr></wbr>essS<wbr></wbr>erve<wbr></wbr>rPro<wbr></wbr>dDep<wbr></wbr>Env.<wbr></wbr>SupC<wbr></wbr>lust<wbr></wbr>er.0<wbr></wbr>00-M<wbr></wbr>ONIT<wbr></wbr>OR.C<wbr></wbr>ell0<wbr></wbr>1.Bu<wbr></wbr>s is not available because the high limit for the number of messages for this destination has already been reached...<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.c<wbr></wbr>omms<wbr></wbr>.com<wbr></wbr>mon.<wbr></wbr>Comm<wbr></wbr>sByt<wbr></wbr>eBuf<wbr></wbr>fer.<wbr></wbr>pars<wbr></wbr>eSin<wbr></wbr>gleE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>(Com<wbr></wbr>msBy<wbr></wbr>teBu<wbr></wbr>ffer<wbr></wbr>.jav<wbr></wbr>a:17<wbr></wbr>53)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.c<wbr></wbr>omms<wbr></wbr>.com<wbr></wbr>mon.<wbr></wbr>Comm<wbr></wbr>sByt<wbr></wbr>eBuf<wbr></wbr>fer.<wbr></wbr>getE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>(Com<wbr></wbr>msBy<wbr></wbr>teBu<wbr></wbr>ffer<wbr></wbr>.jav<wbr></wbr>a)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.c<wbr></wbr>omms<wbr></wbr>.com<wbr></wbr>mon.<wbr></wbr>Comm<wbr></wbr>sByt<wbr></wbr>eBuf<wbr></wbr>fer.<wbr></wbr>chec<wbr></wbr>kXAC<wbr></wbr>omma<wbr></wbr>ndCo<wbr></wbr>mple<wbr></wbr>tion<wbr></wbr>Stat<wbr></wbr>us(C<wbr></wbr>omms<wbr></wbr>Byte<wbr></wbr>Buff<wbr></wbr>er.j<wbr></wbr>ava:<wbr></wbr>1218<wbr></wbr>)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.c<wbr></wbr>omms<wbr></wbr>.cli<wbr></wbr>ent.<wbr></wbr>Opti<wbr></wbr>mize<wbr></wbr>dSIX<wbr></wbr>ARes<wbr></wbr>ourc<wbr></wbr>ePro<wbr></wbr>xy.p<wbr></wbr>repa<wbr></wbr>re(O<wbr></wbr>ptim<wbr></wbr>ized<wbr></wbr>SIXA<wbr></wbr>Reso<wbr></wbr>urce<wbr></wbr>Prox<wbr></wbr>y.ja<wbr></wbr>va:7<wbr></wbr>49)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.c<wbr></wbr>omms<wbr></wbr>.cli<wbr></wbr>ent.<wbr></wbr>Susp<wbr></wbr>enda<wbr></wbr>bleX<wbr></wbr>ARes<wbr></wbr>ourc<wbr></wbr>e.pr<wbr></wbr>epar<wbr></wbr>e(Su<wbr></wbr>spen<wbr></wbr>dabl<wbr></wbr>eXAR<wbr></wbr>esou<wbr></wbr>rce.<wbr></wbr>java<wbr></wbr>:386<wbr></wbr>)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.a<wbr></wbr>pi.j<wbr></wbr>msra<wbr></wbr>.imp<wbr></wbr>l.Jm<wbr></wbr>sJca<wbr></wbr>Reco<wbr></wbr>vera<wbr></wbr>bleS<wbr></wbr>iXaR<wbr></wbr>esou<wbr></wbr>rce.<wbr></wbr>prep<wbr></wbr>are(<wbr></wbr>JmsJ<wbr></wbr>caRe<wbr></wbr>cove<wbr></wbr>rabl<wbr></wbr>eSiX<wbr></wbr>aRes<wbr></wbr>ourc<wbr></wbr>e.ja<wbr></wbr>va:2<wbr></wbr>60)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ejs.<wbr></wbr>j2c.<wbr></wbr>XATr<wbr></wbr>ansa<wbr></wbr>ctio<wbr></wbr>nWra<wbr></wbr>pper<wbr></wbr>.pre<wbr></wbr>pare<wbr></wbr>(XAT<wbr></wbr>rans<wbr></wbr>acti<wbr></wbr>onWr<wbr></wbr>appe<wbr></wbr>r.ja<wbr></wbr>va:1<wbr></wbr>152)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>JTAX<wbr></wbr>ARes<wbr></wbr>ourc<wbr></wbr>eImp<wbr></wbr>l.pr<wbr></wbr>epar<wbr></wbr>e(JT<wbr></wbr>AXAR<wbr></wbr>esou<wbr></wbr>rceI<wbr></wbr>mpl.<wbr></wbr>java<wbr></wbr>:234<wbr></wbr>)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>Regi<wbr></wbr>ster<wbr></wbr>edRe<wbr></wbr>sour<wbr></wbr>ces.<wbr></wbr>prep<wbr></wbr>areR<wbr></wbr>esou<wbr></wbr>rce(<wbr></wbr>Regi<wbr></wbr>ster<wbr></wbr>edRe<wbr></wbr>sour<wbr></wbr>ces.<wbr></wbr>java<wbr></wbr>:121<wbr></wbr>1)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>Regi<wbr></wbr>ster<wbr></wbr>edRe<wbr></wbr>sour<wbr></wbr>ces.<wbr></wbr>dist<wbr></wbr>ribu<wbr></wbr>tePr<wbr></wbr>epar<wbr></wbr>e(Re<wbr></wbr>gist<wbr></wbr>ered<wbr></wbr>Reso<wbr></wbr>urce<wbr></wbr>s.ja<wbr></wbr>va:1<wbr></wbr>472)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>Tran<wbr></wbr>sact<wbr></wbr>ionI<wbr></wbr>mpl.<wbr></wbr>prep<wbr></wbr>areR<wbr></wbr>esou<wbr></wbr>rces<wbr></wbr>(Tra<wbr></wbr>nsac<wbr></wbr>tion<wbr></wbr>Impl<wbr></wbr>.jav<wbr></wbr>a:14<wbr></wbr>88)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.t<wbr></wbr>x.jt<wbr></wbr>a.Tr<wbr></wbr>ansa<wbr></wbr>ctio<wbr></wbr>nImp<wbr></wbr>l.st<wbr></wbr>age1<wbr></wbr>Comm<wbr></wbr>itPr<wbr></wbr>oces<wbr></wbr>sing<wbr></wbr>(Tra<wbr></wbr>nsac<wbr></wbr>tion<wbr></wbr>Impl<wbr></wbr>.jav<wbr></wbr>a:60<wbr></wbr>2)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>Tran<wbr></wbr>sact<wbr></wbr>ionI<wbr></wbr>mpl.<wbr></wbr>proc<wbr></wbr>essC<wbr></wbr>ommi<wbr></wbr>t(Tr<wbr></wbr>ansa<wbr></wbr>ctio<wbr></wbr>nImp<wbr></wbr>l.ja<wbr></wbr>va:1<wbr></wbr>028)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>Tran<wbr></wbr>sact<wbr></wbr>ionI<wbr></wbr>mpl.<wbr></wbr>comm<wbr></wbr>it(T<wbr></wbr>rans<wbr></wbr>acti<wbr></wbr>onIm<wbr></wbr>pl.j<wbr></wbr>ava:<wbr></wbr>962)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.t<wbr></wbr>x.jt<wbr></wbr>a.Tr<wbr></wbr>anMa<wbr></wbr>nage<wbr></wbr>rImp<wbr></wbr>l.co<wbr></wbr>mmit<wbr></wbr>(Tra<wbr></wbr>nMan<wbr></wbr>ager<wbr></wbr>Impl<wbr></wbr>.jav<wbr></wbr>a:43<wbr></wbr>9)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>tx.j<wbr></wbr>ta.i<wbr></wbr>mpl.<wbr></wbr>Tran<wbr></wbr>Mana<wbr></wbr>gerS<wbr></wbr>et.c<wbr></wbr>ommi<wbr></wbr>t(Tr<wbr></wbr>anMa<wbr></wbr>nage<wbr></wbr>rSet<wbr></wbr>.jav<wbr></wbr>a:19<wbr></wbr>1)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.u<wbr></wbr>ow.U<wbr></wbr>OWMa<wbr></wbr>nage<wbr></wbr>rImp<wbr></wbr>l.uo<wbr></wbr>wCom<wbr></wbr>mit(<wbr></wbr>UOWM<wbr></wbr>anag<wbr></wbr>erIm<wbr></wbr>pl.j<wbr></wbr>ava:<wbr></wbr>807)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.u<wbr></wbr>ow.e<wbr></wbr>mbed<wbr></wbr>dabl<wbr></wbr>e.Em<wbr></wbr>bedd<wbr></wbr>able<wbr></wbr>UOWM<wbr></wbr>anag<wbr></wbr>erIm<wbr></wbr>pl.u<wbr></wbr>owEn<wbr></wbr>d(Em<wbr></wbr>bedd<wbr></wbr>able<wbr></wbr>UOWM<wbr></wbr>anag<wbr></wbr>erIm<wbr></wbr>pl.j<wbr></wbr>ava:<wbr></wbr>881)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.u<wbr></wbr>ow.U<wbr></wbr>OWMa<wbr></wbr>nage<wbr></wbr>rImp<wbr></wbr>l.uo<wbr></wbr>wEnd<wbr></wbr>(UOW<wbr></wbr>Mana<wbr></wbr>gerI<wbr></wbr>mpl.<wbr></wbr>java<wbr></wbr>:782<wbr></wbr>)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.u<wbr></wbr>ow.e<wbr></wbr>mbed<wbr></wbr>dabl<wbr></wbr>e.Em<wbr></wbr>bedd<wbr></wbr>able<wbr></wbr>UOWM<wbr></wbr>anag<wbr></wbr>erIm<wbr></wbr>pl.r<wbr></wbr>unUn<wbr></wbr>derN<wbr></wbr>ewUO<wbr></wbr>W(Em<wbr></wbr>bedd<wbr></wbr>able<wbr></wbr>UOWM<wbr></wbr>anag<wbr></wbr>erIm<wbr></wbr>pl.j<wbr></wbr>ava:<wbr></wbr>818)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.u<wbr></wbr>ow.e<wbr></wbr>mbed<wbr></wbr>dabl<wbr></wbr>e.Em<wbr></wbr>bedd<wbr></wbr>able<wbr></wbr>UOWM<wbr></wbr>anag<wbr></wbr>erIm<wbr></wbr>pl.r<wbr></wbr>unUn<wbr></wbr>derU<wbr></wbr>OW(E<wbr></wbr>mbed<wbr></wbr>dabl<wbr></wbr>eUOW<wbr></wbr>Mana<wbr></wbr>gerI<wbr></wbr>mpl.<wbr></wbr>java<wbr></wbr>:370<wbr></wbr>)<br />
at org.<wbr></wbr>spri<wbr></wbr>ngfr<wbr></wbr>amew<wbr></wbr>ork.<wbr></wbr>tran<wbr></wbr>sact<wbr></wbr>ion.<wbr></wbr>jta.<wbr></wbr>WebS<wbr></wbr>pher<wbr></wbr>eUow<wbr></wbr>Tran<wbr></wbr>sact<wbr></wbr>ionM<wbr></wbr>anag<wbr></wbr>er.e<wbr></wbr>xecu<wbr></wbr>te(W<wbr></wbr>ebSp<wbr></wbr>here<wbr></wbr>UowT<wbr></wbr>rans<wbr></wbr>acti<wbr></wbr>onMa<wbr></wbr>nage<wbr></wbr>r.ja<wbr></wbr>va:2<wbr></wbr>52)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.uti<wbr></wbr>lity<wbr></wbr>.spr<wbr></wbr>ing.<wbr></wbr>Prog<wbr></wbr>ramm<wbr></wbr>atic<wbr></wbr>Tran<wbr></wbr>sact<wbr></wbr>ionS<wbr></wbr>uppo<wbr></wbr>rt.e<wbr></wbr>xecu<wbr></wbr>teIn<wbr></wbr>NewT<wbr></wbr>rans<wbr></wbr>acti<wbr></wbr>on(P<wbr></wbr>rogr<wbr></wbr>amma<wbr></wbr>ticT<wbr></wbr>rans<wbr></wbr>acti<wbr></wbr>onSu<wbr></wbr>ppor<wbr></wbr>t.ja<wbr></wbr>va:4<wbr></wbr>31)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.uti<wbr></wbr>lity<wbr></wbr>.spr<wbr></wbr>ing.<wbr></wbr>Prog<wbr></wbr>ramm<wbr></wbr>atic<wbr></wbr>Tran<wbr></wbr>sact<wbr></wbr>ionS<wbr></wbr>uppo<wbr></wbr>rt.e<wbr></wbr>xecu<wbr></wbr>te(P<wbr></wbr>rogr<wbr></wbr>amma<wbr></wbr>ticT<wbr></wbr>rans<wbr></wbr>acti<wbr></wbr>onSu<wbr></wbr>ppor<wbr></wbr>t.ja<wbr></wbr>va:2<wbr></wbr>94)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.ser<wbr></wbr>ver.<wbr></wbr>core<wbr></wbr>.TXC<wbr></wbr>omma<wbr></wbr>nd.e<wbr></wbr>xecu<wbr></wbr>teIn<wbr></wbr>Dead<wbr></wbr>lock<wbr></wbr>Retr<wbr></wbr>yLoo<wbr></wbr>p(TX<wbr></wbr>Comm<wbr></wbr>and.<wbr></wbr>java<wbr></wbr>:83)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.ser<wbr></wbr>ver.<wbr></wbr>core<wbr></wbr>.TXC<wbr></wbr>omma<wbr></wbr>nd.e<wbr></wbr>xecu<wbr></wbr>te(T<wbr></wbr>XCom<wbr></wbr>mand<wbr></wbr>.jav<wbr></wbr>a:72<wbr></wbr>)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.bpd<wbr></wbr>.run<wbr></wbr>time<wbr></wbr>.eng<wbr></wbr>ine.<wbr></wbr>quar<wbr></wbr>tz.A<wbr></wbr>bstr<wbr></wbr>actB<wbr></wbr>pdTa<wbr></wbr>sk.e<wbr></wbr>xecu<wbr></wbr>te(A<wbr></wbr>bstr<wbr></wbr>actB<wbr></wbr>pdTa<wbr></wbr>sk.j<wbr></wbr>ava:<wbr></wbr>119)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.bpd<wbr></wbr>.run<wbr></wbr>time<wbr></wbr>.eng<wbr></wbr>ine.<wbr></wbr>quar<wbr></wbr>tz.A<wbr></wbr>bstr<wbr></wbr>actB<wbr></wbr>pdTa<wbr></wbr>sk.e<wbr></wbr>xecu<wbr></wbr>te(A<wbr></wbr>bstr<wbr></wbr>actB<wbr></wbr>pdTa<wbr></wbr>sk.j<wbr></wbr>ava:<wbr></wbr>71)<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.ser<wbr></wbr>ver.<wbr></wbr>sche<wbr></wbr>dule<wbr></wbr>r.En<wbr></wbr>gine<wbr></wbr>.exe<wbr></wbr>cute<wbr></wbr>(Eng<wbr></wbr>ine.<wbr></wbr>java<wbr></wbr>:847<wbr></wbr>)<br />
...<br />
Caused by: com.<wbr></wbr>ibm.<wbr></wbr>wssp<wbr></wbr>i.si<wbr></wbr>b.co<wbr></wbr>re.e<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>.SIL<wbr></wbr>imit<wbr></wbr>Exce<wbr></wbr>eded<wbr></wbr>Exce<wbr></wbr>ptio<wbr></wbr>n: CWSIK0025E: The destination Lomb<wbr></wbr>ardi<wbr></wbr>Even<wbr></wbr>tEmi<wbr></wbr>tter<wbr></wbr>Inpu<wbr></wbr>tQue<wbr></wbr>ue on messaging engine AdvP<wbr></wbr>roce<wbr></wbr>ssSe<wbr></wbr>rver<wbr></wbr>Prod<wbr></wbr>DepE<wbr></wbr>nv.S<wbr></wbr>upCl<wbr></wbr>uste<wbr></wbr>r.00<wbr></wbr>0-MO<wbr></wbr>NITO<wbr></wbr>R.rs<wbr></wbr>dcpp<wbr></wbr>robp<wbr></wbr>mdm0<wbr></wbr>1Cel<wbr></wbr>l01.<wbr></wbr>Bus is not available because the high limit for the number of messages for this destination has already been reached.<br />
at com.<wbr></wbr>ibm.<wbr></wbr>ws.s<wbr></wbr>ib.c<wbr></wbr>omms<wbr></wbr>.com<wbr></wbr>mon.<wbr></wbr>Comm<wbr></wbr>sByt<wbr></wbr>eBuf<wbr></wbr>fer.<wbr></wbr>pars<wbr></wbr>eSin<wbr></wbr>gleE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>(Com<wbr></wbr>msBy<wbr></wbr>teBu<wbr></wbr>ffer<wbr></wbr>.jav<wbr></wbr>a:18<wbr></wbr>42)<br />
... 49 more</span></div>
<div dir="ltr">
</div>
<hr dir="ltr" />
<h1 dir="ltr">
<div class="ibm-anchor-pointer">
<a href="https://www.blogger.com/null" name="PartII"></a></div>
Part II - Resolving common event manager symptoms</h1>
<h2 dir="ltr">
A - Event manager is not processing any work</h2>
<div dir="ltr">
If the event manager does not process any work as mentioned previously
in the symptoms section, this situation might be caused by the event
manager not being active or being active, but blocked for some reason.</div>
<div dir="ltr">
The following sections, A.1 and A.2, describe how to analyze and resolve these situations.</div>
<div dir="ltr">
To monitor and diagnose the status of the event manager, the following pieces of information are helpful:</div>
<ul dir="ltr">
<li>
DB table <span style="font-family: Courier New;">LSW_EM_INSTANCE</span></li>
<li>
DB table <span style="font-family: Courier New;">LSW_EM_TASK</span></li>
<li>
DB table <span style="font-family: Courier New;">LSW_<wbr></wbr>BLAC<wbr></wbr>KOUT<wbr></wbr>_CAL<wbr></wbr>ENDA<wbr></wbr>R</span></li>
<li>
Process Admin Console section Event Manager -> Monitor as GUI to 1. and 2.</li>
<li>
Process Admin Console section Event Manager -> Blackout Periods as GUI to 3.</li>
<li>
BPM server log file <span style="font-family: Courier New;">SystemOut.log</span> and FFDCs</li>
<li>
Event manager configuration file '<span style="font-family: Courier New;">80E<wbr></wbr>vent<wbr></wbr>Mana<wbr></wbr>ger.<wbr></wbr>xm<wbr></wbr>l</span>', respectively and the global BPM server configuration file <span style="font-family: Courier New;">Team<wbr></wbr>Work<wbr></wbr>sCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.r<wbr></wbr>unni<wbr></wbr>ng.x<wbr></wbr>m<wbr></wbr>l</span>,
which contains all of the parameters at run time. The following
technote will show where to find these files and how they relate: <a href="http://www.ibm.com/support/docview.wss?uid=swg21439614" target="_blank">http<wbr></wbr>://w<wbr></wbr>ww.i<wbr></wbr>bm.c<wbr></wbr>om/s<wbr></wbr>uppo<wbr></wbr>rt/d<wbr></wbr>ocvi<wbr></wbr>ew.w<wbr></wbr>ss?u<wbr></wbr>id=s<wbr></wbr>wg21<wbr></wbr>4396<wbr></wbr>1<wbr></wbr>4</a></li>
</ul>
<h2 dir="ltr">
<br />
A.1 - Event manager not active </h2>
<div dir="ltr">
The easiest way to check the status of the event manager is by using
the Process Admin Console, which shows the event manager status and
lists all event manager jobs. It also lists the expiration time stamp,
which is regularly updated every 15s by an internal heartbeat thread and
set to the current time + 60s. Keep in mind that this time stamp is
created based on the current time used on the database system that is
hosting the BPM tables.</div>
<div dir="ltr">
The Process Admin Console panel named 'Event Manager -> Monitor' is a
graphical user interface for the contents of the database tables:</div>
<ul dir="ltr">
<li>
BPM DB table <span style="font-family: courier new,courier,monospace;">LSW_EM_INSTANCE</span> containing the event manager status and heartbeat timestamp</li>
<li>
BPM DB table <span style="font-family: courier new,courier,monospace;">LSW_EM_TASK</span> containing all event manager jobs</li>
</ul>
<div dir="ltr">
The following screen shot shows the event manager status in the Process Admin Console:</div>
<div dir="ltr">
Status:</div>
<ul dir="ltr">
<li>
<span style="color: lime;">Green </span>- running</li>
<li>
<span style="color: red;">Red </span>- stopped, not running</li>
</ul>
<div dir="ltr">
<br />
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_4.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_4.png" style="display: block; float: left; margin: 1em 0pt 0pt 0pt; width: 50%;" /></a></div>
<div dir="ltr">
Each cluster member will have an event manager. If you have a
multi-cluster topology, it is only present in the AppTarget servers. In
this example, it is a single node cluster and, therefore, only one event
manager instance is listed. In a clustered environment, there is an
entry for every cluster member as a new row in the table. To process
work, the event manager needs to be in the running state (green) and the
time stamp listed in the Connect expiration field needs to be ahead of
the current time.<br />
<br />
A successful event manager start up is reflected in the server's <span style="font-family: Courier New;">SystemOut.log</span>
file with messages that show the start of the heartbeat thread and
acquisition of the synchronous queues. You can grep the log for messages
of the <span style="font-family: Courier New;">wle_scheduler</span> group as shown here:<br />
<br />
<span style="font-family: courier new,courier,monospace;"><span style="background-color: lightgrey;">wle_scheduler I CWLLG0561I: Heartbeat thread starting...</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0615I: Heartbeat resumed.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0597I: Trying to acquire synchronous queue SYNC_QUEUE_1.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0581I: Acquired synchronous queue SYNC_QUEUE_1.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0597I: Trying to acquire synchronous queue SYNC_QUEUE_2.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0581I: Acquired synchronous queue SYNC_QUEUE_2.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0597I: Trying to acquire synchronous queue SYNC_QUEUE_3.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0581I: Acquired synchronous queue SYNC_QUEUE_3.</span></span></div>
<div dir="ltr">
In the <span style="font-family: Courier New;">LSW_EM_INSTANCE</span> table, the <span style="font-family: Courier New;">STATUS </span>column shows a value of '1' for an active event manager and '2' if it has been paused.</div>
<div dir="ltr">
With the Process Admin Console, the event manager can be paused and
resumed by clicking the applicable button. Make sure to click <strong>Refresh</strong> to update the panel so that the current status is read from the <span style="font-family: Courier New;">LSW_EM_INSTANCE</span> table.<br />
<br />
<u>Reasons why the event manager might be inactive</u>:</div>
<div dir="ltr">
a) The event manager configuration is corrupted by an incorrect attribute in the custom property file (for example: <span style="font-family: courier new,courier,monospace;">100Custom.xml</span>)<br />
If you tried to overwrite event manager parameters by using a <span style="font-family: courier new,courier,monospace;">100Custom.xml</span>
file and accidentally used the 'replace' attribute for merge instead of
'mergeChildren' as show below, the required parameters from <span style="font-family: courier new,courier,monospace;">80Eventmanager.xml</span> are not honored:<br />
<br />
Incorrect definition sample:</div>
<div dir="ltr">
<span style="font-family: courier new,courier,monospace;"><properties><br />
<event-manager><br />
<scheduler color:="" merge="<span style=" red="">replace</scheduler></event-manager></properties></span>"><br />
<start-paused merg="" wbr="">e="r<wbr></wbr>epla<wbr></wbr>ce"><wbr></wbr>true<wbr></wbr></start-paused></div>
</div>
</td></tr>
</tbody></table>
</div>
art-<wbr></wbr>paus<wbr></wbr>ed><br />
<br />
<br />
<div dir="ltr">
<br />
Correct definition sample:<br />
<br />
<span style="font-family: courier new,courier,monospace;"><properties><br />
<event-manager><br />
<scheduler merg="" wbr="">e=<wbr></wbr>"<span style="color: #33cc00;">mer<wbr></wbr>geCh<wbr></wbr>ildr<wbr></wbr>e<wbr></wbr>n</span>"><br />
<start-paused merg="" wbr="">e="r<wbr></wbr>epla<wbr></wbr>ce"><wbr></wbr>true<wbr></wbr></start-paused></scheduler></event-manager></properties></span></div>
art-<wbr></wbr>paus<wbr></wbr>ed><br />
<br />
<br />
<br />
<br />
With the incorrect definition sample, the Process Admin Console shows a Null<wbr></wbr>Poin<wbr></wbr>terE<wbr></wbr>xcep<wbr></wbr>tion when you click <strong>Event Manager > Monitor</strong> as shown in the following screen shot:
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_7.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_7.png" style="display: block; float: left; margin: 1em 0pt 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
To solve that problem, correct the <span style="font-family: courier new,courier,monospace;">100Custom.xml</span> file and restart the server. After the restart, make sure that the <span style="font-family: courier new,courier,monospace;">Team<wbr></wbr>Work<wbr></wbr>sCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.r<wbr></wbr>unni<wbr></wbr>ng.x<wbr></wbr>m<wbr></wbr>l</span> file contains the complete <span style="font-family: courier new,courier,monospace;"><event-manager></event-manager></span> section and the event manager is shown as active in the Process Admin Console.<br />
<br />
<span style="font-weight: bold;">Note</span>: There is a list of sample
configuration files to adapt the IBM Business Process Manager
configuration, including some samples for the event manager. You can
access these files <a href="https://hub.jazz.net/project/mfilley/bpm-100CustomXML/overview#https://hub.jazz.net/gerrit/plugins/gerritfs/list/mfilley%252Fbpm-100CustomXML/refs%252Fheads%252Fmaster/XML" target="_blank">here</a>.</div>
<div dir="ltr">
</div>
<div dir="ltr">
b) The event manager might have been paused manually by using the
Process Admin Console. In this case, you can resume its activity as
mentioned previously. Even when it is paused, the connect expiration
time stamp is renewed every 15s (default).<br />
</div>
<div dir="ltr">
c) The event manager is configured to be <span style="font-weight: bold;">started as "paused</span>"<br />
The <span style="font-family: Courier New;">80EventManager.xml </span>BPM server configuration file contains a parameter called <span style="font-family: courier new,courier,monospace;"><start-paused></start-paused></span>, which is set to <span style="font-family: Courier New;">false</span>, by default. If it is configured to <span style="font-family: courier new,courier,monospace;">true</span> by overwriting the parameter with a <span style="font-family: Courier New;">100Custom.xml</span>
file, then the heartbeat thread to set the event manager 'connect
expiration' is active, but the event manager will not process any work.</div>
<div dir="ltr">
To check for that situation, look at your <span style="font-family: courier new,courier,monospace;">Team<wbr></wbr>Work<wbr></wbr>sCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.r<wbr></wbr>unni<wbr></wbr>ng.x<wbr></wbr>m<wbr></wbr>l</span> BPM server configuration file. Search in that file for the <span style="font-family: courier new,courier,monospace;"><start-paused></start-paused></span> string in the <span style="font-family: courier new,courier,monospace;"><event-manager></event-manager></span> section. If that parameter is set to <span style="font-family: Courier New;">true</span>, this setting explains why the event manager did not become active after server start up.<br />
<br />
In case the event manager is configured to be started as "paused," the <span style="font-family: courier new,courier,monospace;">SystemOut.log</span>
file will only contain the following messages during start up. They
show that the heartbeat thread started and continuously updates the
connect expiration time stamp, but the event manager did not acquire the
synchronous queues.<br />
<br />
<span style="font-family: courier new,courier,monospace;"><span style="background-color: lightgrey;">wle_scheduler I CWLLG0570I: Heartbeat paused.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0561I: Heartbeat thread starting...</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0615I: Heartbeat resumed.</span></span><br />
<br />
To resume the event manager, use the Process Admin Console as shown
previously. A successful resume action will result in the following
messages in the <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file:<br />
<br />
<span style="font-family: courier new,courier,monospace;"><span style="background-color: lightgrey;">wle_scheduler I CWLLG0615I: Heartbeat resumed.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0597I: Trying to acquire synchronous queue SYNC_QUEUE_1.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0581I: Acquired synchronous queue SYNC_QUEUE_1.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0597I: Trying to acquire synchronous queue SYNC_QUEUE_2.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0581I: Acquired synchronous queue SYNC_QUEUE_2.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0597I: Trying to acquire synchronous queue SYNC_QUEUE_3.</span><br />
<span style="background-color: lightgrey;">wle_scheduler I CWLLG0581I: Acquired synchronous queue SYNC_QUEUE_3.</span></span><br />
<br />
Keep in mind that the <span style="font-family: courier new,courier,monospace;"><start-paused></start-paused></span> parameter in the event manager configuration needs to be set back to <span style="font-family: courier new,courier,monospace;">false</span>. Otherwise, it will still be inactive after the next server restart.<br />
<br />
d) Event manager is <span style="font-weight: bold;">not enabled</span> in the configuration.<br />
The <span style="font-family: courier new,courier,monospace;">80EventManager.xml</span> BPM server configuration file contains a parameter called <span style="font-family: courier new,courier,monospace;">enabled</span>, which is set to <span style="font-family: courier new,courier,monospace;">true</span>, by default.</div>
<div dir="ltr">
To check for that situation, look at your <span style="font-family: Courier New;">Team<wbr></wbr>Work<wbr></wbr>sCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.r<wbr></wbr>unni<wbr></wbr>ng.x<wbr></wbr>m<wbr></wbr>l</span> BPM server configuration file. Search in that file for the <span style="font-family: courier new,courier,monospace;"><enabled></enabled></span> parameter in the <span style="font-family: courier new,courier,monospace;"><event-manager></event-manager></span> section . If that parameter is set to <span style="font-family: Courier New;">false</span>,
then the event manager will not be active after the server start up. In
contrast to being started as "paused," it will show none of the
previous messages in the <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file and the connect expiration time stamp will not be updated!<br />
<br />
You cannot resume the event manager through the Process Admin Console
in such a case. However, you need to change your configuration to set
the <span style="font-family: courier new,courier,monospace;">enabled</span> parameter back to <span style="font-family: Courier New;">true</span> and restart your server.<br />
<br />
e) Blackout period is active<br />
Administrators establish blackout periods to specify times when events
cannot be scheduled. For example, you might schedule a blackout period
due to a holiday or for regular system maintenance windows. The event
manager takes blackout periods into account when scheduling and queuing
events, event subscriptions, and undercover agents (UCAs). The following
screenshot shows if and which blackout periods are configured. This
data is persisted in the <span style="font-family: courier new,courier,monospace;">LSW_<wbr></wbr>BLAC<wbr></wbr>KOUT<wbr></wbr>_CAL<wbr></wbr>ENDA<wbr></wbr>R</span> DB table.<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_5.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_5.png" style="display: block; float: left; margin: 1em 0pt 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
</div>
<div dir="ltr">
If a blackout period is active, the event manager monitor in the Process Admin Console lists a scheduled job named <span style="font-weight: bold;">End blackout period</span>
where the scheduled time column shows when the blackout period ends.
Event manager jobs created during the blackout period show a job status
of <strong>Blacked out</strong>.<br />
<br />
The following screenshot shows that scenario:<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_6.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_6.png" style="display: block; float: left; margin: 1em 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
The <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file does not show any applicable messages when the blackout period is entered.<br />
<br />
<br />
<br />
f) Exceptions during the event manager start up<br />
If the event manager is not running after start up, but was not configured as paused or disabled, the <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file might show a couple of exceptions.<br />
<br />
There could be various reasons why the event manager failed during
startup or resume. Gather the documents as mentioned in the event
manager mustgather <a href="http://www.ibm.com/support/docview.wss?uid=swg21679625">technote</a>.</div>
<div dir="ltr">
The following section shows a few examples:</div>
<ul dir="ltr">
<li>
Event manager configuration is broken<br />
<br />
This problem is caused by an incomplete fix pack installation where
required post-installation steps to upgrade the profile were not
executed.<br />
<br />
The <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file will have exceptions that have the following signatures.<br />
<br />
<span style="font-family: courier new,courier,monospace;">CWLLG0144E: Exception in init(): schedule cannot be started. com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.cor<wbr></wbr>e.Te<wbr></wbr>amWo<wbr></wbr>rksE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>: Message: SCHE<wbr></wbr>DULE<wbr></wbr>R_CO<wbr></wbr>NFIG<wbr></wbr>_BRO<wbr></wbr>KEN Arguments: load<wbr></wbr>er-a<wbr></wbr>cqui<wbr></wbr>re-s<wbr></wbr>ync-<wbr></wbr>queu<wbr></wbr>e-qu<wbr></wbr>ery: com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.cor<wbr></wbr>e.co<wbr></wbr>nfig<wbr></wbr>.eve<wbr></wbr>ntma<wbr></wbr>nage<wbr></wbr>r.Sc<wbr></wbr>hedu<wbr></wbr>lerC<wbr></wbr>onfi<wbr></wbr>g checkAndReplace Message: SCHE<wbr></wbr>DULE<wbr></wbr>R_CO<wbr></wbr>NFIG<wbr></wbr>_REP<wbr></wbr>LACE<wbr></wbr>MENT<wbr></wbr>_PAR<wbr></wbr>AMET<wbr></wbr>ER_N<wbr></wbr>OT_F<wbr></wbr>OUND Arguments: %executing% load<wbr></wbr>er-a<wbr></wbr>cqui<wbr></wbr>re-t<wbr></wbr>asks<wbr></wbr>-que<wbr></wbr>ry UPDATE LSW_EM_TASK SET TASK_STATUS = %acquired%, TASK_OWNER = ? WHERE TASK_ID IN (%task-ids%)</span><br />
<br />
To fix this problem, review the documented post-installation (interim fix/fix pack) steps and rerun the missing steps.<br />
</li>
<li>
Event manager start up problem due to a problem in the BPM embedded
document store (applies to IBM Business Process Manager V8.5 and later))<br />
<br />
<strong>Important note: </strong>If the embedded BPM document store
cannot be started due to configuration or authorization problems, the
event manager will also not start!<br />
<br />
The <span style="font-family: courier new,courier,monospace;">SystemOut.log</span>
file will not show any of the event manager-related start up messages
as shown previously, but you will see, for example, the following
exception, which is related to the embedded document store:<br />
<br />
<div dir="ltr">
<span style="font-family: courier new,courier,monospace;">CWTDS1100E: An error occurred while validating or creating the default configuration for the IBM BPM document store.<br />
<wbr></wbr> <wbr></wbr> <wbr></wbr> <wbr></wbr> <wbr></wbr> <wbr></wbr> <wbr></wbr> com.<wbr></wbr>ibm.<wbr></wbr>bpm.<wbr></wbr>embe<wbr></wbr>dded<wbr></wbr>ecm.<wbr></wbr>exce<wbr></wbr>ptio<wbr></wbr>n.Us<wbr></wbr>erMi<wbr></wbr>sses<wbr></wbr>Writ<wbr></wbr>ePer<wbr></wbr>miss<wbr></wbr>ionE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>:
CWTDS0022E: The configuration was changed in a way that the technical
user 'deadmin' of the IBM BPM document store fails to change the object
'Domain'.<br />
Explanation: The technical user defined in the BPM role type 'Emb<wbr></wbr>edde<wbr></wbr>dECM<wbr></wbr>Tech<wbr></wbr>nica<wbr></wbr>lUse<wbr></wbr>r' is not permitted to perform changes on an object.<br />
Action: Revert the recent configuration changes. Ensure that the user defined by the BPM role type 'Emb<wbr></wbr>edde<wbr></wbr>dECM<wbr></wbr>Tech<wbr></wbr>nica<wbr></wbr>lUse<wbr></wbr>r' has access to the object. Verify this using the admin task 'get<wbr></wbr>Docu<wbr></wbr>ment<wbr></wbr>Stor<wbr></wbr>eSta<wbr></wbr>tus'<wbr></wbr>.<br />
at com.<wbr></wbr>ibm.<wbr></wbr>bpm.<wbr></wbr>embe<wbr></wbr>dded<wbr></wbr>ecm.<wbr></wbr>inte<wbr></wbr>rnal<wbr></wbr>.Dom<wbr></wbr>ainC<wbr></wbr>onfi<wbr></wbr>gura<wbr></wbr>tion<wbr></wbr>$2.r<wbr></wbr>un(D<wbr></wbr>omai<wbr></wbr>nCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.j<wbr></wbr>ava:<wbr></wbr>264)<br />
at com.<wbr></wbr>ibm.<wbr></wbr>bpm.<wbr></wbr>embe<wbr></wbr>dded<wbr></wbr>ecm.<wbr></wbr>inte<wbr></wbr>rnal<wbr></wbr>.Dom<wbr></wbr>ainC<wbr></wbr>onfi<wbr></wbr>gura<wbr></wbr>tion<wbr></wbr>$2.r<wbr></wbr>un(D<wbr></wbr>omai<wbr></wbr>nCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.j<wbr></wbr>ava:<wbr></wbr>207)<br />
at java<wbr></wbr>.sec<wbr></wbr>urit<wbr></wbr>y.Ac<wbr></wbr>cess<wbr></wbr>Cont<wbr></wbr>roll<wbr></wbr>er.d<wbr></wbr>oPri<wbr></wbr>vile<wbr></wbr>ged(<wbr></wbr>Acce<wbr></wbr>ssCo<wbr></wbr>ntro<wbr></wbr>ller<wbr></wbr>.jav<wbr></wbr>a:36<wbr></wbr>2<wbr></wbr>)</span><br />
<br />
To fix that problem, the configuration error with the document store must be resolved as shown here: <a href="http://www.ibm.com/support/docview.wss?uid=swg21673250">http<wbr></wbr>://w<wbr></wbr>ww.i<wbr></wbr>bm.c<wbr></wbr>om/s<wbr></wbr>uppo<wbr></wbr>rt/d<wbr></wbr>ocvi<wbr></wbr>ew.w<wbr></wbr>ss?u<wbr></wbr>id=s<wbr></wbr>wg21<wbr></wbr>6732<wbr></wbr>5<wbr></wbr>0</a></div>
</li>
</ul>
<h2 dir="ltr">
A.2 - Event manager is active but it is not processing any jobs</h2>
<div dir="ltr">
When the event manager is active (Process Admin Console shows it as
active and connect expiration is not outdated) but is not processing any
tasks, this could be caused by:</div>
<ul dir="ltr">
<li>
Event manager configuration file '<span style="font-family: Courier New;">80E<wbr></wbr>vent<wbr></wbr>Mana<wbr></wbr>ger.<wbr></wbr>xm<wbr></wbr>l</span>', respectively the global BPM server configuration file <span style="font-family: Courier New;">Team<wbr></wbr>Work<wbr></wbr>sCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.r<wbr></wbr>unni<wbr></wbr>ng.x<wbr></wbr>ml, </span>which
contains all of the parameters at run time. The following technote will
show where to find these files and how they relate: <a href="http://www.ibm.com/support/docview.wss?uid=swg21439614">http<wbr></wbr>://w<wbr></wbr>ww.i<wbr></wbr>bm.c<wbr></wbr>om/s<wbr></wbr>uppo<wbr></wbr>rt/d<wbr></wbr>ocvi<wbr></wbr>ew.w<wbr></wbr>ss?u<wbr></wbr>id=s<wbr></wbr>wg21<wbr></wbr>4396<wbr></wbr>1<wbr></wbr>4</a><br />
</li>
<li>
Event manager blocked due to orphaned transactions in Microsoft SQLServer holding locks on its tables:<br />
In case you use Microsoft SQLServer as the process server database,
the reason for that could be so called 'orphaned transactions' in the DB
system. The following TechNote will show how to resolve such a problem:
<a href="http://www.ibm.com/support/docview.wss?uid=swg21633692">http<wbr></wbr>://w<wbr></wbr>ww.i<wbr></wbr>bm.c<wbr></wbr>om/s<wbr></wbr>uppo<wbr></wbr>rt/d<wbr></wbr>ocvi<wbr></wbr>ew.w<wbr></wbr>ss?u<wbr></wbr>id=s<wbr></wbr>wg21<wbr></wbr>6336<wbr></wbr>9<wbr></wbr>2</a><br />
</li>
<li>
System time or timezone of BPM and remote DB system which is hosting
the BPM DB is out of sync:To fix that, please make sure, that the system
time on the BPM and the DB node are in sync. It is a best practice to
have both on the same network time protocol server (NTP).</li>
</ul>
<div dir="ltr">
</div>
<h2 dir="ltr">
B - Event manager shows jobs with a scheduled date of 2099</h2>
<div dir="ltr">
If the execution of an event manager job fails, it is retried a couple of times as defined by the <span style="font-family: courier new,courier,monospace;">re-execute-limit</span> configuration parameter (default = 5) in the <span style="font-family: courier new,courier,monospace;">80EventManager.xml</span> file. The behavior in such a case has gone through a fundamental change with APAR JR47860:</div>
<ul dir="ltr">
<li>
Pre JR47860 behaviour: when the <span style="font-family: courier new,courier,monospace;">re-execute-limit</span> is reached, the according event manager job is discarded! There is no way to re-execute this job.</li>
<li>
Post JR47860 behaviour: when the <span style="font-family: courier new,courier,monospace;">re-execute-limit</span> is reached, the event manager job is rescheduled for 2099.</li>
</ul>
<div dir="ltr">
The interim fix for the APAR also provides a new administrative command called <span style="font-family: courier new,courier,monospace;">BPMR<wbr></wbr>epla<wbr></wbr>yOnH<wbr></wbr>oldE<wbr></wbr>MTas<wbr></wbr>k<wbr></wbr>s</span>, which was introduced to resubmit this failed job. Check the <a href="http://www.ibm.com/support/docview.wss?uid=swg1JR47860" target="_blank">APAR description</a> for more details or the see the <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.5/com.ibm.wbpm.ref.doc/topics/rref_bpmreplayonholdemtasks.html" target="_blank">prod<wbr></wbr>uct <wbr></wbr>docu<wbr></wbr>ment<wbr></wbr>atio<wbr></wbr>n in<wbr></wbr>form<wbr></wbr>atio<wbr></wbr>n</a> in the IBM Knowledge Center.<br />
<br />
<span style="font-weight: bold;">Important note</span>: Before
resubmitting an event manager job, it is important to eliminate the root
cause! Otherwise, you might run into the same problem again. To find
the root cause, check your <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file for message <span style="font-family: courier new,courier,monospace;">CWLLG0197W</span>.
This message indicates, that the event manager has tried to execute a
task for 5 times but it failed. Note the thread ID and walk back in the
thread history within the <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file, which will most probably tell you which exception the execution of this event manager task failed.<br />
<br />
<span style="text-decoration: underline;">Example for an event manager task to execute an UCA:</span><br />
1. Search the <span style="font-family: courier new,courier,monospace;">SystemOut.log</span> file for <span style="font-family: courier new,courier,monospace;">CWLLG0197W </span>shows the following line - note thread ID <span style="color: blue;"><span style="font-family: courier new,courier,monospace;">00011779</span></span>.<br />
<span style="font-family: courier new,courier,monospace;">[2/4/14 5:54:18:395 GMT] <span style="color: mediumblue;">00011779 </span>wle_ucaexcept E <strong>CWLLG0197W</strong>: Task Notify BPD 202738 of notification failed 5 times. The task will not be re-executed.</span><br />
<br />
The <span style="font-weight: bold;">previous </span>messages for thread <span style="color: mediumblue;"><span style="font-family: courier new,courier,monospace;">00011779 </span></span>will show this error message:<br />
<span style="font-family: courier new,courier,monospace;">[2/4/14 5:54:18:337 GMT] <span style="color: mediumblue;">00011779 </span>wle_ucaexcept E CWLLG0181E: An exception occurred during execution of task 4,425,203. Error: Prep<wbr></wbr>ared<wbr></wbr>Stat<wbr></wbr>emen<wbr></wbr>tCal<wbr></wbr>lbac<wbr></wbr>k; SQL [update LSW_<wbr></wbr>BPD_<wbr></wbr>INST<wbr></wbr>ANCE<wbr></wbr>_DAT<wbr></wbr>A
set DATA = ? where BPD_INSTANCE_ID = ?]; Error for batch element #1:
DB2 SQL Error: SQLCODE=-1476, SQLSTATE=40506, SQLERRMC=-968,
DRIVER=3.61.65; nested exception is com.<wbr></wbr>ibm.<wbr></wbr>db2.<wbr></wbr>jcc.<wbr></wbr>am.S<wbr></wbr>qlTr<wbr></wbr>ansa<wbr></wbr>ctio<wbr></wbr>nRol<wbr></wbr>lbac<wbr></wbr>kExc<wbr></wbr>epti<wbr></wbr>on: Error for batch element #1: DB2 SQL Error: SQLCODE=-1476, SQLSTATE=40506, SQLERRMC=-968, DRIVER=3.61.65<br />
com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.cor<wbr></wbr>e.Te<wbr></wbr>amWo<wbr></wbr>rksE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>: Prep<wbr></wbr>ared<wbr></wbr>Stat<wbr></wbr>emen<wbr></wbr>tCal<wbr></wbr>lbac<wbr></wbr>k; SQL [update LSW_<wbr></wbr>BPD_<wbr></wbr>INST<wbr></wbr>ANCE<wbr></wbr>_DAT<wbr></wbr>A
set DATA = ? where BPD_INSTANCE_ID = ?]; Error for batch
element #1: DB2 SQL Error: SQLCODE=-1476, SQLSTATE=40506, SQLERRMC=-968,
DRIVER=3.61.65; nested exception is com.<wbr></wbr>ibm.<wbr></wbr>db2.<wbr></wbr>jcc.<wbr></wbr>am.S<wbr></wbr>qlTr<wbr></wbr>ansa<wbr></wbr>ctio<wbr></wbr>nRol<wbr></wbr>lbac<wbr></wbr>kExc<wbr></wbr>epti<wbr></wbr>on: Error for batch element #1: DB2 SQL Error: SQLCODE=-1476, SQLSTATE=40506, SQLERRMC=-968, DRIVER=3.61.65<br />
at com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.cor<wbr></wbr>e.Te<wbr></wbr>amWo<wbr></wbr>rksE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>.asT<wbr></wbr>eamW<wbr></wbr>orks<wbr></wbr>Exce<wbr></wbr>ptio<wbr></wbr>n(Te<wbr></wbr>amWo<wbr></wbr>rksE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>.jav<wbr></wbr>a:13<wbr></wbr>0 ...</span><br />
<br />
In this special case, the execution of the event manager task failed due to an SQL exception with <span style="font-family: courier new,courier,monospace;">sqlcode -968,</span> which means that the database filesystem is out of space.<br />
<br />
2. Fix the problem that caused the exception. In the previous example,
resolve the out-of-space condition in the database filesystem.<br />
<br />
3. Resubmit the applicable event manager task by using the <span style="font-family: courier new,courier,monospace;">BPMR<wbr></wbr>epla<wbr></wbr>yOnH<wbr></wbr>oldE<wbr></wbr>MTas<wbr></wbr>k<wbr></wbr>s</span> command.<br />
</div>
<h2 dir="ltr">
<div class="ibm-anchor-pointer">
<a href="https://www.blogger.com/null" name="CDEF"></a></div>
C,D,E,F - Event manager is active, but throughput problems exist</h2>
<div dir="ltr">
Throughput problems might be caused by a wide range of reasons. In
terms of the event manager, the potential throughput is limited by the
capacity of its queues.</div>
<div dir="ltr">
<br />
For a comprehensive summary of all event manager-related configuration parameters including the different queues, check this <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.5/com.ibm.wbpm.admin.doc/topics/event_manager_settings.html" target="_blank">prod<wbr></wbr>uct <wbr></wbr>docu<wbr></wbr>ment<wbr></wbr>atio<wbr></wbr>n</a> in the IBM Knowledge Center.</div>
<div dir="ltr">
To analyze and fix this problem, you need to understand the involved
configuration parameters and how to monitor and adapt them.</div>
<div dir="ltr">
a) Find out the event manager queue capacities<br />
The event manager maintains a number of internal queues. The capacity
of each queue is limited by a configuration parameter that is specified
in the <span style="font-family: courier new,courier,monospace;">80EventManager.xml </span>configuration
file and limits the number of jobs that can be in the execution state
simultaneously. The following table shows the different queues, the
applicable configuration parameter, and the default capacity (as of IBM
Business Process Manager 8.5.5):</div>
<table border="1" dir="ltr" style="width: 639px;">
<tbody>
<tr>
<th style="text-align: left; width: 165px;">
<strong>Event Manager Queue</strong></th>
<th style="text-align: left; width: 334px;">
<strong>Configuration Parameter in 80EventManager.xml</strong></th>
<th style="text-align: center; width: 115px;">
<strong>Default capacity</strong></th>
</tr>
<tr>
<td style="width: 165px;">
Async Queue(UCA)</td>
<td style="width: 334px;">
asyn<wbr></wbr>c-qu<wbr></wbr>eue-<wbr></wbr>capa<wbr></wbr>cit<wbr></wbr>y</td>
<th style="text-align: center; width: 115px;">
10</th>
</tr>
<tr>
<td style="width: 165px;">
Sync Queue (UCA)</td>
<td style="width: 334px;">
sync-queue-capacity</td>
<th style="text-align: center; width: 115px;">
10</th>
</tr>
<tr>
<td style="text-align: left; vertical-align: top; width: 165px;">
BPD Async Queue<br />
- BPD Notification<br />
- system lane tasks<br />
- timer execution<br />
</td>
<td style="vertical-align: top; width: 334px;">
bpd-queue-capacity</td>
<th style="text-align: center; width: 115px;">
40</th>
</tr>
<tr>
<td style="width: 165px;">
System Queue</td>
<td style="width: 334px;">
syst<wbr></wbr>em-q<wbr></wbr>ueue<wbr></wbr>-cap<wbr></wbr>acit<wbr></wbr>y</td>
<th style="text-align: center; width: 115px;">
10</th>
</tr>
</tbody>
</table>
<div dir="ltr">
The default values could have been overwritten by using a <span style="font-family: Courier New;">100Custom.xml</span> file. Then, find out which values are currently being used and have a look into<span style="font-family: Courier New;"> Team<wbr></wbr>Work<wbr></wbr>sCon<wbr></wbr>figu<wbr></wbr>rati<wbr></wbr>on.r<wbr></wbr>unni<wbr></wbr>ng.x<wbr></wbr>m<wbr></wbr>l</span> file.</div>
<div dir="ltr">
b) Determine the event manager queue usage and adapt the event manager queue sizes<br />
To monitor the number of executing jobs on each event manager queue,
use the Process Admin Console event manager monitor and count the number
of rows for each 'Job Queue' with job status 'Executing'. Alternatively
you could use this SQL statement:<br />
<br />
<span style="font-family: courier new,courier,monospace;">SELECT COUNT(*) as EXECUTION_COUNT,<br />
case QUEUE_ID<br />
when '-100' then 'UCA Async Queue'<br />
when '-101' then 'BPD Async Queue'<br />
when '-102' then 'EM System Queue'<br />
else 'UCA Sync Queue' END as QUEUE<br />
from LSW_EM_TASK where TASK_STATUS = 3 group by QUEUE_ID WITH UR;</span><br />
<br />
If the number of executing event manager tasks for a queue has reached
the capacity limit and there are more tasks on that queue waiting to be
executed (time to be scheduled has already passed), then there might be a
performance problem or the queue capacity is too low for the workload
and needs to be increased.<br />
<br />
The BPD async queue is of special interest because its capacity is
shared between the execution of system lane tasks, timer executions, and
BPD notifications. If the complete capacity is already occupied by
currently executing, long-running system lane tasks, no other job can be
executed on that queue. The screen shot shown previously for Symptom C
is an example from a system with <span style="font-family: Courier New;">bpd-queue-capacity</span>
set to 5 and the complete capacity is occupied by five executing system
tasks. To eliminate a problem related to long running system tasks:</div>
<ol dir="ltr">
<li>
Find out why the system lane tasks have such a long execution time and
try to fix that. There might be various reasons like back-end response
time, excessive JVM garbage collection, CPU and memory constraints,
network delays, and so on.<br />
</li>
<li>
If the system lane tasks are expected to be long-running, think about
splitting them into smaller pieces or increase the capacity of the BPD
async queue as shown in the next paragraph.</li>
</ol>
<div dir="ltr">
<br />
c) Increase the event manager queue capacities<br />
<br />
To increase the event manager queue sizes, specify the applicable parameter as shown in the previous table in a <span style="font-family: courier new,courier,monospace;">100Custom.xml</span> file. For example:<br />
<br />
<span style="font-family: courier new,courier,monospace;"><properties><br />
<event-manager merg="" wbr="">e="m<wbr></wbr>erge<wbr></wbr>Chil<wbr></wbr>dren<wbr></wbr>"><br />
<scheduler merg="" wbr="">e="m<wbr></wbr>erge<wbr></wbr>Chil<wbr></wbr>dren<wbr></wbr>"><br />
<bpd-queue-capacity merg="" wbr="">e="r<wbr></wbr>epla<wbr></wbr>ce"><wbr></wbr>40</<wbr></wbr>bpd-<wbr></wbr>queu<wbr></wbr>e-ca<wbr></wbr>paci<wbr></wbr>ty><br />
<asy wbr="">nc-q<wbr></wbr>ueue<wbr></wbr>-cap<wbr></wbr>acit<wbr></wbr>y merg<wbr></wbr>e="r<wbr></wbr>epla<wbr></wbr>ce"><wbr></wbr>10</<wbr></wbr>bpd-<wbr></wbr>queu<wbr></wbr>e-ca<wbr></wbr>paci<wbr></wbr>ty><br />
<syn wbr="">c-qu<wbr></wbr>eue-<wbr></wbr>capa<wbr></wbr>city merg<wbr></wbr>e="r<wbr></wbr>epla<wbr></wbr>ce"><wbr></wbr>10</<wbr></wbr>bpd-<wbr></wbr>queu<wbr></wbr>e-ca<wbr></wbr>paci<wbr></wbr>ty><br />
<sys wbr="">tem-<wbr></wbr>queu<wbr></wbr>e-ca<wbr></wbr>paci<wbr></wbr>ty merg<wbr></wbr>e="r<wbr></wbr>epla<wbr></wbr>ce"><wbr></wbr>10</<wbr></wbr>bpd-<wbr></wbr>queu<wbr></wbr>e-ca<wbr></wbr>paci<wbr></wbr>ty><br />
</sys></syn></asy></bpd-queue-capacity></scheduler><br />
</event-manager><br />
</properties></span><br />
<br />
<br />
<strong>Important</strong>: When increasing the capacity of event
manager queues, keep in mind that, besides using additional threads in
your JVM, also additional JDBC connections will be needed. Thus, the
JDBC data source (<span style="font-family: Courier New;">jdbc/TeamworksDB</span>) connection pool also needs to be increased.<br />
As a general rule, increase the number of database connections by two
times the value by which you increased the queue capacity. Apart from
database connections, also more JVM heap size is needed.<br />
<br />
If there is a mismatch between the queue capacities and the number of
available connections for the data source, IBM Business Process Manager
tries to scale down the queue size. That issue will be indicated in the
log by the warning messages shown under Symptom F.</div>
<div dir="ltr">
<br />
d) Understand the event manager queue capacity and the related thread pool size<br />
The event manager configuration also shows a parameter named <span style="font-family: courier new,courier,monospace;">max-<wbr></wbr>thre<wbr></wbr>ad-p<wbr></wbr>ool-<wbr></wbr>siz<wbr></wbr>e</span>. By default, the value for the <span style="font-family: courier new,courier,monospace;">max-<wbr></wbr>thre<wbr></wbr>ad-p<wbr></wbr>ool-<wbr></wbr>siz<wbr></wbr>e</span>
parameter is the sum of the individual queue capacities (70). It is
important to understand that its size does not limit the overall number
of event manager tasks that can be executed simultaneously. So even if
you set <span style="font-family: courier new,courier,monospace;">max-<wbr></wbr>thre<wbr></wbr>ad-p<wbr></wbr>ool-<wbr></wbr>siz<wbr></wbr>e</span> to 5 and <span style="font-family: courier new,courier,monospace;">bpd-queue-capacity</span>
to 10, you will be able to execute 10 system lane tasks simultaneously.
It is possible because the threadpool is defined as 'growable', which
means it temporarily allows the number of threads to exceed the defined
limit, but such a thread would be discarded directly after it finished
and not be returned to the pool. Therefore, these threads are a bit more
expensive.<br />
<br />
Starting in IBM Business Process Manager 8.5.5.0, the event manager no
longer uses its own internal thread pool. Instead, it uses a WebSphere
Application Server work manager thread pool. This function is configured
by these two event manager parameters:</div>
<ul dir="ltr">
<li>
<span style="font-family: courier new,courier,monospace;"><use wbr="">-was<wbr></wbr>-wor<wbr></wbr>k-ma<wbr></wbr>nage<wbr></wbr>r>tr<wbr></wbr>ue</<wbr></wbr>use-<wbr></wbr>was-<wbr></wbr>work<wbr></wbr>-man<wbr></wbr>ager<wbr></wbr>></use></span></li>
<li>
<span style="font-family: courier new,courier,monospace;"><was wbr="">-wor<wbr></wbr>k-ma<wbr></wbr>nage<wbr></wbr>r>wm<wbr></wbr>/BPM<wbr></wbr>Even<wbr></wbr>tMan<wbr></wbr>ager<wbr></wbr>Work<wbr></wbr>Mana<wbr></wbr>ger<<wbr></wbr>/was<wbr></wbr>-wor<wbr></wbr>k-ma<wbr></wbr>nage<wbr></wbr>r<wbr></wbr>></was></span></li>
</ul>
<div dir="ltr">
</div>
<div dir="ltr">
<br />
When you use the WebSphere Application Server work manager thread pool,
the maximum pool size is configured in the WebSphere Application Server
Administrative Console as shown in the following screen shot:</div>
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_8.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_8.png" style="display: block; float: left; margin: 1em 0pt 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
In a default configuration, the work manager thread pool for the event
manager is defined with a maximum of 70 threads, but also as 'growable'.
When sizing the work manager thread pool for the event manager, also
make sure that its size is at least equal to the sum of queue
capacities.</div>
<div dir="ltr">
In case you modified the thread pool properties and removed the
checkbox for "Growable", then the maximum number of threads implicity
also limits the number of event manager jobs that can be executed
simultaneously! See this screen shot.</div>
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_9.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_9.png" style="display: block; float: left; margin: 1em 0pt 0pt; width: 30%;" /></a><br />
<br />
One of the advantages of using a WebSphere Application Server work
manager thread pool for the event manager is that you can use the Tivoli
Performance Viewer. It is available from the WebSphere Application
Server Administrative Console to monitor the thread pool activity. See
this screen shot:</div>
<div dir="ltr">
<a href="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_11.png" style="display: inline-block; width: 100%;" target="_blank"><img alt="image" src="https://www.ibm.com/developerworks/community/blogs/aimsupport/resource/BPM/EventManager_common_symptoms_image_11.png" style="display: block; float: left; margin: 1em 0pt 0pt 0pt; width: 100%;" /></a></div>
<div dir="ltr">
</div>
<h2 dir="ltr">
G - Event manager tasks fail when the Lomb<wbr></wbr>ardi<wbr></wbr>Even<wbr></wbr>tEmi<wbr></wbr>tter<wbr></wbr>Inpu<wbr></wbr>tQue<wbr></wbr>ue reaches the maximum threshold</h2>
<div dir="ltr">
Check the current queue depth and the threshold. You can use the
service integration bus browser, which is integrated into the WebSphere
Application Server Administrative Console, to easily check the queue
depth and the high message threshold.</div>
<div dir="ltr">
Make sure that there is a message consumer active to read from that
queue, which would typically be the Business Monitor infrastructure. If
it is not started, start the message consumer and the queue depth should
decrease.</div>
<div dir="ltr">
If the Business Monitor environment is started and consuming messages,
but the queue depth is still at the limit, then perform tuning actions
for the Business Monitor server or increase the high message threshold
for the involved queues.</div>
<div dir="ltr">
In case the Business Monitor environment is no longer existent, but you
did not revert the BPM server configuration, there are still messages
generated and put to the queue, but not consumed!</div>
<div dir="ltr">
To solve it, you need to:</div>
<ol dir="ltr">
<li>
Pause the event manager so that no new messages are created.<br />
</li>
<li>
Manually delete the message on the queue destination as shown below.<br />
</li>
<li>
Disable the event emission on the IBM Business Process Manager server according to instructions below.<br />
</li>
<li>
Restart your IBM Business Process Manager server</li>
</ol>
<div dir="ltr">
</div>
<div dir="ltr">
To delete the message from the queue destination using the WebSphere
Application Server Administrative Console, complete these steps:</div>
<ol dir="ltr">
<li>
In the SIBUS section, navigate to the queue point for the <span style="font-family: Courier New;"> Lomb<wbr></wbr>ardi<wbr></wbr>Even<wbr></wbr>tEmi<wbr></wbr>tter<wbr></wbr>Inpu<wbr></wbr>tQue<wbr></wbr>u<wbr></wbr>e</span>.<br />
</li>
<li>
Select the <strong>runtime</strong> tab.<br />
</li>
<li>
Click <strong>messages</strong>, which will display <strong>DeleteAll</strong> option to delete all of the messages on that queue.</li>
</ol>
<div dir="ltr">
The event emission for Business Monitor has been explicitly enabled by
the following entry. To disable it, set the value for parameter
'enabled' to false as shown here:</div>
<div dir="ltr">
<span style="font-family: Courier New;"><mon wbr="">itor<wbr></wbr>-eve<wbr></wbr>nt-e<wbr></wbr>miss<wbr></wbr>ion><br />
<ena wbr="">bled<wbr></wbr>><span style="font-weight: bold;">fal<wbr></wbr>s<wbr></wbr>e</span></ena></mon></span></div>
nabl<wbr></wbr>ed><br />
<j2c wbr="">-aut<wbr></wbr>hent<wbr></wbr>icat<wbr></wbr>ion-<wbr></wbr>alia<wbr></wbr>s>Mo<wbr></wbr>nito<wbr></wbr>rBus<wbr></wbr>Auth<wbr></wbr></j2c>c-au<wbr></wbr>then<wbr></wbr>tica<wbr></wbr>tion<wbr></wbr>-ali<wbr></wbr>as><br />
<mon wbr="">itor<wbr></wbr>-eve<wbr></wbr>nt-e<wbr></wbr>miss<wbr></wbr>ion<wbr></wbr>></mon>
<h1 dir="ltr">
<div class="ibm-anchor-pointer">
<a href="https://www.blogger.com/null" name="PartIII"></a></div>
Part III - Known APAR related to the event manager</h1>
<div dir="ltr">
</div>
<table align="left" border="1" dir="ltr" style="width: 100%;">
<tbody>
<tr>
<td>
<strong>Issue, error, or problem</strong></td>
<td>
<strong>Adressed in APAR</strong></td>
<th style="text-align: left;">
Fix included in</th>
</tr>
<tr>
<td>
Duplicate execution of event manager task under high load when using Oracle DB</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR49359" target="_blank">JR49359</a></td>
<td>
8.0.1.3, 8.5.5</td>
</tr>
<tr>
<td>
Change handling of failed event manager tasks and introduction of admin command to replay these failed tasks</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR47860" target="_blank">JR47860</a></td>
<td>
8.0.1.3, 8.5.5</td>
</tr>
<tr>
<td>
Posting message to event manager only starts TIP snapshot</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR45615" target="_blank">JR45615</a> and <a href="http://www.ibm.com/support/docview.wss?uid=swg1JR45616" target="_blank">JR45616</a></td>
<td>
7.5.1.2, 8.0.1.1</td>
</tr>
<tr>
<td>
Blackout calendar not respected for timer events</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR45899" target="_blank">JR45899</a></td>
<td>
8.0.1.2</td>
</tr>
<tr>
<td>
Task processing threadpool initialized with wrong user, error message CWLLG0326E or CWLLG0179E</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR46484" target="_blank">JR46484</a></td>
<td>
8.0.1.2, 7.5.1.2, 8.5.5</td>
</tr>
<tr>
<td>
Ille<wbr></wbr>galS<wbr></wbr>tate<wbr></wbr>Exce<wbr></wbr>ptio<wbr></wbr>n when starting/stopping teamworks.ear</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR47360" target="_blank">JR47360</a></td>
<td>
8.0.1.2, 8.5.0.1, 8.5.5</td>
</tr>
<tr>
<td>
Delayed communication between BPD and Service engine</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR47915" target="_blank">JR47915</a></td>
<td>
8.0.1.2, 8.5.0.1, 8.5.5</td>
</tr>
<tr>
<td>
DB2 error "bad SQL grammar" with DB2 9.5 after upgrading to 8.0.1.2 or installation of JR46470</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR48878" target="_blank">JR48878</a></td>
<td>
8.0.1.3</td>
</tr>
<tr>
<td>
com.<wbr></wbr>lomb<wbr></wbr>ardi<wbr></wbr>soft<wbr></wbr>ware<wbr></wbr>.cor<wbr></wbr>e.Te<wbr></wbr>amWo<wbr></wbr>rksE<wbr></wbr>xcep<wbr></wbr>tion<wbr></wbr>: Numeric Overflow on event manager task</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR49172" target="_blank">JR49172</a></td>
<td>
8.5.5, 8.0.1.3</td>
</tr>
<tr>
<td>
Double execution of event manager tasks in heavily loaded environments with Oracle DB</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR46470" target="_blank">JR46470</a></td>
<td>
8.0.1.2</td>
</tr>
<tr>
<td>
UCA message corrupted when larger than 1000 Bytes and using multibyte characters</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR47265" target="_blank">JR47265</a></td>
<td>
8.0.1.2, 8.5.0.1, 8.5.5</td>
</tr>
<tr>
<td>
UCA input/output parameters corrupted when containing unicode characters</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR46993" target="_blank">JR46993</a></td>
<td>
8.0.1.2, 8.5.0.1, 8.5.5</td>
</tr>
<tr>
<td>
Cleanup of duplicate UCAs entries created before JR41966 had been applied</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR47574" target="_blank">JR47574</a></td>
<td>
8.0.1.2, 8.5.0.1, 7.5.1.2, 8.5.5</td>
</tr>
<tr>
<td>
Time based UCAs disappear due to incomplete event manager task</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR50384" target="_blank">JR50384</a></td>
<td>
8.0.1.3</td>
</tr>
<tr>
<td>
Scheduling a time elapsed UCA task causes exception when Oracle DB is used</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR46249" target="_blank">JR46249</a></td>
<td>
8.0.1.2</td>
</tr>
<tr>
<td>
Time elapsed UCA not executed when schedule contains 'FIRST', 'LAST' or multiple weekdays selected</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR46122" target="_blank">JR46122</a></td>
<td>
7.5.1.2, 8.0.1.2</td>
</tr>
<tr>
<td>
Time elapsed UCAs executed at wrong time when DB and process server in different timezone</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR43099" target="_blank">JR43099</a></td>
<td>
7.5.1.1</td>
</tr>
<tr>
<td>
Time elapsed UCAs fired multiple times</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR41966" target="_blank">JR41966</a></td>
<td>
7.5.1.1</td>
</tr>
<tr>
<td>
CWLLG0181E: Error: [<me wbr="">ssag<wbr></wbr>e:co<wbr></wbr>m.lo<wbr></wbr>mbar<wbr></wbr>diso<wbr></wbr>ftwa<wbr></wbr>re.s<wbr></wbr>erve<wbr></wbr>r.sc<wbr></wbr>hedu<wbr></wbr>ler.<wbr></wbr>Task<wbr></wbr>Deat<wbr></wbr>h: Task killed by stopping scheduler at server stop or DB failover</me></td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR49523" target="_blank">JR49523</a></td>
<td>
8.0.1.3, 8.5.5</td>
</tr>
<tr>
<td>
Exception when using BPMR<wbr></wbr>epla<wbr></wbr>yOnH<wbr></wbr>oldE<wbr></wbr>MTas<wbr></wbr>ks command and DB2 on z/OS is used</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR50490" target="_blank">JR50490</a></td>
<td>
8.0.1.3</td>
</tr>
<tr>
<td>
THE PROCESS ADMIN EVENT MANAGER MONITOR PAGE IS VERY SLOW</td>
<td>
<a href="http://www.ibm.com/support/docview.wss?uid=swg1JR48052" target="_blank">JR48052</a></td>
<td>
7.5.1.2, 8.0.1.3, 8.5.5</td>
</tr>
</tbody>
</table>
<div dir="ltr">
<br /></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-73955416715911182442015-09-24T16:26:00.001+05:302015-09-24T16:26:27.592+05:30IBM BPM Scheduled UCA's<div dir="ltr" style="text-align: left;" trbidi="on">
Scheduled UCAs do not automatically run in the Process Center. For testing, click
<b>Run Now</b> in IBM Process Designer.
<br />
<br /> The next scheduled event displays on the Event Manager screen of
the Process Admin console for a Process Server. For each scheduled UCA,
it shows the last time it was executed and the next scheduled
execution. If the time does not display, go to the
<b>Installed Apps</b> tab, click the application name, then look
under the exposing section for the UCA sub section. Check and re-check
the box. Go back to the
<b>Event Manager</b> page. Does the UCA show the correct next time to
start? If not, turn on diagnostic tracing, repeat the steps, and send
the log files to IBM Business Process Manager Support.
<br />
<br /> The following example is a screen shot of the Exposing section for UCAs.
<br />
<a href="http://www-01.ibm.com/support/docview.wss?uid=swg27041883&aid=1" target="_blank"><img class="ibm-image-resize" height="128" src="http://www-01.ibm.com/support/docview.wss?uid=swg27041883&aid=1" width="492" /></a>
<i><br /> </i>
<br />
<b>Notes</b>:
<br />
<ul>
<li>Scheduled UCAs only operate on their scheduled time in a Process Server environment. For a Process Center, click <b>RUN NOW</b> on the UCA implementation to test. </li>
<li>Scheduled UCAs only operate on the DEFAULT snapshot. If you have
more than one active snapshot, only the code implementation in the
default snapshot fires.</li>
</ul>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com1tag:blogger.com,1999:blog-44619120687887377.post-519096457810153582015-08-24T16:17:00.001+05:302015-08-24T16:17:26.756+05:30IBM BPM UCA - Consume & Durable Subscription<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal" style="text-autospace: ideograph-numeric;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="color: #c00000;">Consume and Durable Subscription Options Usage on
UCA<span style="mso-spacerun: yes;"> </span>(IBM BPM ):-</span></b></span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
</div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="color: #c00000;">Durable
Subscription:-</span></b></span>
<span style="font-family: Times,"Times New Roman",serif;"><br />
Think Our BPD is like this:-</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">
</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">Start Event----->Parallel
Gateway--------------> MIE1(Message Intermediate event(configured </b></span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="mso-spacerun: yes;">
</span>!<span style="mso-spacerun: yes;"> </span>MyUCA1))------------->Scrpit1---------->end</b></span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>! <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></b></span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">
!</b></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">
!-----------><span style="mso-spacerun: yes;"> </span>MIE2(Message
InterMediate event(Configured <span style="mso-spacerun: yes;"> </span></b></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="mso-spacerun: yes;">
</span>MyUCA1))-- ----------------->Script2------------>end</b></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><span style="mso-spacerun: yes;">
</span></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><span style="color: #c00000;">Human Service:-(<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">fireMyUCA1</i></b>
human Service)</span></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">Start------------->Invoke UCA(Configured MyUCA1)
-------->end</b></span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">Testing:-</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">case1:-</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">1)If we start BPD instance .Then flow waits at
MIE1,MIE 2 .</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">2)If we run fireMyUCA1 Human Service.Then both
MIE1,MIE2 will trigger and instance will be completed success fully.</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">Case2:-</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">1) Check Durable Subscription option for MIE1 and Uncheck
Durable Subscription option for MIE2.</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">2)Dont start BPD .But Run ” <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">fireMyUCA1” </i></b>human
Service.</span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">3)Now Start the BPD.Go to inspector <span style="mso-spacerun: yes;"> </span>view,Flow only waits at MIE2 only because MIE1
automatically fires because Durable Subscription option was checked .If you
want fire MIE2 again you have to run <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">fireMyUCA1</i></b> human service.</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">Observations:-</b>We are checked Durable Subscription option for MIE1
means .If any of event fired(Which related MIE1) before flow reached MIE1
.That event persisted <span style="mso-spacerun: yes;"> </span>and Once our flow
come into active it will be fired .</span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><br />
“What if the event that would trigger the listener occurs before the listener
is reached? This is where the concept of the Durable Subscription comes into
play. If this flag is checked, then the arrival of an event before the listener
is reached is remembered and when the process<br />
reaches the Intermediate Message Event, it is immediately notified that the
solution can continue. If this flag is not checked, then the event that arrived
previously is discarded and the process will wait for a further event.”</span>
<span style="font-family: Times,"Times New Roman",serif;"><br style="mso-special-character: line-break;" /></span>
</div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><span style="color: #c00000;">Consume explanation:-</span></span></div>
<div class="MsoNormal" style="text-autospace: ideograph-numeric;">
<span style="font-family: Times,"Times New Roman",serif;">"Consume"
means when an intermediate listener in a given Business Process instance
correlates to a message, should it mark that message so that it will not be
used by any other event listeners in that instance that are listening for the
same event.<span style="mso-spacerun: yes;"> </span>It is very important to note
that this is a per instance flag.<span style="mso-spacerun: yes;"> </span>The
value on this flag has no between 2 listeners in separate BPD instances.<span style="mso-spacerun: yes;"> </span>If a message is consumed, then the next time
a listener begins listening it will only react to events that have not been
consumed for this Business Process Instance.</span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
</div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">Create two BPDs:</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="color: #c00000;">BPD1:-</span></b></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">MessageStartEvent(Configured with
MYUCA1)---->MIE(Configured with MYUCA1)----->End<span style="mso-spacerun: yes;"> </span>(Consume Option was checked)</b></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;"><span style="color: #c00000;">BPD2:-</span></b></span>
<span style="font-family: Times,"Times New Roman",serif;"><b style="mso-bidi-font-weight: normal;">MessageStartEvent((Configured with
MYUCA1)---->MIE((Configured with MYUCA1)----->End<span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>(Consume
Option was Unchecked)</b></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt; mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">Testing:-</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">1)Create Human Service which will fire MYUCA1.Run
service</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">2)Then Two instances were created (BPD1,BPD2).</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">3)Coming to BPD1 flow, instance will wait at
MIE step because ,StartMessageEvent was consumed the message .So MIE is waiting
for another Message.(If you observe the BPD1 Instance status is in Active state).</span></div>
<div class="MsoNormal" style="mso-hyphenate: auto; mso-pagination: widow-orphan;">
<span style="font-family: Times,"Times New Roman",serif;">4)coming to BPD2 flow won’t wait it fires both
events(MSE,MIE).(If you observe the BPD2 Instance status is complete )</span></div>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com1tag:blogger.com,1999:blog-44619120687887377.post-17521572272597051202015-07-11T02:19:00.001+05:302015-07-11T02:19:34.871+05:30IBM BPM 8.5 - Dynamic user assignment to task<div dir="ltr" style="text-align: left;" trbidi="on">
From IBM BPM v8.5, the Assignment options which were there before such as "<b><i>Last User in the lane", "Routing Policy", "List Of Users"</i></b> and "<b><i>Custom</i></b>"
were deprecated an can no longer be used for the Task Assignments. In
older version the option "Custom" was being used for dynamic assignment
of Team or User to a Task. In the latest versions of IBM BPM i.e., from V
8.5.0 a new way of assignment has been introduced i.e., using the "<b><i>Team Filter Service</i></b>".<br />
<br />
In this post, let us look at a code sample illustrating the D<b><i>ynamic task assignment for user using Team Filter Service.</i></b><br />
<b><i><br /></i></b>
As a first step create a simple BPD with one Activity with a Human Service. Click on the activity and navigate to <b>Properties --> Assignments </b>and
click on new in-front of "Team Filter Service" to create a new
Integration service (team filter service) as shown in below figure or
select an already created service.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6qCOshyphenhyphenBjvE7vKYrlRLSQxW1r4ucFwS1y8AmcdhgdHof5WEiQUQ4JLMdd3lEgww6Fje4GrdKsxUpeNUPxA7x2yaPE-tgTG2RH3oj4vaI6MgAsHlx-rY13tElt9OfJp7DRb9clbvEskA/s1600/blog1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6qCOshyphenhyphenBjvE7vKYrlRLSQxW1r4ucFwS1y8AmcdhgdHof5WEiQUQ4JLMdd3lEgww6Fje4GrdKsxUpeNUPxA7x2yaPE-tgTG2RH3oj4vaI6MgAsHlx-rY13tElt9OfJp7DRb9clbvEskA/s400/blog1.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<a href="https://www.blogger.com/null" name="more"></a><br />
<br />
Now in the "Team Filter Service", navigate to "Variables" section and
create a new variable called "toUserId" as shown in the figure. This
variable can be used to pass the userId to be assigned.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy75iORV_t2o6bOcoctpIhxDc_6WkR-ESG2QNkyNoixCniT7j9obYs4pteMr0DCbxvIUjI62O1-yU1ldr65cKNL-P4JvnjoZnTKz9S2BpAJj2CPUtzzXI72w4cNNR5MyJAh_GTCpKLaw/s1600/blog+image+2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy75iORV_t2o6bOcoctpIhxDc_6WkR-ESG2QNkyNoixCniT7j9obYs4pteMr0DCbxvIUjI62O1-yU1ldr65cKNL-P4JvnjoZnTKz9S2BpAJj2CPUtzzXI72w4cNNR5MyJAh_GTCpKLaw/s400/blog+image+2.jpg" width="400" /></a></div>
<br />
Let us look at the Assignment Tab of the activity in bpd after attaching
the "Team Filter Service". Below figure shows the view of Assignment
Tab for the activity along with the input mapping.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWOr9BxxlGPATyw97BokyyHqk473JaNyLBio-AVwM5WW3-ga2B3ODdLF84bduEW8GVKeR2TLo1ex7nIZxAGHwfHi2cmNsV9QIGiMEerat_97v6WsOqCkIfoRNxIjvL1AZe_DcKqS4qHw/s1600/blog+image+3.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWOr9BxxlGPATyw97BokyyHqk473JaNyLBio-AVwM5WW3-ga2B3ODdLF84bduEW8GVKeR2TLo1ex7nIZxAGHwfHi2cmNsV9QIGiMEerat_97v6WsOqCkIfoRNxIjvL1AZe_DcKqS4qHw/s400/blog+image+3.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Now let us look at the script which is used to create a Team with the
users passed dynamically to the Team Filter Service. In this Script we
need to create the Team of User and assign it output Variable
"filteredTeam". Below figure shows the diagram of the "Team Filter
Service".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij3fCIAwE_1uqpRrDTtJs1SfngJO9TaqjbcD7GaifbE-QJMtzWJf0qDDuiC1cpC__J7BvDHZA_sI6Ro8v_RVw91gG9jJhLRrBWe_Vwilehe_vJMptUNYTOefxKQbHLOuXRrni_vyeW-w/s1600/blog+image+4.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij3fCIAwE_1uqpRrDTtJs1SfngJO9TaqjbcD7GaifbE-QJMtzWJf0qDDuiC1cpC__J7BvDHZA_sI6Ro8v_RVw91gG9jJhLRrBWe_Vwilehe_vJMptUNYTOefxKQbHLOuXRrni_vyeW-w/s400/blog+image+4.jpg" width="400" /></a></div>
<br />
Below is the script using which the Team is created with the users passed dynamically.<br />
<br />
<span style="color: #741b47; font-family: Times, Times New Roman, serif;"><i style="background-color: #6fa8dc;">tw.local.filteredTeam=new tw.object.Team();</i></span><br />
<span style="color: #741b47; font-family: Times, Times New Roman, serif;"><i style="background-color: #6fa8dc;">tw.local.filteredTeam.members=new tw.object.listOf.String();</i></span><br />
<span style="color: #741b47; font-family: Times, Times New Roman, serif;"><i style="background-color: #6fa8dc;">tw.local.filteredTeam.members.insertIntoList(tw.local.filteredTeam.members.listLength, tw.local.toUserId);</i></span><br />
<br />
Once the BPD is Created and assignment is done as explained above.
Create an instance for the BPD, you will notice that the task is
assigned to the team created with list of Users.<br />
<br />
This script can be extended to filter the users from the given team
based on certain parameters or to create new temporary temporary team
with of the list of intended users or any other scenario where the
intended Users / Teams are determined dynamically during run time.<br />
<br />
Hope this is use full !!!</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-54395175980090097872015-07-10T23:21:00.001+05:302015-07-10T23:21:39.215+05:30IBM BPM EPV variable behaviour<div dir="ltr" style="text-align: left;" trbidi="on">
<ol>
<li> I have snapshot_A with an EPV with a default value: "123"
<br />
</li>
<li> I installed that snapshot to my Process Server and the
--> current EPV value is "123" as expected
<br />
</li>
<li> Now I add a new EPV value "456" with effective date to near future and the
--> current EPV value changed to "456" as expected
<br />
</li>
<li> I created a new snapshot_B and I installed that one on my Process Server
<br />
</li>
<li> I used Synchronize Settings or Inflight Migration (Instances needed) and discovered that
--> the current EPV value switched back to "123". Here, I expected to have "456" because it was the last modified value.<br />
</li>
</ol>
<img alt="alt text" src="https://developer.ibm.com/answers/storage/temp/3066-capture.jpg" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The behavior of migrating EPV variables has changed due to
requirements of utilizing the default EPV value specified in the
snapshot, if one is defined.<br />
There are two scenarios:<br />
<ul>
<li> One scenario is the application may be developed in the
perspective where the new application requires this new EPV value
defined in the snapshot (default behavior in earlier releases).
<br />
</li>
<li> The other scenario is to utilize only what is defined in
runtime and do not use any values defined from the snapshot (new default
behavior, described above).<br />
</li>
</ul>
With JR52960 a new configurable property "epv-deploy-default" has
been introduced to toggle between the two behaviors. After applying the
fix the default behavior will be reverted back to how it was in previous
releases where the latest modified EPV value is migrated. This means
the property by default is set to 'false'. Once the property is enabled
(true) then the default EPV value from the snapshot will be once again
be used during deployment or instance migration. <br />
You can find the iFix and its pre-requisites on Fix Central:
<a href="https://www-947.ibm.com/support/entry/portal/search_results?sn=spe&filter=keywords%3Aibmsupportfixcentralsearch&q=JR52960">https://www-947.ibm.com/support/entry/portal/search_results?sn=spe&filter=keywords%3Aibmsupportfixcentralsearch&q=JR52960</a></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-7412181613864756312015-06-03T00:02:00.001+05:302015-06-03T00:04:26.763+05:30IBM BPM - Task Management using server script ( ReAssign Task & Complete Task )<div dir="ltr" style="text-align: left;" trbidi="on">
<b><span style="font-size: large;">Assign to me</span></b><br />
<br />
tw.system.findTaskByID(tw.local.iTaskId).reassignTo(tw.system.user_loginName);<br />
<br />
<br />
<b><span style="font-size: large;">Complete Task</span></b><br />
<br />
If we have output variable for task, we have to add those all output variable in map as below:<br />
<br />
var outputVariable = new tw.object.Map(); <br />
outputVariable.put("out1","");<br />
outputVariable.put("out2","");<br />
outputVariable.put("out3","");<br />
outputVariable.put("out4",0.0);<br />
outputVariable.put("out5","");<br />
outputVariable.put("conditioninBPD", "success");<br />
<br />
tw.system.findTaskByID(tw.local.iTaskId).complete(tw.system.org.findUserByName(tw.system.user_loginName),outputVariable);<br />
<br /></div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-23644358435657267532015-06-02T23:35:00.001+05:302015-06-02T23:35:46.625+05:30IBM BPM - Design Patterns<div dir="ltr" style="text-align: left;" trbidi="on">
<h2>
Introduction</h2>
IBM BPM provides a number of generic artifacts for modeling purposes.
These can be combined in a variety of ways in order to solve different
technical problems. <br />
<strong>A design pattern</strong> is used to document how a
combination of model artifacts may be used together in order to solve a
specific technical problem. Unlike a framework or utility, a design
pattern cannot be deployed directly. A design pattern is rather like
having a pattern template for making clothes, where a tailor may use the
same template to create a number garments using different materials. <br />
The design pattern provides a design template that allows the BPM
developer to solve the same technical problem consistently throughout
the model using different artifacts. Design patterns promote re-use and
improve maintainability. Example design patterns include Layered
Architecture, Task Services, Coach Services, Data Access Services and
Manual Unit Tests.<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: small;">General Patterns</span></h1>
This page outlines a number of general design patterns.<br />
If reading for the first time it is recommended that the reader should read these key patterns in the following order:<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: large;">1. Smart Folder and Tagging</span></h1>
<h2>
Design Pattern</h2>
<h4>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-Objective"></a>Objective</h4>
Tags can be used to create specific smart folders making it easy to
manage and account for the development cycle of the assets being
created. Using the “By Tag” library view, a user will be able to sort
through a large asset library quickly.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/View-By-Tag.jpg"><img alt="View By Tag Smart Folder and Tagging" class="alignnone size-full wp-image-1080" height="185" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/View-By-Tag.jpg" title="Smart Folder and Tagging" width="568" /></a><br /><br />
<br /><br />
You’re not limited to just one tag per component. For instance, if you
have a service/BPD/integration that tests your database connections it
would be tagged as both a test and a database service.<br />
<h3>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-General(PreExistinTW7)"></a>General (Pre-Exist in TW7)</h3>
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh"> Tag <br clear="all" /> </th>
<th class="confluenceTh"> Purpose </th>
</tr>
<tr>
<td class="confluenceTd"> Data Access </td>
<td class="confluenceTd"> General data access integrations (CRUD) </td>
</tr>
<tr>
<td class="confluenceTd"> Data Transform </td>
<td class="confluenceTd"> Transforms data from one form to another (e.g. when coming out of web services into a BPD) </td>
</tr>
<tr>
<td class="confluenceTd"> Database </td>
<td class="confluenceTd"> To distinguish Integration services that interact with databases </td>
</tr>
<tr>
<td class="confluenceTd"> Exceptions </td>
<td class="confluenceTd"> Used to handle exceptions </td>
</tr>
<tr>
<td class="confluenceTd"> Deprecated </td>
<td class="confluenceTd"> Items that are kept around for backward compatibility but are no longer the recommended implementation </td>
</tr>
<tr>
<td class="confluenceTd"> Installation </td>
<td class="confluenceTd"> Used for the installation of a process app or toolkit </td>
</tr>
<tr>
<td class="confluenceTd"> Integration </td>
<td class="confluenceTd"> A specific integration implementation </td>
</tr>
<tr>
<td class="confluenceTd"> Report </td>
<td class="confluenceTd"> Implementation that is used for reporting purposes </td>
</tr>
<tr>
<td class="confluenceTd"> Reporting </td>
<td class="confluenceTd"> To distinguish which services, variables, tracking groups, etc are linked to reporting </td>
</tr>
<tr>
<td class="confluenceTd"> Security </td>
<td class="confluenceTd"> Anything that is dealing with security, such as users and groups </td>
</tr>
<tr>
<td class="confluenceTd"> Task </td>
<td class="confluenceTd"> Specifically used to implement a task in a process. Can be used on all first-level task services </td>
</tr>
<tr>
<td class="confluenceTd"> Test </td>
<td class="confluenceTd"> To distinguish Test Harnesses </td>
</tr>
<tr>
<td class="confluenceTd"> Top Level </td>
<td class="confluenceTd"> The top-level BPD or a top-level service. Can be useful with an associated Smart folder to know where the top items are </td>
</tr>
<tr>
<td class="confluenceTd"> UI </td>
<td class="confluenceTd"> Helpers for human services, such as getting lists of text for a list </td>
</tr>
<tr>
<td class="confluenceTd"> Utility </td>
<td class="confluenceTd"> A utility service </td>
</tr>
<tr>
<td class="confluenceTd"> Web Services </td>
<td class="confluenceTd"> To distinguish Integration services that interact with web services </td>
</tr>
</tbody>
</table>
<h3>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-NamingConvention"></a>Naming Convention</h3>
Tag services as required in the <a href="https://developer.ibm.com/bpm/docs/design-patterns/general-patterns/naming-conventions/" title="Naming Conventions">Naming Conventions Pattern</a><br />
<h3>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-OtherTaggingOptions"></a>Other Tagging Options</h3>
If your developers are the compulsively organizational type, try the
following ideas for tags, and let us know the results. We’re always
looking for feedback.<br />
<ul>
<li><b>Development Status Based Tags</b> - Tag each and every artifact with its development status (To Do, In Progress, Completed, etc.).</li>
<li><b>User Based Tags -</b> Tag Task Services, Reports, and BPDs by the users/participant groups that will be using them.</li>
<li><b>Process Based Tags -</b> If you have a process app with multiple
processes, tag each process-specific artifact with a tag of the BPD it’s
associated with.</li>
</ul>
<h1>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-SmartFolders"></a>Smart Folders</h1>
<h4>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-Objective"></a>Objective</h4>
While the new library in IBM BPM versions 7 and up eliminates the
cluttered, confusing nested library structure of previous Teamworks
versions, it also eliminated the ability to quickly access top-level
services and business process diagrams. We can eliminate this
deficiency, and improve our development experience, by using tagging and
smart folders.<br />
<br />
<h3>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-Application"></a>Application</h3>
There are 4 types of IBM BPM artifacts that we want to be easily accessible. Create a <b>shared</b> smart folder for each tag listed in the table below.<br />
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh"> Smart Folder <br clear="all" /> </th>
<th class="confluenceTh"> Tag <br clear="all" /> </th>
<th class="confluenceTh"> Description <br clear="all" /> </th>
<th class="confluenceTh"> Example <br clear="all" /> </th>
</tr>
<tr>
<td class="confluenceTd"> Top-Level BPDs <br clear="all" /> </td>
<td class="confluenceTd"> Top-Level BPD <br clear="all" /> </td>
<td class="confluenceTd"> These BPDs should be the highest level BPDs in
your process app. You may only have a few, but the ability to get to
them quickly is important. </td>
<td class="confluenceTd"> An enterprise HR Onboarding process BPD. This
may live in the HR Process App, alongside other processes, but it stands
alone from others (i.e. offboarding, conflict resolution, etc.). We
would tag the HR Onboarding process with “Top-Level BPD”, and it would
add itself the top-level BPD smart folder. We would not tag any
sub-processes this BPD has (i.e. background check, adding to payroll
system, etc) </td>
</tr>
<tr>
<td class="confluenceTd"> Top-Level Services <br clear="all" /> </td>
<td class="confluenceTd"> Top-Level Service <br clear="all" /> </td>
<td class="confluenceTd"> These stand-alone services (primarily Human Services) do not exist in any BPDs. </td>
<td class="confluenceTd">
<ul>
<li>A CRUD (create, read, update, delete) service used to allow users to manually manage database content, event schedules, etc.</li>
<li>A service that contains a report embedded in a coach, which will be
deployed on the Left Side Navigation bar in the IBM BPM Portal.</li>
<li>A service that allows users to drilldown through process instances and the data/statuses associated with each.</li>
</ul>
</td>
</tr>
<tr>
<td class="confluenceTd"> Integrations </td>
<td class="confluenceTd"> (Use system specific tag) <br clear="all" /> </td>
<td class="confluenceTd"> These are services which contain integrations with other systems. <br clear="all" /><br />
<b>Note</b>: To create this folder, use system specific tags (i.e.
Database, Document Management, Legacy System). This way, you’ll be able
to sort your smart folder by integration (sort by tag). </td>
<td class="confluenceTd">
<ul>
<li>A service that updates customer information using a webservice</li>
<li>A service that writes a document to a content management system.</li>
</ul>
</td>
</tr>
<tr>
<td class="confluenceTd"> Test Services <br clear="all" /> </td>
<td class="confluenceTd"> Unit Test <br clear="all" /> </td>
<td class="confluenceTd"> Services/BPDs used to test User Interfaces, Integrations, Process flow, etc. </td>
<td class="confluenceTd">
<ul>
<li>A service used to test an integration with a document management system.</li>
<li>A service used to test a user interface’s validation on a customer service coach.</li>
<li>A BPD used to test proper process flow.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<h4>
<a href="https://www.blogger.com/null" name="SmartFolderandTaggingRecommendations-Examples"></a>Examples</h4>
<table class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Smart Folder <br clear="all" /> </th>
<th class="confluenceTh"> Example Screenshot <br clear="all" /> </th>
</tr>
<tr>
<td class="confluenceTd"> Top-Level BPDs <br clear="all" /> </td>
<td class="confluenceTd"><a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Top-Level-BPD-Smart-Folder.jpg"><img alt="Top Level BPD Smart Folder Smart Folder and Tagging" class="alignnone size-full wp-image-1085" height="225" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Top-Level-BPD-Smart-Folder.jpg" title="Smart Folder and Tagging" width="606" /></a><br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Top-Level Services <br clear="all" /> </td>
<td class="confluenceTd"> <a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Top-Level-Services-Smart-Folder.jpg"><img alt="Top Level Services Smart Folder Smart Folder and Tagging" class="alignnone size-full wp-image-1081" height="201" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Top-Level-Services-Smart-Folder.jpg" title="Smart Folder and Tagging" width="583" /></a></td>
</tr>
<tr>
<td class="confluenceTd"> Integrations </td>
<td class="confluenceTd"><a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Integration-Smart-Folder.jpg"><img alt="Integration Smart Folder Smart Folder and Tagging" class="alignnone size-full wp-image-1082" height="233" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Integration-Smart-Folder.jpg" title="Smart Folder and Tagging" width="599" /></a> </td>
</tr>
<tr>
<td class="confluenceTd"> Test Services <br clear="all" /> </td>
<td class="confluenceTd"><a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Test-Services-Smart-Folder.jpg"><img alt="Test Services Smart Folder Smart Folder and Tagging" class="alignnone size-full wp-image-1083" height="214" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Test-Services-Smart-Folder.jpg" title="Smart Folder and Tagging" width="585" /></a></td></tr>
</tbody></table>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<h1 class="pn-page-title">
<span style="font-size: large;">2. Naming Conventions</span></h1>
<h2>
Purpose</h2>
To provide a standard method of naming TW artifacts to better
organize and manage process apps. Additionally, updating the standard
from Teamworks 6 in order to leverage new features in Teamworks 7 and
make this pattern easier to learn and use.<br />
<h3>
<a href="https://www.blogger.com/null" name="NamingConventionPattern- NoticeableChangesfromtheTW6pattern"></a> Noticeable Changes from the TW6 pattern</h3>
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern- Prefixes"></a> Prefixes</h4>
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Process-Apps.jpg"><img alt="Process Apps Naming Conventions" class="alignnone size-full wp-image-1069" height="240" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Process-Apps.jpg" title="Naming Conventions" width="346" /></a><br /><br />
Because of the separation of process apps in Teamworks 7, there is no
longer a worry of cluttered libraries with artifacts from multiple
different process apps. This removes the need for prefixes.<br />
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern- Body"></a> Body</h4>
The use of reserved verbs will help to clarify the action/use of a service.<br />
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern- AbbreviatedSuffixes"></a> Abbreviated Suffixes</h4>
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Service-Types.jpg"><img alt="Service Types Naming Conventions" class="alignnone size-full wp-image-1070" height="207" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Service-Types.jpg" title="Naming Conventions" width="311" /></a><br /><br />
Due to the new service types in Teamworks 7, and the addition of tagging
capability, abbreviated suffixes, used heavily in Teamworks 6 naming
convention pattern, are no longer part of the pattern. This should help
make the naming pattern simpler and more user-friendly.<br />
<br />
<h2>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-Artifacts"></a>Artifacts</h2>
New service types allow artifacts to have simpler names, and the use of tags will allow clarification for users.<br />
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh"> Tag <br clear="all" /> </th>
<th class="confluenceTh"> Artifact Type <br clear="all" /> </th>
<th class="confluenceTh"> Description <br clear="all" /> </th>
<th class="confluenceTh"> Notes <br clear="all" /> </th>
<th class="confluenceTh"> Examples <br clear="all" /> </th>
</tr>
<tr>
<td class="confluenceTd"> Tasks <br clear="all" /> </td>
<td class="confluenceTd"> Human Service or General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that directly implements an activity. Such a service is responsible for coordinating a whole task for a user/system. </td>
<td class="confluenceTd"> </td>
<td class="confluenceTd"> Register Sales Opportunity <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Coaches <br clear="all" /> </td>
<td class="confluenceTd"> Human Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that implements a single coach. It is generally recommended that a service not have more than a single coach in it. </td>
<td class="confluenceTd"> If the coach service has the same name as the task service, add the suffix “Coach” to the coach service. </td>
<td class="confluenceTd"> Register Sales Opportunity Coach <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Events <br clear="all" /> </td>
<td class="confluenceTd"> General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that is used specifically to invoke an Event Driven UCA. </td>
<td class="confluenceTd"> The UCA has the same name as this service. If event based, append “Event” on both this service and the UCA <br clear="all" /> </td>
<td class="confluenceTd"> Start Sales Cycle Event <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Event Implementation <br clear="all" /> </td>
<td class="confluenceTd"> General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that directly implements an Event Driven UCA. </td>
<td class="confluenceTd"> To name this service, precede the UCA name with the reserved verb “Implement”. </td>
<td class="confluenceTd"> Implement Start Sales Cycle Event <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Data Access <br clear="all" /> </td>
<td class="confluenceTd"> Integration Service or General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service whose specific purpose it is to get
some data from inside (EPV, properties, variable) or outside (DB, LDAP)
Teamworks and return it to the calling service/BPD. </td>
<td class="confluenceTd"> Use the reserved verb “Retrieve”. <br clear="all" /> </td>
<td class="confluenceTd"> Retrieve Company Info <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Unit Test <br clear="all" /> </td>
<td class="confluenceTd"> Human Service, General System Service, BPD <br clear="all" /> </td>
<td class="confluenceTd"> A service designed to test another service or BPD. </td>
<td class="confluenceTd"> The unit test has the same name as the
service/BPD being tested with the reserved verb “Test”. This can apply
to any other type of service, such as task services, coach services, web
service services, etc. </td>
<td class="confluenceTd"> Test Register Sales Opportunity <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Coach Validator <br clear="all" /> </td>
<td class="confluenceTd"> General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service used to encapsulate coach validation logic. </td>
<td class="confluenceTd"> This is used in conjunction with the Coach Validation Framework. Service name starts with reserved verb “Validate”. <br clear="all" /> </td>
<td class="confluenceTd"> Validate Sales Opportunity <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Batch <br clear="all" /> </td>
<td class="confluenceTd"> General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that directly implements a Batch/Chron driven UCA. </td>
<td class="confluenceTd"> To name this service, precede the UCA name with “Batch” and the reserved verb “Implement”. </td>
<td class="confluenceTd"> Batch Implement Sales Cycle Event <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Utilities <br clear="all" /> </td>
<td class="confluenceTd"> General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that implements some piece of utility functionality (such as text parsing for valid email format, etc) </td>
<td class="confluenceTd"> </td>
<td class="confluenceTd"> Parse Email Addresses <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Inbound Web Service <br clear="all" /> </td>
<td class="confluenceTd"> Web Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that directly implements a Teamworks hosted Web Service. </td>
<td class="confluenceTd"> </td>
<td class="confluenceTd"> ReceiveProductDetails <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Outbound Web Service <br clear="all" /> </td>
<td class="confluenceTd"> Integration Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that wraps a Web Service connector. </td>
<td class="confluenceTd"> </td>
<td class="confluenceTd"> Update Sales Opportunity in Salesforce.com <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Constructor <br clear="all" /> </td>
<td class="confluenceTd"> General System Service <br clear="all" /> </td>
<td class="confluenceTd"> A service that initializes a variable. </td>
<td class="confluenceTd"> Precede the variable name with the reserved verb “Construct” </td>
<td class="confluenceTd"> Construct SalesforceOpportunity <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> Business Object <br clear="all" /> </td>
<td class="confluenceTd"> Variable Type <br clear="all" /> </td>
<td class="confluenceTd"> A variable type that resides within the
Business Object Model layer within a layered Teamworks architecture.
These are used to define a common view of business data within a
Teamworks process. </td>
<td class="confluenceTd"> </td>
<td class="confluenceTd"> SalesforceOpportunity <br clear="all" /> </td>
</tr>
<tr>
<td class="confluenceTd"> View Object <br clear="all" /> </td>
<td class="confluenceTd"> Variable Type <br clear="all" /> </td>
<td class="confluenceTd"> A variable type that resides within the View
layer within a layered Teamworks architecture. These may be defined to
present data in a specific way. </td>
<td class="confluenceTd"> </td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td class="confluenceTd"> Integration Object <br clear="all" /> </td>
<td class="confluenceTd"> Variable Type <br clear="all" /> </td>
<td class="confluenceTd"> A variable type that resides within the
Integration layer within a layered Teamworks architecture. These may be
used directly with SQL and Web Service connectors that load data
directly into Teamworks variables. </td>
<td class="confluenceTd"> It may be useful to include the system being integrated with in the title of the variable. <br clear="all" /> </td>
<td class="confluenceTd"> SalesforceSalesOpportunity <br clear="all" /> </td>
</tr>
</tbody>
</table>
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-ExampleLibrary"></a>Example Library</h4>
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Example-Tags-and-Names.jpg"><img alt="Example Tags and Names Naming Conventions" class="alignnone size-full wp-image-1071" height="755" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Example-Tags-and-Names.jpg" title="Naming Conventions" width="314" /></a><br />
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-ReservedVerbs"></a>Reserved Verbs</h4>
These verbs can be used at the beginning of artifact names in order to more clearly specify the action of the service.<br />
<br />
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh"> Verb <br clear="all" /> </th>
<th class="confluenceTh"> Use <br clear="all" /> </th>
<th class="confluenceTh"> Example <br clear="all" /> </th>
</tr>
<tr>
<td class="confluenceTd"> Retrieve <br clear="all" /> </td>
<td class="confluenceTd"> Pulling data from a system of record </td>
<td class="confluenceTd"> Retrieve Product Details from Salesforce </td>
</tr>
<tr>
<td class="confluenceTd"> Write <br clear="all" /> </td>
<td class="confluenceTd"> Creating a new record in a system of record </td>
<td class="confluenceTd"> Write Customer Details to Salesforce </td>
</tr>
<tr>
<td class="confluenceTd"> Update <br clear="all" /> </td>
<td class="confluenceTd"> Updating an existing record in a system of record </td>
<td class="confluenceTd"> Update Customer Details in Salesforce </td>
</tr>
<tr>
<td class="confluenceTd"> Delete <br clear="all" /> </td>
<td class="confluenceTd"> Removing a record from a system of record </td>
<td class="confluenceTd"> Delete Customer from Salesforce </td>
</tr>
<tr>
<td class="confluenceTd"> Send <br clear="all" /> </td>
<td class="confluenceTd"> Sending a message event/email to another system/participant </td>
<td class="confluenceTd"> Send Email to Customer </td>
</tr>
<tr>
<td class="confluenceTd"> Receive <br clear="all" /> </td>
<td class="confluenceTd"> Receiving a message event to and from a participant </td>
<td class="confluenceTd"> Receive message from Salesforce </td>
</tr>
<tr>
<td class="confluenceTd"> Validate <br clear="all" /> </td>
<td class="confluenceTd"> Validating a coach using the coach validation framework </td>
<td class="confluenceTd"> Validate Product Details Coach </td>
</tr>
<tr>
<td class="confluenceTd"> Test <br clear="all" /> </td>
<td class="confluenceTd"> Testing a service </td>
<td class="confluenceTd"> Test Delete Product Details from Salesforce </td>
</tr>
<tr>
<td class="confluenceTd"> Construct <br clear="all" /> </td>
<td class="confluenceTd"> Initializing a variable type </td>
<td class="confluenceTd"> Construct ProductDetails </td>
</tr>
<tr>
<td class="confluenceTd"> Implement <br clear="all" /> </td>
<td class="confluenceTd"> Implementing a UCA </td>
<td class="confluenceTd"> Implement Batch Timer </td>
</tr>
</tbody>
</table>
<h2>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-HigherLevelArtifacts"></a>Higher Level Artifacts</h2>
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-SnapshotNames"></a>Snapshot Names</h4>
Snapshot names should do at least 1 of 2 things:<br />
<ul>
<li>Provide a date stamp of the snapshot (e.g. v15March2010 or 14June2010Release)</li>
<li>Describe change/enhancement (e.g. RouteAroundExecutiveApprovals)</li>
</ul>
Here is an example of a more detailed naming convention around Snapshots<br />
<b>Special Note for BPM Advanced</b><br />
Not all the recommendations apply to BPM Advanced. For example, refer to this <a href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r0m1/index.jsp?topic=%2Fcom.ibm.wbpm.wid.main.doc%2Fnewapp%2Ftopics%2Fcversions.html&resultof%3D%2522%2576%2565%2572%2573%2569%256f%256e%2522%2520%2522%2573%2563%2568%2565%256d%2565%2522%2520" rel="nofollow">infocenter reference in situations</a> where you want to use more than 3 digit numeric snapshots.<br />
<ul>
<li>(Prior Release/Production).(Playback/Maintenance Release).(Snapshot per Current Playback/Maintenance Release).(Workspace branch)</li>
<li>Examples:
<ul>
<li>Snapshot for Release 1 development prior to installation to
Production, during playback 3 development, the 6th snapshot during this
time = 0.3.6</li>
<li>Snapshot for Release 1 development post installation to Production,
during development for the 2nd maintenance release, the 4th snapshot
during this time = 1.2.4</li>
<li>Snapshot for Release 1 development post installation to Production,
in a workspace taken from a branch at 1.2.4, 1st snapshot in this
branch= 1.2.4.1</li>
</ul>
</li>
<li>Once there are multiple releases and multiple workspaces, this might
need to be expanded to incorporate that. A possible approach would be
going to other snapshots for subsequent releases (normally with a major
scope change) or starting over from a snapshot of choice from a prior
release.</li>
</ul>
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-EnvironmentVariables"></a>Environment Variables</h4>
Environment Variables Naming Pattern: Coming Soon<br />
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-ProcessAppNames"></a>Process App Names</h4>
<ul>
<li>Name your Process Application after the main process in the PA or the business term/purpose for the PA</li>
<li>Don’t use words “Process Application” in PA’s name</li>
</ul>
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-ToolkitNames"></a>Toolkit Names</h4>
<ul>
<li>Name the toolkit after what utility/services it provides</li>
<li>Add “Toolkit” or “Framework” word to the name, so the export of it can be differentiated from process applications.</li>
</ul>
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-ProcessApp&ToolkitNames"></a>Process App & Toolkit Names</h4>
<ul>
<li>Don’t use very long names try to keep it less than 64 characters</li>
<li>Use white space between words to improve readability</li>
<li>Avoid using abbreviation (this is what acronym is meant for) except common words to make the name shorter</li>
<li>Put additional information in Description field</li>
<li>Don’t use version number in the name (this is what snapshot should
be used for), unless want to bring attention to the major change in the
solution (like Axis2 vs Axis)</li>
</ul>
<h2>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-Diagram"></a>Diagram</h2>
The names of model artifacts should be shortened to be readable on
the diagram, but they must still provide an explanation of what the
attached artifact does.<br />
<br />
<h4>
<a href="https://www.blogger.com/null" name="NamingConventionPattern-SpecificConventions"></a>Specific Conventions</h4>
<b>Logging.</b> For most logging-related library items, the words “Log” or “Logging” should appear in the name.<br />
<b>Layouts.</b> Layout names will generally include the name of the
specific type of layout, e.g. a coach layout will have the word
“Coach” in it. Again, this is not necessary, but it is useful.<br />
<b>Variable Types.</b> Variable types must be all one word, no
spaces and a limited selection of special characters (0..9 and _ are
allowed). Also, variable types should always begin with a capital
letter. Usually new types are defined to be complex objects
(structures), and the standard for capitalization for such types is to
be capitalized.<br />
<b>UCAs.</b> UCAs that will be used as Events in a BPD should be
named with the word “Event” in the name. For example, “New Order
Event”. The services which implement these UCAs should be labeled as
“Implement New Order Event” for example. UCAs which are not tied to a
BPD implementation should not include the word “Event” in the name.<br />
UCAs require attached Services – and it’s best to follow a convention
where the name of the Service is “the same” as the name of the UCA.
While it’s true that multiple UCAs can be attached to the same Service,
it’s generally easier to think of them in terms of a paired Service and
UCA.<br />
<b>Decision Points.</b> Decision points, whether in BPDs or
Services, should be in the form of a question. All of the lines coming
out of the decision should be answers to the question.<br />
Lines coming out of Decision points should have labels that indicate
the condition under which the path is taken. Labels such as “yes” and
“no” require the reader to trace back to the Decision Gateway, so they
should be generally avoided in favor of something more descriptive like
“loan exceeds $100″.<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: large;">3. Reuse</span> </h1>
<h2>
Design Pattern</h2>
Reuse is recognized as a fundamental best practice within the IT
industry and has been practiced from the earliest days of programming.
This basic principle is the basis of many other best practices including
modularity, loose coupling, high cohesion, information hiding and
separation of concerns.<br />
The idea is that a solution should be comprised of reusable modules
instead of replicating complete sections of the solution no matter how
large or small. Each module is written once and maintained in one place.
If another aspect of the solution needs the same functionality then it
can simply delegate to the module that provides that functionality. This
avoids redundancy within the solution, improves maintenance time, and
promotes consistency.<br />
Within IBM BPM resue is achieved by wrapping reuseable aspects of the
solution within a service. A library of reuseable services may be
developed that can simply be dragged onto other service or BPD diagrams
as many times as required. Many other design patterns are based upon
this idea. For example, the task service design pattern illustartes a
specific example of a reusable service.<br />
Services may be used to wrap other model artifacts, such as coaches
and server script, that cannot be reused directly without introducing
redundancy. The coach service design pattern and data access service
design pattern provide good examples of this.<br />
Generally it is a good idea to avoid exposing java script to business
users wherever possible. Wrapping server script within a reuseable
service hides the complexity of the Java Script and provides a simple
component which the business user is more familiar with.<br />
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<h1 class="pn-page-title">
<span style="font-size: large;">4. Constructor Design Pattern</span></h1>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
Use the constructor design pattern to create and initialise the data
in your business objects in a consistent fashion and in one single place
with a reusable component model within a Process Application or
Toolkit. Adopt this design approach, instead of having multiple process
code locations for initialising and setting default values for Business
Objects. Typically, Business Object initialisation is done using local
private JavaScript blocks which make the code difficult to manage,
update and leads to errors/defects that difficult to trace and fix.<br />
This pattern is a specialisation of the standard Singleton Design pattern.<br />
The main parts of this pattern are:<br />
Define a Business Object variable<br />
Create a general system service to be used as the singleton constructor<br />
Declare the target Business object as an input, output and private variable.<br />
Model the General System Service<br />
Create an initialisation wrapper service that calls the constructor<br />
The example below creates a constructor for a list of Job Business Object.<br />
<h2>
<strong>Define a Business Object variable</strong></h2>
In this case, I’m using a complex variable called Job<br />
The Business object consists of three parameters – JobDescription, JobStatus, and JobCompleted<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/BOdetails.png"><img alt="BOdetails Constructor Design Pattern" class="alignnone size-full wp-image-564" height="458" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/BOdetails.png" title="Constructor Design Pattern" width="225" /></a>
<br />
<h2>
<strong>Create a general system service to be used as the singleton constructor</strong></h2>
Create a service of type “General System Service” that will be used
to instantiate the Business Object and set default values, if required. <br />
I’ve used the prefix underscore (_) in the name to indicate this
service is a helper or utility service that should only be used within
other services and never directly in a human service or BPD activity.
This makes it easy to spot misuse and ensure process developers are
using agreed design guidelines. Also make it easier to unit test
services based on different implementation and usage types.<br />
Created _constructorListOfJobs<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-01Overview.png"><img alt="constructorService 01Overview Constructor Design Pattern" class="alignnone size-full wp-image-563" height="530" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-01Overview.png" title="Constructor Design Pattern" width="529" /></a><br />
<h2>
<strong>Declare the target Business object as an input, output and private variable.</strong></h2>
If your variable is a list also declare as an input an integer for
the size of the list to be created and populated with default values.<br />
The input and output variable should be the same Business Object type and have a descriptive name.<br />
The private variable should be the same Business Object type as the
input and output variables, called something like “_constructor”, using a
naming convention to indicate this is only ever to be a private
variable.<br />
Select the “Has Defaults” check box for the private variable to
auto-generate the script to create and initialise the Business object.<br />
See screenshots below for details.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-02Variables.png"><img alt="constructorService 02Variables Constructor Design Pattern" class="alignnone size-full wp-image-562" height="538" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-02Variables.png" title="Constructor Design Pattern" width="301" /></a><br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-02Variables1.png"><img alt="constructorService 02Variables1 Constructor Design Pattern" class="alignnone size-full wp-image-561" height="472" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-02Variables1.png" title="Constructor Design Pattern" width="1072" /></a><br />
<h2>
<strong>Model the General System Service</strong></h2>
Create a script block that contains the default values for this type of Business Object.<br />
In addition, you should add error handling and logging to catch any
errors. Typical errors would be initialisation script errors occurring
after the modification of the Business Object, for example renaming a
parameter.<br />
Usually, the “Has Defaults” auto generated script should update in synch
with any changes in the Business object. If it does not for whatever
reason, just uncheck and recheck the check box to correct the “Has
Defaults” auto generated script.<br />
If required, make the necessary changes to the default values
initialisation script block. Now any referencing BPD or Service that
requires a variable of this Business Object type to be created,
initialised and possibly have default values set will automatically have
the benefit of these changes.<br />
Always nullify private variables for efficient memory management.<br />
I’ve used two exits as this is consistent with the developer
guidelines agreed on the project for modelling utility and helper
services. This simplifies the models in parent services and makes the
flow logic clear when a system error, as opposed to business exception,
has occurred.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-03Constructor.png"><img alt="constructorService 03Constructor Constructor Design Pattern" class="alignnone size-full wp-image-560" height="672" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-03Constructor.png" title="Constructor Design Pattern" width="901" /></a><br />
<h2>
<strong>Create an initialisation wrapper service that calls the constructor</strong></h2>
Create a wrapper service that encapsulates and calls the constructor.
This also has the benefit of being able to use the “Where Used” feature
on the modular wrapper service to clearly see references to other
services and BPDs using this particular Business Object initialisation
logic, instead of trawling through individual private JavaScript blocks.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-04ConstructorWrapper.png"><img alt="constructorService 04ConstructorWrapper Constructor Design Pattern" class="alignnone size-full wp-image-559" height="421" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-04ConstructorWrapper.png" title="Constructor Design Pattern" width="494" /></a><br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-04ConstructorWrapper1.png"><img alt="constructorService 04ConstructorWrapper1 Constructor Design Pattern" class="alignnone size-full wp-image-558" height="523" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2014/12/constructorService-04ConstructorWrapper1.png" title="Constructor Design Pattern" width="1034" /></a><br />
<br />
<br />
<span style="font-size: large;"> </span><br />
<b><span style="font-size: large;">5. Loop Design Pattern</span></b><br />
<br />
There are two ways to implement loops within services. One method is
to write it entirely within Javascript, the other is to do it
diagrammatically.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Loop.jpg"><img alt="Loop Loop Pattern" class="alignnone size-full wp-image-1054" height="310" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Loop.jpg" title="Loop Pattern" width="566" /></a><br />
The preceding image illustrates a loop implemented diagrammatically.
Some of these steps actually use small snippets of Javascript, but these
are very simple constructs that business users can easily understand.
The loop requires a counter to indicate the number of times the loop has
been iterated. An Integer may be used for this purpose and is set to
zero during the initialisation of the loop. Any other variable
initialisation may also be performed during this step. For example:<br />
<code>tw.local.count = 0;<br />
tw.local.policyDebt = 0;</code><br />
Loops are typically used to iterate over a list variable. The list may be empty, so the loop exit criteria must be checked before looping commences. The decision gateway Yes path will require a condition to be specified. For example:<br />
<code>tw.local.count < tw.local.claims.listLength</code><br />
Some action will be performed each time round the loop. Typically, this may be a Service, a Server Script or a combination. The list variable and counter may be used together to identify the next item within the list. This may be mapped to either an input or an output parameter of a service, or directly within a Server Script. For example:<br />
<code>tw.local.policyDebt += tw.local.claims[tw.local.count].debt;</code><br />
Before re-entering the decision gateway the counter is incremented. This either locates the next item within the list or triggers the exit condition. For example:<br />
<code>tw.local.count++;</code><br />
The following code segment illustrates a loop implemented entirely with Javascript:<br />
<code>tw.local.policyDebt = 0;<br />
for(varcount = 0; count
tw.local.policyDebt += tw.local.claims[count.debt];<br />
}</code><br />
The advantages of using the Javascript approach are: <br />
<ul class="a">
<li><strong>Performance improvement.</strong> There is a minimal run-time performance overhead when using the diagrammatic approach.</li>
<li><strong>The speed of development.</strong> An experienced Javascript programmer may prefer this approach as it is quicker to implement. </li>
</ul>
The advantages of using the diagrammatic approach are: <br />
<ul class="a">
<li><strong>Easy for business users to understand</strong>. i.e. They don't have to become a skilled Javascript programmer.</li>
<li><strong>Easy to debug. </strong>The process inspector allows BPM developers to step through each step within the loop and examine variables. Conversely, Server Scripts are executed atomically, so it is not possible to step through each step within a loop written entirely within Javascript.</li>
<li><strong>Avoids infinite loops.</strong> It is possible to define a loop either using Javascript or diagrammatically where the exit criteria is never satisfied. i.e. it loops forever. IBM BPM provides a facility to detect infinite loops. With diagrammatic loops it is possible for IBM BPM to stop services running infinite loops by using the admin console, whereas the only way to stop infinite loops written entirely in Javascript is to restart the process server.</li>
<li><strong>Allows nested services to be used within the loop.</strong> This is also technically possible within Javascript but it has its drawbacks - the syntax it is not business user friendly and services invoked using Javascript cannot contain coaches.</li>
</ul>
<h2>
<span style="font-size: large;">Additional Notes</span></h2>
If you run a simple test you may see exponential performance impact as you increase the number of loops. However, this is likely due to the structure of your test. <br />
When you add even a small operation, say a 20ms unit of work to be performed inside the illustrated test with a single loop of size 100, the results are no longer different between scripting and diagramming your loop. You'd have 210s (canvas) vs. 200.055s (script). For larger units of work, the difference approaches zero and becomes negligible.<br />
Unless the unit of work inside the loop is insignificant (less than 10ms) and the size of the loop is significant (larger than 100) the performance difference between diagrammatic and script is negligible. On the other hand, there will always be the JS sync issue in anything prior to TW7.<br />
The only time a script loop makes any sense is for very small loop size and/or very small unit of work contained inside the loop.<br />
<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: large;">6. Constants Pattern</span></h1>
<strong>Overview</strong><br />
Teamworks does not provide a model artefact specifically designed to
maintain constants used within the Solution. Constants are used to
promote consistency, improve maintenance and reduce typographical
errors. Exposed Process Values (EPVs) are intended to be used to allow
business users modify the parameters affecting business rules within the
solution. However, EPVs may also be used to maintain constants.<br />
For each EPV variable the External Name, Variable Name, External
Description and Default Value should all be identical, as illustrated in
Figure 1. Constants should not be directly exposed within the user
interfaces, use localization resources instead.<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/02/Constants.jpg"><img alt="Constants 300x129 Constants Pattern" class="alignnone size-medium wp-image-652" height="129" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/02/Constants-300x129.jpg" title="Constants Pattern" width="300" /></a><br />
<h1 class="pn-page-title">
<span style="font-size: large;"> </span></h1>
Source : IBM<br />
<br />
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com1tag:blogger.com,1999:blog-44619120687887377.post-12412844229993138222015-06-02T23:05:00.004+05:302015-06-02T23:05:30.196+05:30IBM BPM - Functional Architecture<div dir="ltr" style="text-align: left;" trbidi="on">
<h2>
<span style="font-size: large;">Design Pattern</span></h2>
IBM BPM provides business process governance by leveraging existing
legacy systems and data sources within organisations. IBM BPM is not
intended to be the master of record nor replace existing systems and
data sources, instead it integrates with these legacy assets, as
illustrated in figure 1 (left-hand side). IBM BPM is a server-side
application and provides its human interface by leveraging thin-client
web browser technology supported by modern desktop computers and mobile
devices. Figure 1 (right-hand-side) illustrates how a IBM BPM solution
may be divided into a number of architectural layers. Figure 2
(left-hand-side) illustrates where various model artefacts reside within
each layer of the architecture. Each layer is responsible for a
specific aspect of the solution. These model artefacts are described
within other design patterns. <br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/TW-Arch-Layers.jpg"><img alt="TW Arch Layers Layered Architecture Pattern" class="alignnone size-full wp-image-1135" height="672" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/TW-Arch-Layers.jpg" title="Layered Architecture Pattern" width="1272" /></a><br />
The basic premise of these layers is based upon the de-facto
Model-View-Controller design pattern that has been widely adopted
throughout the IT industry. The Business Process layer is responsible
for enforcing business process governance, the View layer is responsible
for providing the user interface, and the Business Object Model (BOM)
layer is responsible for providing a consistent means for accessing
business data (regardless of where the data originated). The Business
Object Model layer provides a common definition of business entities,
their relationships and behaviour. The Integration layer is responsible
for communicating with a variety of legacy systems and data sources in
order to retrieve and store data. The Integration layer is responsible
for interfacing with external systems and data sources using appropriate
technologies (such as JDBC, Web Services, and Java connectors) and
shields the other layers from having direct exposure to these
interfaces.<br />
Clients are encouraged to assemble BPM project teams with individuals
from both the Business and IT. Clients often ask which aspects of the
solution should the business be responsible for and and which aspects of
the solution should IT be responsible for. A common assumption is that
it should be possible to draw a horizontal line within the layered
architecture to indicate which layers belong to the business and which
belong to IT. In reality both parties are responsible for all layers
within the architecture but the emphasis changes within each each layer,
as illustrated in Figure 2 (right-hand-side). The diagram illustrates
the division of responsibility with a diagonal line that passes through
all the layers. The business has greater responsibility within the
layers towards the the top of the architecture and IT has greater
responsibility within the layers towards the bottom of the architecture.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/TW-Artefacts-Responsibility.jpg"><img alt="TW Artefacts Responsibility Layered Architecture Pattern" class="alignnone size-full wp-image-1136" height="672" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/TW-Artefacts-Responsibility.jpg" title="Layered Architecture Pattern" width="1272" /></a><br />
Figure 3 illustrates how data is passed between the layers
(left-hand-side) and how data is transformed between the layers
(right-hand-side). Each legacy asset usually has its own definition for
representing business data. The Integration layer shields the other
layers from these different data models and is responsible for
transforming business data into the common Business Object Model.
Similarly, the View layer may need to provide different ways of
presenting data based upon the common Business Object Model. The View
layer is responsible for translating data between the Business Object
Model and the data structures required to support the various user
interfaces. IBM BPM combines business data with coach definitions and
automatically transforms it into HTML pages that are displayed within
the web browser and vice-versa.<br />
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Data-Flow-vs-Data-Transformation.jpg"><img alt="Data Flow vs Data Transformation Layered Architecture Pattern" class="alignnone size-full wp-image-1137" height="672" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/Data-Flow-vs-Data-Transformation.jpg" title="Layered Architecture Pattern" width="1272" /></a><br />
<h2>
<span style="font-size: small;"> </span></h2>
<br />
<h1 class="pn-page-title">
<span style="font-size: large;">Reference Architecture</span></h1>
<h2>
<span style="font-size: small;">Purpose</span></h2>
<em></em>
The reference architecture depicts typical cases of a functional
architecture in traditional BPM projects.This can be taken as reference,
guideline and best practice to create the application architecture on
any BPM development project.There will never be a 100% pre-formed
solution, therefore this may apply for 80% of cases and case dependent
adjustment are recommended to be done.<br />
<br />
<h2>
<span style="font-size: small;"> </span></h2>
<br />
<h2>
<span style="font-size: small;">Architecture Overview</span></h2>
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/BPM-Reference-Architecture-v1.jpg"><img alt="BPM Reference Architecture v1 Reference Architecture" class="alignnone size-full wp-image-1142" height="720" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/03/BPM-Reference-Architecture-v1.jpg" title="Reference Architecture" width="960" /></a><br />
The blue parts depict what’s usually part of the decision process of a BPM project.<br />
The gray portion shows the pieces of the architecture that are usually
out of scope to be designed by a BPM project are mostly part of a
Enterprise Architecture initiative.<br />
Most scenarios involve:<br />
<ul>
<li>BPM itself with either coaches or a third party UI.</li>
<li>A shared service environment (ESB)</li>
<li>Shared data, which can either be enterprise master data management
systems or simply other applications which have data that need to be
accessed by one or more external systems</li>
</ul>
The reference architecture is divided into 4 layers:<br />
<h2>
<span style="font-size: small;">User Interface (UI)</span></h2>
Visualization layer. <br />
Mostly coaches are being used, therefore this can almost be neglected as coaches interaction with the process out of the box.<br />
A commonly used alternative are custom UI, e.g. for mobile devices that interact with BPM using the REST API<br />
<h2>
<span style="font-size: small;">Application (App)</span></h2>
The application layer holds the logic for each business application. Whether it is process oriented or not.<br />
Business logic should always be solely held on the application layer
and NOT distributed. Common mistakes are to have business logic either
on the UI layer or even ESB.<br />
If external systems interact with BPM, this can happen through different ways.<br />
BPM can expose a service, e.g. web service, which would be called through ESB.<br />
If the actual application is a combination of a external system
together with BPM, it makes sense to interact using the WebServices API.<br />
<h2>
<span style="font-size: small;">Integration – Enterprise Service Bus (ESB)</span></h2>
The ESB or Integration Layer is the portion of a architecture that integrates a application with other applications. <br />
It is important to understand that a ESB is not a product. A ESB is a
concept of a single instance (a bus) that exist within a company which
enables you to access other enterprise services or data.<br />
A ESB can be implemented different ways.<br />
A very common and recommended way is to use existing products such as
WebSphere Message Queue (MQ), WebSphere Message Broker (MB) or
WebSphere ESB. However, it is not uncommon that clients have their own
implementation of a ESB. Often even as custom java implementation.<br />
<h2>
<span style="font-size: small;">Canonical Model</span></h2>
A ESB often implements the recommended pattern of a “canonical
model”.This simply means that the enterprise data model “lives” on the
ESB.Any application should basically implement this model. However, due
to historical growth and many other reasons, application are often not
able to do that or change their model into that fashion.For every
service call that a application can do TO the ESB, the service data
model gets the transformed into this standard model. From there it gets
transformed into the target data model (if not the same).Through this,
every transformation has only to be done once and is way more flexible
for changes and enhancements as opposed to point-to-point
transformations where every service call would have to maintained
manually.</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-85455516689979010302015-06-02T22:58:00.001+05:302015-06-02T22:58:38.774+05:30IBM BPM - Coach Views Separation of Concerns<div dir="ltr" style="text-align: left;" trbidi="on">
The following good practices are related to ensuring the right people are focused on the right things.<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: small;">Good practice – Divide the labor when you author custom coach views</span></h1>
<div dir="ltr">
Coach views are reusable user interface controls in the
coaches framework of IBM® Business Process Manager (BPM). IBM supplies a
number of stock coach views, but you can create your own coach views
for your own purposes. For these custom coach views, a good practice is
to distinguish between atomic coach views and composite coach views:</div>
<ul dir="ltr">
<li>Atomic coach views are coach views that are written with HTML and
JavaScript. These coach views should be authored by someone on your team
who is skilled in these languages. Everyone else on the development
team can reuse atomic coach views that the skilled developer authored.
Put these coach views into one toolkit for easy reuse.</li>
<li>Composite coach views are coach views that are built from other
coach views, for example a date-range coach view or user-address coach
view. These coach views can be authored by team members who do not have
HTML or JavaScript skills because authoring these coach views involves
laying out and configuring other coach views.</li>
</ul>
<div dir="ltr">
From a division-of-labor perspective, have one full- or
part-time UI expert on the team to build the relatively rare atomic
coach views; otherwise, the rest of the team can build many more
reusable, composite coach views.</div>
<div dir="ltr">
<strong>Applicable editions: </strong>Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<strong>Source:</strong> <span style="text-decoration: underline;"><a data-cke-saved-href="http://www.redbooks.ibm.com/redpieces/abstracts/sg248210.html" href="http://www.redbooks.ibm.com/redpieces/abstracts/sg248210.html" target="_blank">Leveraging the IBM BPM Coach Framework in Your Organization</a></span> (SG24-8210-00)</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-5527523813835745592015-06-02T22:53:00.001+05:302015-06-02T22:53:45.100+05:30IBM BPM - Security, Topology, Installation, Configuration, and Migration<div dir="ltr" style="text-align: left;" trbidi="on">
<h1 class="pn-page-title">
<span style="font-size: small;">1. Good practice – Plan your release-to-release migration</span></h1>
<div class="shortdesc" dir="ltr">
Before you migrate from a version or
release to another version or release, for example from V8.0.x to
V8.5.x, in any production environment, make sure that you have migrated
your staging or test environment and have tested your applications in
the new environment.</div>
<div class="p" dir="ltr">
Migrate to a new version for one or more of the following reasons:
<ul class="ul">
<li class="li">You want to improve performance.</li>
<li class="li">You need fixes that are in the new version.</li>
<li class="li">You want to use new features that are provided in the new version.</li>
<li class="li">Your existing product version is going out of service.</li>
</ul>
<div class="li">
Test your migration procedures for one or more of the following reasons:</div>
</div>
<ul class="ul">
<li class="li">You must estimate in advance the amount of downtime that
will be needed for migration. An estimate of downtime cannot be created
without testing the migration procedures.</li>
<li class="li">You want to make sure that the new version improves performance.</li>
<li class="li">You want to make sure that the fixes you require are in the new version and work as expected.</li>
<li class="li">You want to make sure that your existing applications work correctly in the new version.</li>
</ul>
<div class="li">
For more information, read <a data-cke-saved-href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.5/com.ibm.wbpm.imuc.doc/topics/cpln_mig_planning.html" href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.imuc.doc/topics/cpln_mig_planning.html" target="_blank">Planning a migration</a>.</div>
<strong>Applicable editions:</strong> Express, Standard, and Advanced<br />
<strong>Applicable releases: </strong>All<br />
<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: small;">2. Good practice – Specify configuration values in 100Custom.xml</span></h1>
<div dir="ltr">
There are a number of XML-based configuration files for IBM™ Business Process Manager that you should never directly edit:</div>
<ul dir="ltr">
<li>99Local.xml.</li>
<li>00Static.xml</li>
<li>50AppServer.xml</li>
<li>60Database.xml</li>
<li>80EventManager.xml</li>
<li>98Database.xml</li>
</ul>
<div dir="ltr">
To ensure that you do not lose changes when you migrate to a
new release, always edit the configuration values in 100Custom.xml
instead of editing the configuration values in these files directly.</div>
<div dir="ltr">
For detailed information, see <a data-cke-saved-href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/topic/com.ibm.wbpm.admin.doc/topics/managing_twks_config_settings.html" href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.admin.doc/topics/managing_twks_config_settings.html?cp=SSFPJS_8.5.6&lang=en" target="_blank">The 99Local.xml and 100Custom.xml configuration files</a>.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">3. Good practice – Use an offline process server for production</span></h1>
<div dir="ltr">
In IBM® Process Center, you can register online process
servers and offline process servers. Online process servers are
convenient for easily deploying snapshots to them by interactively using
the Process Center user interface. However, for security reasons, it is
a good practice to register the process server cell that runs your
processes in production as an offline process server. By being offline,
it prevents developers from being able to access and change the process
using Process Designer’s inspector. Furthermore, being offline enables
the Process Center and your mission-critical production server to be on
different networks.</div>
<div dir="ltr">
An acceptable alternative to using an offline Process
Server for production is to have a separate Process Center just for
online deployment to production. In this scenario, no Process Designer
users should be given security permission to access the Process Center.</div>
<div dir="ltr">
For information about how to deploy to an offline process server, see <a data-cke-saved-href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.5/com.ibm.wbpm.admin.doc/topics/releasing_installing_procs_D.html" href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.admin.doc/topics/releasing_installing_procs_D.html" target="_blank">Installing snapshots on offline process servers</a>.</div>
<div dir="ltr">
<strong>Applicable editions: </strong>Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases: </strong>All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">4. Good practice – Use the rolling upgrade option when you update IBM BPM</span></h1>
<div dir="ltr">
If you install IBM® Business Process Manager (BPM) fix
packs V7.5.1.2, V8.0.1.2, V8.5.0.1, or upgrade to V8.5.5 or V8.5.6 from
V8.5.0.1 or V8.5.5, you can use the rolling upgrade option. By using the
rolling upgrade approach, you can incrementally upgrade one process
server at a time, starting with test, then staging, and finishing with
production. The final step is to upgrade your IBM Process Center and
desktop tools. The rolling upgrade approach is safer because you can
certify one cell at a time before upgrading the next cell, and it
requires less down time for processes that are in production because you
don’t have to wait for all the servers to be upgraded and certified to
continue in-production processes.</div>
<div dir="ltr">
Note, however, that in V7.5.1.2 your process servers must
be offline, while in subsequent releases they can remain online. In all
releases, you might not be able to debug your process applications by
using IBM Process Designer until both IBM BPM Process Server and Process
Designer are at the same level.</div>
<div dir="ltr">
For more information, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.imuc.doc/topics/tmig_rolling_upgrade.html?lang=en" target="_blank">Performing a rolling upgrade</a>.</div>
<div dir="ltr">
<strong>Applicable editions: </strong>Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases: </strong>All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">5. Good-practice resource – Implement the appropriate IBM BPM production topology</span></h1>
<div dir="ltr">
Are you an IT architect or IT specialist who wants to
understand, select, and implement the appropriate production topologies
for an environment? If so, follow the step-by-step instructions to build
those topologies in the appropriate information:</div>
<div dir="ltr">
<a data-cke-saved-href="http://www.redbooks.ibm.com/abstracts/sg248135.html?Open" href="http://www.redbooks.ibm.com/abstracts/sg248135.html?Open" target="_blank">IBM Business Process Manager Version 8.0 Production Topologies</a>
– This IBM® Redbook® describes how to build production topologies for
IBM Business Process Manager (BPM) V8.0 and is an update of the existing
book IBM BPM V7.5 Production Topologies, SG24-7976.</div>
<div dir="ltr">
<a href="http://www.redbooks.ibm.com/redbooks/pdfs/sg248175.pdf" target="_blank" title="Business Process Management Deployment Guide Using IBM Business Process Manager V8.5">Business Process Management Deployment Guide Using IBM Business Process Manager V8.5</a>
– This IBM Redbook provides an introduction to designing and building
IBM Business Process Manager V8.5 environments. It introduces the
changes and new features in IBM BPM V8.5 and provides an overview of the
basic topology and components. This book also provides an overview of a
consolidated migration approach that was introduced in V8.5.</div>
<div dir="ltr">
<a data-cke-saved-href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/index.jsp?topic=%2Fcom.ibm.wbpm.imuc.doc%2Ftopics%2Ftins_inst_topologies.html" href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.6/com.ibm.wbpm.imuc.doc/topics/tins_inst_topologies.html" target="_blank">Planning your network deployment environment</a> – This topic specifically refers to the IBM Business Process Manager V8.5 production topology.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">6. Good-practice resource – Secure your IBM BPM environment</span></h1>
<div dir="ltr">
It is important to secure your IBM® Business Process Manager environment.</div>
<div dir="ltr">
If you are on IBM BPM V7.5.1, consult the IBM Redbooks® publication <a data-cke-saved-href="http://www.redbooks.ibm.com/abstracts/sg248027.html?Open" href="http://www.redbooks.ibm.com/abstracts/sg248027.html?Open" target="_blank">IBM Business Process Manager Security: Concepts and Guidance</a>,
which provides information about security that concerns an
organization’s business process management (BPM) program, common
security holes that often occur in this field, and techniques for
rectifying these holes. This book documents preferred practices and
common security hardening exercises that will help you achieve a secured
IBM BPM installation.</div>
<div dir="ltr">
If you are on IBM BPM V8.0, see <a data-cke-saved-href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r0mx/index.jsp?topic=%2Fcom.ibm.wbpm.admin.doc%2Ftopics%2Fwelcome_wps_sec.html" href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r0mx/index.jsp?topic=%2Fcom.ibm.wbpm.admin.doc%2Ftopics%2Fwelcome_wps_sec.html">Securing IBM Business Process Manager and application</a>.</div>
<div dir="ltr">
If you are on IBM BPM V8.5, see <a data-cke-saved-href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/topic/com.ibm.wbpm.admin.doc/topics/welcome_wps_sec.html" href="http://pic.dhe.ibm.com/infocenter/dmndhelp/v8r5m0/topic/com.ibm.wbpm.admin.doc/topics/welcome_wps_sec.html" target="_blank">Securing IBM Business Process Manager and applications</a>.</div>
<div dir="ltr">
If you are on IBM BPM V8.5.5, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.5/com.ibm.wbpm.imuc.doc/topics/csec_elementsofsecurity.html?cp=SSFPJS_8.5.5&lang=en" target="_blank">Application security</a> and <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.5/com.ibm.wbpm.imuc.ebpm.doc/topics/welcome_wps_sec.html?cp=SSFPJS_8.5.5&lang=en" target="_blank">Creating a secure environment</a>.</div>
<div dir="ltr">
If you are on IBM BPM V8.5.6, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.imuc.doc/topics/csec_elementsofsecurity.html?cp=SSFPJS_8.5.6&lang=en" target="_blank">Application security</a> and <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.imuc.ebpm.doc/topics/welcome_wps_sec.html?cp=SSFPJS_8.5.6&lang=en" target="_blank">Creating a secure environment</a>.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">7. Good-practice resource – Use the IBM Business
Process Manager Interactive Installation and Configuration Guide or the
Interactive Migration Guide</span></h1>
The <a href="https://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.imuc.doc/topics/bpm_roadmap_form.html" target="_blank">IBM Business Process Manager Interactive Installation and Configuration Guide</a>
takes you through the steps for installing and configuring IBM Business
Process Manager (IBM BPM) by using installation and configuration rules
and considerations that are described in other topics in the
documentation.<br />
If you are migrating business data and applications from a previous version, use the <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.6/com.ibm.wbpm.imuc.doc/topics/bpm_mig_roadmap_form.html?cp=SSFTDH_8.5.6&lang=en" target="_blank">IBM Business Process Manager Interactive Migration Guide</a>
instead. The Interactive Migration Guide generates instructions for a
complete migration, including installing and configuring IBM BPM.<br />
<b>Applicable editions: </b>Express, Standard, and Advanced<br />
<b>Applicable releases:</b> All<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<br />
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-90654405745047596102015-06-02T22:43:00.003+05:302015-06-02T22:43:57.431+05:30IBM BPM - Performance<div dir="ltr" style="text-align: left;" trbidi="on">
<h1 class="pn-page-title">
<span style="font-size: small;">1. Good practice – Avoid excessive use of server-side JavaScript</span></h1>
<div dir="ltr">
Avoid large server-side JavaScript blocks within BPDs and
services, because JavaScript is interpreted and therefore is slower to
process than other compiled mechanisms, such as Java™ code.</div>
<div dir="ltr">
Furthermore, large JavaScript scripts often indicate that
too much integration logic is being placed in the business process layer
instead of having that logic encapsulated in Java code, or in an
Advanced Integration service if you are using IBM™ Business Process
Manager Advanced, or externally in an Enterprise Service Bus.</div>
<div dir="ltr">
Beyond performance concerns, complex JavaScript runs the
risk of infinite loops and other coding errors that are hard to triage
and recover from.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, Advanced.</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">2. Good practice – Avoid large business objects in a process or service</span></h1>
<div dir="ltr">
Business processes in IBM® Business Process Manager should
store only the data that is needed for the process or a service in the
process as the process runs. Avoid large “cargo” object data being
carried through the process because that data needs to be persisted as
process instance state.</div>
<div dir="ltr">
When large amounts of data are stored as variables, they
use memory and disk space in the process database, require serializing
and deserializing, and they will be copied on by-value invocations.
According to the <a data-cke-saved-href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" href="http://www.redbooks.ibm.com/abstracts/SG248216.html?Open" target="_blank" title="(Opens a PDF file)">IBM Business Process Manager V8.5 Performance Tuning and Best Practices</a>
Redpaper, “In general, objects that are 5 MB or larger might be
considered “large” and require special attention. Objects of 100 MB or
larger are “very large” and generally require significant tuning to be
processed successfully.”</div>
<div dir="ltr">
One way to avoid carrying data is to use the Claim Check
pattern; the large object is persisted in a separate system of record
and only a reference to it is used in the process. Claim Check is an
enterprise integration pattern (eaipatterns.com/StoreInLibrary.html).
For information about using the claim check pattern with BPEL, see <a data-cke-saved-href="http://www.ibm.com/developerworks/websphere/library/techarticles/1006_kharlamov/1006_kharlamov.html" href="http://www.ibm.com/developerworks/websphere/library/techarticles/1006_kharlamov/1006_kharlamov.html" target="_blank" title="(Opens in a new tab or window)">Improving application efficiency with the Claim Check pattern in WebSphere Integration Developer V6.2.0.1</a>.</div>
<div dir="ltr">
In addition, retrieve data only when it is needed, and
carry data for only as long as it is needed. Consider the following
examples:</div>
<ul dir="ltr">
<li>A process refers to a customer and displays the customer’s address
and order history at a point in the process. If the process does not
need this information elsewhere, it should not be stored in the process;
the information should be retrieved from the system of record as
reference data before it is displayed.</li>
<li>A call to a web-service brings in 100 fields of data. The process
needs only 2 fields of this data. Ensure that the rest of the data that
is retrieved from the call is not stored and that the variables are
nulled after use so the JVM can do garbage collection.</li>
<li>A process requires a file to be uploaded by a user and added to an
Enterprise Content Management system. This scenario is best handled by
using the Document List coach view which allows uploading of a document
directly from a user’s machine without using an intermediate process or
service variable to hold the contents of the file.</li>
</ul>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">3. Good practice – Avoid multiple sequential system lane activities</span></h1>
<div dir="ltr">
In IBM® Business Process Manager, minimize the extra resources that are needed for multiple system lane transitions.</div>
<div dir="ltr">
Each system lane activity is considered a new Event Manager
task, which adds a task transition in IBM Process Server. These task
transitions are expensive. If your business process definition (BPD)
contains multiple system lane service tasks in a row, use one system
lane task that wraps the others to minimize the extra resources that
these transitions need.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<strong>Source:</strong> <a data-cke-saved-href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" href="http://www.redbooks.ibm.com/abstracts/SG248216.html?Open" target="_blank" title="(Opens a PDF file)">IBM Business Process Manager V8.5 Performance Tuning and Best Practices</a> Redpaper</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">4. Good practice – Place Process Center near where your Process Designer users are physically located</span></h1>
<div dir="ltr">
If you have a geographically disperse business process
management (BPM) development team, it is better to have regional IBM®
Process Centers than to have a single shared Process Center that is
accessed by remote Process Designer authoring clients.</div>
<div dir="ltr">
The Process Designer interacts frequently with the Process
Center for authoring tasks. For this reason, minimize network latency to
provide optimal response times. Place the Process Center in or near the
same physical location as the Process Designer users. Process Designer
clients that connect to a very remote Process Center might experience
slow performance and dropped connections.</div>
<div dir="ltr">
To share content between Process Centers, exchange .twx files or, as of IBM Business Process Manager V8.0, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.admin.doc/topics/sharing_pa_toolkit.html" target="_blank">Registering Process Centers and sharing toolkits</a>.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<strong>Source:</strong> <a data-cke-saved-href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" href="http://www.redbooks.ibm.com/abstracts/SG248216.html?Open" target="_blank" title="(Opens a PDF file)">IBM Business Process Manager V8.5 Performance Tuning and Best Practices</a> Redpaper</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">5. Good practice – Purge data regularly</span></h1>
<div dir="ltr">
If your IBM® Business Process Manager data grows without
bounds, it can over time lead to disk space issues and to performance
issues as database queries take longer and longer to process. Therefore,
it is important to have a policy of continuously removing older data.
There are a number of places within IBM BPM where data is collected.</div>
<div dir="ltr">
Consult the article <a data-cke-saved-href="http://www.ibm.com/developerworks/bpm/bpmjournal/1312_spriet/1312_spriet.html" href="http://www.ibm.com/developerworks/bpm/bpmjournal/1312_spriet/1312_spriet.html">Purging data in IBM Business Process Manager</a>
on developerWorks to understand where with the product data is
collected and how to purge it. Decide which data to purge and how often.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">6. Good practice – Use efficient SQL statements</span></h1>
<div dir="ltr">
When you write SQL statements directly in IBM® Business
Process Manager, such as from server-side JavaScript in a service,
ensure that you use typical SQL good practices for performance and
resiliency.</div>
<div dir="ltr">
<strong>Avoid using ‘SELECT * from ‘</strong></div>
<div dir="ltr">
When you use ‘SELECT * ‘ all the fields from the table or
view are returned. If the table changes, the list of fields also
changes, which might not be what you want, especially when you are
mapping directly to a business object where the new names might not
exist.</div>
<div dir="ltr">
In addition, the asterisk (*) might return many columns in the results that are not needed but take up memory.</div>
<div dir="ltr">
Instead, explicitly name the columns that you want returned
as a result name, for example “SELECT <column1> AS
<result1name>, <column2> AS <result2name>”. The use of
AS means that your business object names do not need to match the
database column names and can be more meaningful. For example, CST1NAM
could map to CustomerName.</result2name></column2></result1name></column1></div>
<div dir="ltr">
<strong>Use parameter markers</strong></div>
<div dir="ltr">
Do not construct an SQL statement by concatenating variable names, such as</div>
<div dir="ltr">
“SELECT CUST_NAME FROM CUST_MAST WHERE CUST_NUM=”+tw.local.customer_number</div>
<div dir="ltr">
If you concatenate variable names, the database cannot precompile and cache the select statement because it changes every time.</div>
<div dir="ltr">
Instead, use parameter markers, such as in “SELECT CUST_NAME FROM CUST_MAST WHERE CUST_NUM=?”, and then set the parameter value.</div>
<div dir="ltr">
<strong>Better yet, wrap database access in an SOA service that is invoked remotely or by using an Advanced Integration service.</strong></div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">7. Good practice – Use query tables for BPEL processes</span></h1>
<div dir="ltr">
For BPEL process list and human task queries in IBM
WebSphere® Process Server and IBM Business Process Manager (BPM)
Advanced, use composite query tables to achieve excellent response times
for high-volume task and process list queries.</div>
<div dir="ltr">
Particularly in production scenarios, use composite query
tables instead of the standard Business Process Choreographer query APIs
because composite query tables provide an abstraction over the actual
implementation of the query and, therefore, enable query optimization.
Furthermore, you can change composite query tables at run time without
redeploying the client that accesses the query table.</div>
<div dir="ltr">
For information about query tables, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.main.doc/topics/c6bpel_querytables.html?cp=SSFPJS_8.5.6&lang=en" target="_blank">Query tables in Business Process Choreographer</a>.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Source : IBM </div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-49235465594711992422015-06-02T22:33:00.001+05:302015-06-02T22:33:31.488+05:30IBM BPM - Operations<div dir="ltr" style="text-align: left;" trbidi="on">
<br /><h1 class="pn-page-title">
<span style="font-size: small;">1. Good practice – Have a plan for regularly upgrading IBM BPM</span></h1>
<div dir="ltr">
Like all software, IBM® Business Process Manager (BPM) is
constantly improving. Every so often IBM “rolls up” (consolidates) all
fixes into a new fourth digit fix pack or third digit modification
release. These releases typically contain many critical fixes.</div>
<div dir="ltr">
To avoid experiencing a serious issue that a fix was made
available for in the last, say, 10 or 12 months, have a regular plan for
updating your IBM BPM software within its current release. For example,
you might have a plan that checks for the latest service level every
six months and schedules an upgrade if one is available. If a new fix
pack or modification release is not available at that time, you can
apply the latest recommended fixes for your release instead. You can
search for the list of fixes that IBM recommends for a given release on <a data-cke-saved-href="https://www-933.ibm.com/support/fixcentral/" href="https://www-933.ibm.com/support/fixcentral/">Fix Central</a>.</div>
<div dir="ltr">
<strong>Applicable editions</strong><strong>: </strong>Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases</strong>: All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">2. Good practice – Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility</span></h1>
<div dir="ltr">
You can use the open source Head utility to browse your
Elasticsearch cluster, view the status and topology of the Elasticsearch
cluster, and perform index- and node-level operations. You can also use
the Head utility to call the Elasticsearch RESTful API. The Head
utility has been tested successfully on Firefox and Internet Explorer
browsers in this configuration. Some issues have been seen in Chrome
with requests other than HTTP GETs.</div>
<h3 dir="ltr">
Viewing Elasticsearch health and topology</h3>
<div dir="ltr">
In the <strong>Overview</strong> tab, you see the status of
the cluster, the nodes, and the indexes. Here, you see the primary
shards and the replicas for each node, the size of each index on the
node, and the number of documents that have been indexed.</div>
<div dir="ltr">
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch_Health-and-topology.jpg"><img alt="Elasticsearch Health and topology Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" class="alignnone wp-image-1253 size-full" height="463" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch_Health-and-topology.jpg" title="Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" width="889" /></a></div>
<h3 dir="ltr">
Checking index status</h3>
<div dir="ltr">
To see more in-depth information about the index, click <strong>Info</strong> and select <strong>Index Status</strong>.</div>
<div dir="ltr">
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch__Checking-index-status.jpg"><img alt="Elasticsearch Checking index status Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" class="alignnone wp-image-1254 size-full" height="514" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch__Checking-index-status.jpg" title="Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" width="462" /></a></div>
<h3 dir="ltr">
Viewing index data</h3>
<div dir="ltr">
Select the <strong>Browser</strong> tab to view index
documents and their data. To see the details and field values for a
specific document, select an index to restrict the tabular view to show
only documents from one index and then select a document within the
tabular view.</div>
<div dir="ltr">
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch__Viewing-index-data.jpg"><img alt="Elasticsearch Viewing index data Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" class="alignnone wp-image-1252 size-full" height="568" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch__Viewing-index-data.jpg" title="Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" width="1005" /></a></div>
<h3 dir="ltr">
Making REST calls</h3>
<div dir="ltr">
You can make Elasticsearch REST calls in the <strong>Any Request</strong> tab, which you do to verify the queries that the Process Federation Server made.</div>
<div dir="ltr">
<a href="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch_Making-REST-calls.jpg"><img alt="Elasticsearch Making REST calls Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" class="alignnone wp-image-1255 size-full" height="636" src="https://developer.ibm.com/bpm/wp-content/uploads/sites/31/2015/04/Elasticsearch_Making-REST-calls.jpg" title="Good practice Monitor the Process Federation Server embedded Elasticsearch service by using the Head utility" width="1002" /></a></div>
<h4 dir="ltr">
The forwarder application</h4>
<div dir="ltr">
The Elasticsearch Head utility can work with the HTTP port
of the Elasticsearch service. However, because some browsers do not
support mixed content on the same page and that the HTTP port does not
support authentication, authorization, or secure communications, keep
the Elasticsearch HTTP port disabled (the default configuration). As a
secure alternative to the Elasticsearch HTTP port, Process Federation
Server provides an application, called the <em>forwarder application</em>,
that securely forwards REST requests to the Elasticsearch service,
acting like a proxy server. However, the forwarder application forwards
the requests internally only to the Elasticsearch process that runs on
the same server. Before the forwarder application accepts Elasticsearch
HTTP requests, it checks the authorization of the user who sent the
request.</div>
<div dir="ltr">
<strong>Note: </strong>For single sign-on to work
correctly, the host name and port in the URL must be the same for both
the Head utility and the forwarder application.</div>
<h4 dir="ltr">
Ensuring security credentials can be shared</h4>
<div dir="ltr">
To ensure that security credentials can be shared across
the Elasticsearch Head utility and the forwarder application, run the
Elasticsearch Head utility from the Process Federation Server that also
hosts the forwarder application. To run the Head utility from
your Process Federation Server Liberty server installation, download the
Head utility and then repackage it into a deployable <span class="_Tgc">web application archive</span> (WAR file) that can be run on the Process Federation Server Liberty server.</div>
<div dir="ltr">
For more information about the Elasticsearch Head utility, see <a data-cke-saved-href="https://github.com/mobz/elasticsearch-head" href="https://github.com/mobz/elasticsearch-head">https://github.com/mobz/elasticsearch-head</a>.</div>
<h3 dir="ltr">
Packaging the Head utility</h3>
<ol dir="ltr">
<li>On <a data-cke-saved-href="https://github.com/mobz/elasticsearch-head" href="https://github.com/mobz/elasticsearch-head">https://github.com/mobz/elasticsearch-head</a>, click <strong>Download ZIP</strong> to download the <strong>elasticsearch-head-master.zip</strong> file.</li>
</ol>
<div dir="ltr">
2. The files contained within the zip file have a directory structure that looks like this:</div>
<div dir="ltr">
-elasticsearch-head-master</div>
<div dir="ltr">
– index.html</div>
<div dir="ltr">
– dist</div>
<div dir="ltr">
– …</div>
<div dir="ltr">
Copy the contents of the extracted zip file
under elasticsearch-head-master directory into c:\temp\eshead\
directory. The structure will look like this:</div>
<div dir="ltr">
– eshead</div>
<div dir="ltr">
– index.html</div>
<div dir="ltr">
– dist</div>
<div dir="ltr">
– …</div>
<div dir="ltr">
Notice that all the files under the elasticsearch-head-master directory are now under the new eshead directory.</div>
<div dir="ltr">
3. Create a c:\temp\eshead\WEB-INF directory:</div>
<div dir="ltr">
– eshead</div>
<div dir="ltr">
– index.html</div>
<div dir="ltr">
– WEB-INF</div>
<div dir="ltr">
– dist</div>
<div dir="ltr">
– …</div>
<div dir="ltr">
4. Create a web.xml file in the c:\temp\eshead\WEB-INF directory:</div>
<div dir="ltr">
– eshead</div>
<div dir="ltr">
– index.html</div>
<div dir="ltr">
– WEB-INF</div>
<div dir="ltr">
-web.xml</div>
<div dir="ltr">
– dist</div>
<div dir="ltr">
– …</div>
5. Edit the web.xml file and copy the following text into the file:<br />
<pre dir="ltr">
<web-app id="ESHead" version="2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>ESHead</display-name>
<description>ESHead</description>
<security-constraint>
<display-name>ESHead</display-name>
<web-resource-collection>
<web-resource-name>UIContent</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>esadmin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>esadmin</role-name>
</security-role>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
</pre>
<div dir="ltr">
6. Create a .zip file of the c:\temp\eshead\
directory and call it ESHead.war. The zip file will have the following
structure:</div>
<div dir="ltr">
– index.html</div>
<div dir="ltr">
– WEB-INF</div>
<div dir="ltr">
-web.xml</div>
<div dir="ltr">
– dist</div>
<div dir="ltr">
– …</div>
Notice that the structure does not have the elasticsearch-head-master directory.<br />
<h3 dir="ltr">
Setting up the Head utility</h3>
<div dir="ltr">
To configure Process Federation Server Liberty, complete the following steps:</div>
<ol dir="ltr">
<li>Edit the server.xml file.</li>
<li>Ensure that the forwarder application feature is enabled in the <featuremanager> section:<br />
<feature>ibmPfs:federatedForwarder-1.0</feature></featuremanager></li>
<li>Ensure that the Elasticsearch port is disabled by updating the attributes of the <ibmpfs_elasticsearch> section:<br />
http.enabled=”false”</ibmpfs_elasticsearch></li>
<li>Add authorized users, groups, or special subjects in the
<authorization-roles id="”com.ibm.bpm.federated.forwarder.authorization”"> element. For
example, to allow all logged-in users to administer, monitor, and search
the Elasticsearch data, use the following configuration:
<pre dir="ltr"><authorization-roles id="com.ibm.bpm.federated.forwarder.authorization">
<security-role name="bpmadmin">
<special-subject type="ALL_AUTHENTICATED_USERS">
</special-subject></security-role>
<security-role name="bpmmonitor">
<special-subject type="ALL_AUTHENTICATED_USERS">
</special-subject></security-role>
<security-role name="bpmuser">
<special-subject type="ALL_AUTHENTICATED_USERS">
</special-subject></security-role>
</authorization-roles></pre>
</authorization-roles></li>
<li>Copy the ESHead.war file into the <code><var class="keyword varname">pfs_install_root/</var></code>usr/shared/apps directory on your Process Federation Server Liberty server.</li>
<li>Add the following sections to the server.xml file. Note that the
location is the name of the .zip file that you created previously; the
default directory is \usr\shared\apps directory. The security role that
you define must be the same as the role that is defined in the web.xml
file (in this example it is “esadmin”). You can also authorize a group
or special subject instead of a user.
<pre dir="ltr"> <webapplication contextroot="ESHead" location="ESHead.war">
<application-bnd>
<security-role name="esadmin">
<user name="uid=admin,o=defaultWIMFileBasedRealm">
</user></security-role>
</application-bnd>
</webapplication></pre>
</li>
<li>Ensure the user, group, or special subject is in the bpmadmin and
bpmmonitor security roles of the
com.ibm.bpm.federated.forwarder.authorization authorization role, as
previously described. In this example, all authenticated users have
access to the forwarder application, but only the admin user has access
to the Head utility.</li>
<li>Restart Process Federation Server Liberty.</li>
</ol>
<h3 dir="ltr">
Accessing the Head utility</h3>
<ol dir="ltr">
<li>Go to <a data-cke-saved-href="https://varadvm2.rtp.raleigh.ibm.com:9443/ESHead" href="https://varadvm2.rtp.raleigh.ibm.com:9443/ESHead">https://<host name="">:<secure port="">/ESHead</secure></host></a>.</li>
<li>In the Head utility, enter the location of the administrative forwarder application, for example <a data-cke-saved-href="https://localhost:9444/elastic-search-admin/" href="https://localhost:9444/elastic-search-admin/">https://localhost:9443/elasticsearch-admin/</a></li>
</ol>
<h1 class="pn-page-title">
<span style="font-size: small;"> Source : IBM</span></h1>
<div dir="ltr">
</div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-40111585286429879302015-06-02T22:29:00.004+05:302015-06-02T22:30:15.622+05:30IBM BPM - Methodology<div dir="ltr" style="text-align: left;" trbidi="on">
<h1 class="pn-page-title">
<span style="font-size: small;">1. Good practice – Ensure business processes have a business owner</span></h1>
<div dir="ltr">
Business process management can only succeed when there is a
close partnership between IT and business. This collaboration is most
critical when it comes to designing the processes themselves, both
capturing today’s as-is information and tomorrow’s to-be information.
Ensure that all business processes have a business owner who is the
subject matter expert for that process. This process owner should attend
all playbacks and have a final signoff on the process model.</div>
<div dir="ltr">
<b>Applicable editions: </b>Express, Standard and Advanced</div>
<div dir="ltr">
<b>Applicable releases: </b>All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">2. Good practice – Plan for and perform non-functional testing</span></h1>
<div dir="ltr">
Before going into production, ensure that you planned for
and tested non-functional aspects of your process, including response
time of the user interface, throughput, and scalability. Allot adequate
time for this phase before going to production. The test environment
should match the target production system as closely as possible, and
the use cases should represent both typical and stress scenarios that
are anticipated in production. All systems should be tuned according to
the <a data-cke-saved-href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" target="_blank">IBM BPM Performance Tuning</a> redpaper guidelines before you perform the non-functional tests.</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<span style="font-size: small;"> </span></div>
<div dir="ltr">
<b><span style="font-size: small;">3. Good practice – Plan for disaster recovery</span></b></div>
<div dir="ltr">
<br /></div>
Many factors, ranging from human error to natural disasters, could
compromise the capability of the hardware infrastructure that runs your
IBM® Business Process Manager (BPM) system. To preserve business
continuity when an entire data center is lost, it is important to have a
disaster recovery plan. This plan describes the operational procedures
that must be followed to regularly replicate the configuration data and
the runtime data that comprise your IBM BPM system as well as the
operational procedures that must be followed when restoring the
replicated data to an alternate data center.<br />
There are several options available to IBM BPM administrators who
want to design this type of replication strategy. One such option is
described in detail in <a href="http://www.ibm.com/developerworks/bpm/bpmjournal/1409_wang/1409_wang.html" target="_blank">Storing
transaction and compensation logs in a relational database for high
availability and disaster recovery in IBM Business Process Manager</a>. But consider other strategies as well.<br />
For more information, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.mon.trbl.doc/topics/cadm_disaster_recovery.html?lang=en" target="_blank">Disaster recovery</a> and <a href="http://www.ibm.com/developerworks/bpm/library/techarticles/1504_richardson/1504_richardson.html" target="_blank">Disaster recovery guidance for IBM Business Process Manager: An updated approach for IBM BPM V8.x</a>.<br />
<b>Applicable editions: </b>Express, Standard, and Advanced<br />
<b>Applicable releases:</b> All<br />
<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: small;">4. Good-practice resource – Learn about IBM BPM from an expert</span></h1>
<div dir="ltr">
Neil Kolban is an IBM employee who focuses on the IBM
Business Process Manager and related products. Over time, he has built
and collected information related to the use of this product that he has
found to be of value and has bundled this information into a book that
is available as a PDF document that you can download. The book is
released once a month (normally on the 1st day of the month), so it is a
good practice to bookmark this page and reference it as required.</div>
<div dir="ltr">
<a data-cke-saved-href="http://www.neilkolban.com/IBM/" href="http://www.neilkolban.com/IBM/" target="_blank">Kolban’s Book on IBM BPM</a></div>
<div dir="ltr">
Although Neil is an IBM employee, please note that any
words, concepts or content may not necessarily represent the views of
IBM. This book does not replace the information center for official
product documentation</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard, Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">5. Good-practice resource – Learn about troubleshooting IBM Business Process Manager</span></h1>
<div dir="ltr">
Troubleshooting IBM® BPM issues can be complex without the correct tools and techniques. <a data-cke-saved-href="http://www.ibm.com/developerworks/bpm/bpmjournal/1312_chan/1312_chan.html" href="http://www.ibm.com/developerworks/bpm/bpmjournal/1312_chan/1312_chan.html">Troubleshooting IBM Business Process Manager</a> describes a set of tools and techniques that the IBM BPM team suggests to help you with problem determination.</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard, Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">6. Good-practice resource – New to IBM BPM? Start with the Hiring tutorial</span></h1>
<div dir="ltr">
If you are new to IBM Business Process Manager (BPM) and on V8.5 or later, check out the new <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.main.doc/topics/cbpm_tutorial.html?cp=SSFPJS_8.5.6&lang=en" target="_blank">Hiring tutorial</a>.</div>
<div dir="ltr">
After you complete the tutorial, you will be able to do the following tasks:</div>
<ul dir="ltr">
<li>Model a process that is based on process requirements.</li>
<li>Implement a process, including data variables and services that are required by the process.</li>
<li>Create the user interface for the process.</li>
<li>Conduct playbacks to validate the work that you completed.</li>
<li>Run and review the process.</li>
</ul>
<div dir="ltr">
The Hiring Tutorial covers everything that you need to know
to re-create the Hiring Sample process application that is packaged
with IBM BPM. As you go though the tutorial, you create the My Hiring
Sample process application that has a few enhancements from the packaged
Hiring Sample process application. The “Comparison with the packaged
Hiring Sample” topic covers the differences between this process
application that you create in the tutorial and the packaged Hiring
Sample process application.</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">7. Good-practice resource – Read the coaches IBM Redbooks publication</span></h1>
<div dir="ltr">
If you use IBM® Business Process Manager (BPM) next-generation coaches, which were introduced in IBM BPM V8.0, read the <a data-cke-saved-href="http://www.redbooks.ibm.com/redpieces/abstracts/sg248210.html" href="http://www.redbooks.ibm.com/redpieces/abstracts/sg248210.html" target="_blank">Leveraging the IBM BPM Coach Framework in Your Organization</a> IBM
Redbooks (SG24-8210-00) publication that focuses on this subject to
learn about how to develop coaches and find out about the various tips
and good practices.</div>
<div dir="ltr">
<b>Applicable editions: </b>Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases: </b>V8.0 and later</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">8. Good-practice resource – Use the IBM BPM Center of Excellence and Program to Project Redbooks</span></h1>
<div dir="ltr">
To succeed with IBM® Business Process Manager (BPM) beyond
your first project, ensure that you are prepared and organized for
success. For example, do you have the proper buy-in and participation
from the organization?</div>
<div dir="ltr">
The following timeless resources will help you expand your first project into an ongoing program:</div>
<ul dir="ltr">
<li><a data-cke-saved-href="http://www.redbooks.ibm.com/abstracts/sg247973.html" href="http://www.redbooks.ibm.com/abstracts/sg247973.html">Scaling BPM Adoption: From Project to Program with IBM Business Process Manager</a> (SG24-7973-01)</li>
<li><a href="http://www.redbooks.ibm.com/abstracts/redp4898.html?Open" target="_blank">Creating a BPM Center of Excellence (CoE)</a> (REDP-4898-00)</li>
</ul>
<div dir="ltr">
<b>Applicable editions</b><b>: </b>Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases: </b>all</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;">9. Good-practice resource – Tune your IBM BPM performance</span></h1>
<div dir="ltr">
It is imperative to your success that you read and follow the advice in the appropriate IBM Redpaper™ for your release:</div>
<div dir="ltr">
<a href="http://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg248216.html?Open" target="_blank">IBM Business Process Manager V8.5 Performance Tuning and Best Practices</a></div>
<div dir="ltr">
<a href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" target="_blank">IBM Business Process Manager V8.0 Performance Tuning and Best Practices </a></div>
<div dir="ltr">
<a href="http://www.redbooks.ibm.com/abstracts/redp4784.html?Open" target="_blank">IBM Business Process Manager V7.5 Performance Tuning and Best Practices</a></div>
<div dir="ltr">
Also see <a href="https://www.ibm.com/developerworks/community/blogs/5things/entry/5_things_to_know_about_ibm_bpm_performance_tuning?lang=en" target="_blank">5 Things to Know About IBM BPM Performance Tuning</a>.</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br />
Source : IBM</div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<br />
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
<br /></div>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-74248897038593770232015-06-02T22:14:00.004+05:302015-06-02T22:14:58.704+05:30IBM BPM - Maintainability<div dir="ltr" style="text-align: left;" trbidi="on">
<b><span style="font-size: small;">1. Good practice – Avoid mutually dependent toolkits</span></b><br />
<br />
<div dir="ltr">
In IBM® Business Process Manager, design toolkit
hierarchies to avoid mutual dependencies by factoring out common content
into its own toolkit so that the other toolkits can refer to it
independently.</div>
<div dir="ltr">
If you update the dependency on a child toolkit, you need
to take a new snapshot of that parent toolkit for the change to be
effective for whoever uses that toolkit, which can lead to a race
situation with mutually dependent toolkits. For example, when you
snapshot toolkit A, you now need to update the dependency and snapshot
toolkit B, which means that you need to update the dependency and
snapshot toolkit A. And that means that you need to update the
dependency and snapshot toolkit B. And so on.</div>
<div dir="ltr">
<strong>Applicable editions:</strong> Express, Standard, and Advanced</div>
<div dir="ltr">
<strong>Applicable releases:</strong> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
<h1 class="pn-page-title">
<span style="font-size: small;">2. Good practice – Back up your IBM BPM data regularly</span></h1>
Back up your IBM® Business Process Manager (BPM) data regularly,
particularly after you make discrete configuration changes, such as
installing a new system, applying interim fixes, deploying applications,
and changing the topology, which you would do for vertical or
horizontal scaling. It is also especially important before purging any
data. The more recent your data backup, the less work will be lost if
restoring it becomes necessary.<br />
To do the back up, shut down the cell, make sure no transaction is
pending in the databases, and then back up the IBM BPM databases (and
your relevant application databases).<br />
<strong>Applicable editions: </strong>Express, Standard, and Advanced<br />
<strong>Applicable releases:</strong> All<br />
<strong>Source:</strong> IBM<br />
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<div dir="ltr">
</div>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0tag:blogger.com,1999:blog-44619120687887377.post-36047038929360910062015-06-02T21:58:00.002+05:302015-06-02T22:11:55.439+05:30IBM BPM - High-Quality Processes<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr">
<h1 class="pn-page-title">
<span style="font-size: small;">1. Good practice – Diligently deal with faults when invoking external services</span></h1>
<br />
Well-designed external and Advanced Integration services
have modeled faults for business exceptions such as “insufficient funds”
and often have unmodeled faults for technical exceptions such as
“network failure” issues. When you are invoking services from a process,
design your process to deal with both types of faults. Typically, a
business exception can be handled in the process flow, such as by
returning to a previous step or engaging the user, whereas a system
fault might result in retrying the service or engaging a process
administrator.</div>
<div dir="ltr">
To learn more about how to model fault handling in Business
Process Modeling Notation (BPMN), search the IBM® Business Process
Manager (BPM) documentation for your release for “Handling errors in
services”.</div>
<div dir="ltr">
Also, see the following resources:</div>
<ul dir="ltr">
<li><a data-cke-saved-href="http://www.ibm.com/developerworks/websphere/library/techarticles/1105_ragava/1105_ragava.html" href="http://www.ibm.com/developerworks/websphere/library/techarticles/1105_ragava/1105_ragava.html" target="_blank">WebSphere Lombardi exception handling and logging</a></li>
<li><a data-cke-saved-href="https://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.ibpmgr/ibpmgr/8.0/ProcessDesigner/BPM80_ErrorAndTerminationHandling.pdf?dmuid=20120803145107962855" href="https://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.ibpmgr/ibpmgr/8.0/ProcessDesigner/BPM80_ErrorAndTerminationHandling.pdf?dmuid=20120803145107962855" target="_blank">“Introduction to enhanced error handling and termination handling” presentation</a></li>
</ul>
<div dir="ltr">
To learn more about how to model fault handling in Business
Process Execution Language (BPEL), search the IBM BPM documentation for
your release for “<span class="resultofText">Fault</span> handling in <span class="resultofText">BPEL</span>“.</div>
<div dir="ltr">
Also, see these developerWorks articles:</div>
<ul dir="ltr">
<li><a data-cke-saved-href="http://www.ibm.com/developerworks/websphere/library/techarticles/0810_chacko/0810_chacko.html" href="http://www.ibm.com/developerworks/websphere/library/techarticles/0810_chacko/0810_chacko.html" target="_blank">Error handling in WebSphere Process Server, Part 1: Developing an error handling strategy</a></li>
<li><a href="http://www.ibm.com/developerworks/websphere/library/techarticles/1011_toth/1011_toth.html" target="_blank">Implementing
tracing, logging, and error handling in mediation modules using
WebSphere Integration Developer and WebSphere ESB V7, Part 1 </a></li>
<li><a href="http://www.ibm.com/developerworks/websphere/library/techarticles/1108_toth/1108_toth.html" target="_blank">Tracing,
logging, and error handling in mediation modules using IBM Integration
Designer, WebSphere ESB, WebSphere Process Server, and Business Process
Manager Advanced Edition, Part 2</a></li>
<li><a href="http://www.ibm.com/developerworks/bpm/library/techarticles/1210_agrawal/1210_agrawal.html" target="_blank">Configuring error handling for Advanced Integration Services in IBM Business Process Manager Advanced V8</a></li>
</ul>
<div dir="ltr">
<br />
2.<b> <span style="font-size: small;">Good practice – Do not use IBM BPM as a system of record</span></b><br />
<br />
<div dir="ltr">
Business processes naturally use business data in the form
of variables to represent the process state and affect the process flow.
However, do not consider this data a system of record (SOR).
IBM® Business Process Manager should always work with external systems
of record to access and update data. Use the business data in a process
only for the purpose of that process; do not expose that data as an SOR
for other purposes.</div>
<div dir="ltr">
A proper SOR is architected and designed for transactional,
efficient, and safe reading and writing and reporting by one or more
users and producers. The business data in a process is merely a
temporary stateful representation of that data to affect the process
flow and user interactions. Process variables and their underlying IBM
BPM persistent data store are not designed to be used outside of that
process. Considering these process variables as the single source of
truth for that data eventually causes issues and requests for typical
transactional <a data-cke-saved-href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank">CRUD</a> access to that data that is not possible or recommended on top of the IBM BPM internal database.</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<b>Source:</b> <a data-cke-saved-href="http://soapower.com/IBMBPM/Whitepapers/IBM-BPM-BP-BestPractices-SystemOfRecord-BPM-SOR-Architecture.pdf" href="http://soapower.com/IBMBPM/Whitepapers/IBM-BPM-BP-BestPractices-SystemOfRecord-BPM-SOR-Architecture.pdf" target="_blank">System-of-Record Architecture for Process-Driven Solutions</a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
3<b>. <span style="font-size: small;">Good practice – Ensure the health of your BPMN processes by using the JavaScript loop detector and process monitor</span></b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
There are tools in IBM® Business Process Manager (BPM) that
help you ensure the health of your Business process Modeling Notation
(BPMN) processes:</div>
<div dir="ltr">
<b>JavaScript loop detector:</b> This tool is in IBM BPM V8.5.5 and available as an interim fix (see APAR<a data-cke-saved-href="http://www-01.ibm.com/support/docview.wss?uid=swg1JR48395" href="http://www-01.ibm.com/support/docview.wss?uid=swg1JR48395"> JR48395</a>)
for V8.0.1.1, V8.0.1.2, and V8.5.0.1. With this tool installed and
enabled, the engine identifies what appear to be infinite loops in
individual server-side JavaScript steps when you perform playbacks in
Process Center. If potential infinite loops are detected, you are given
an opportunity to terminate that JavaScript step without having to
restart Process Center.</div>
<div dir="ltr">
<b>Process monitor:</b> From this page on the
Process Admin Console, you can proactively and reactively detect
processes and services that are acting errantly. For more information,
see <a data-cke-saved-href="http://www.ibm.com/support/docview.wss?uid=swg27042159" href="http://www.ibm.com/support/docview.wss?uid=swg27042159" target="_blank">Monitoring processes and services in the Process Admin Console for IBM Business Process Manager (BPM)</a>.</div>
<div dir="ltr">
<b>Applicable editions:</b> Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>4. <span style="font-size: small;">Good practice – Mark system tasks for deletion when you create them</span></b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
For system tasks in your business process definitions (BPDs), select the <b>Delete task on completion </b>check
box on the Implementation tab of the properties in IBM Process
Designer. With this option selected, tasks are automatically deleted
when they complete, which can save a significant amount of data from
being persisted. Note that the default setting for this check box was
changed to selected as of IBM Business Process Manager V8.5.5.0 for
newly created system tasks.</div>
<div dir="ltr">
For user tasks in your BPDs, make a conscious decision about the <b>Clean State</b> check
box on the Implementation tab of the BPD’s properties. By default, this
option is not selected, but selecting it automatically cleans up the
context (such as variables) for the user task when it completes. If the
state is not required to be persisted and this option is selected, you
can save a significant about of database space and even speed the
migration of snapshot instances.</div>
<div dir="ltr">
<b>Applicable editions: </b>Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases</b>: All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>5.<span style="font-size: small;">Good practice – Turn off auto-tracking in BPDs if it is not required</span></b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Auto-tracking in IBM® WebSphere Lombardi Edition and IBM
Business Process Manager is important for many business process
definitions (BPDs) because it helps you gather, track, and report key
business metrics. However, an additional cost comes with auto-tracking
because these events are processed by the Performance Data Warehouse and
persisted in the database.</div>
<div dir="ltr">
Because of that cost, disable the default auto-tracking
capability for BPDs if you do not need to track and report on their
business metrics so that you can lower your costs. Also, consider
creating tracking groups to track only key business events, and then
disable auto-tracking. This approach ensures that the events that are
persisted are only those that are required for your business metrics.</div>
<div dir="ltr">
<b>Applicable editions: </b>Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases: </b>All</div>
<div dir="ltr">
<b>Source:</b> <a data-cke-saved-href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4935.pdf" href="http://www.redbooks.ibm.com/abstracts/SG248216.html?Open" target="_blank" title="(Opens a PDF file)">IBM Business Process Manager V8.5 Performance Tuning and Best Practices</a> Redpaper</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>6.<span style="font-size: small;">Good practice – Use governance processes for snapshot installations</span></b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
As of IBM Business Process Manager (BPM) V8.0, Process Center supports a special type of process called a <i>governance process</i>.
This process is installed and runs in Process Center to detect and
react when a snapshot changes status or a request is made to install a
snapshot.</div>
<div dir="ltr">
To ensure that there is visibility regarding the
installation of new snapshots, it’s a good practice to have a governance
process. For example, your governance process could ensure that the
architect and test lead both approved installing the new snapshot before
it is installed into a production environment.</div>
<div dir="ltr">
For information about governance processes, see <a href="http://www.ibm.com/support/knowledgecenter/SSFPJS_8.5.6/com.ibm.wbpm.admin.doc/topics/govern_install_intro.html?cp=SSFPJS_8.5.6&lang=en" target="_blank">Applying governance to a process application</a>.</div>
<div dir="ltr">
<b>Applicable editions: </b>Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>7.<span style="font-size: small;"> Good practice – Use IBM BPM Advanced, an
enterprise service bus, or both to expose services to your business
processes that use BPMN</span></b></div>
<div dir="ltr">
</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
<div dir="ltr">
<b><span style="font-size: small;"> </span></b>Business processes orchestrate services and people. Most
business processes require services, such as web services or REST
services, to perform their business functions. However, because IBM®
Business Process Manager (BPM) Standard is intended for the business
developer more so than the integration developer, there is limited
support in IBM BPM Standard for accessing services across different
protocols. The type system is based on JavaScript rather than XML schema
to reduce the complexity.</div>
<div dir="ltr">
Therefore, to expose services to your business processes
that use Business Process Modeling Notation (BPMN) and have
business-friendly user interfaces and protocols, use IBM BPM Advanced,
an enterprise service bus (ESB) such as IBM Integration Bus, or both.
These products allow for the complexity of integrating with enterprise
systems. They also keep dealing with various protocols and qualities of
service out of the BPMN business processes that are developed by
integration developers who use more powerful integration tools, such as
IBM Integration Designer or IBM Integration Toolkit.</div>
<div dir="ltr">
<b>Applicable editions: </b>Express, Standard, and Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>8.<span style="font-size: small;">Good practice – Use the facade pattern for Advanced Integration services</span></b></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
When you use Advanced Integration services in IBM® Business
Process Manager (BPM) Advanced, a copy of the EAR file for the
implementation of each Advanced Integration service is created for each
process app that uses it.</div>
<div dir="ltr">
For large implementations, these EAR file copies take a lot
of space. To avoid wasting space, deploy that implementation EAR file
once as part of one dedicated process app, and have a very small facade
Advanced Integration service that invokes the process app. This facade
pattern is documented in <a data-cke-saved-href="http://www.ibm.com/developerworks/websphere/bpmjournal/1112_pacholski/1112_pacholski.html" href="http://www.ibm.com/developerworks/websphere/bpmjournal/1112_pacholski/1112_pacholski.html" target="_blank" title="(Opens in a new tab or window)">Implementing the facade pattern using IBM Business Process Manager Advanced V7.5</a>. This IBM developerWorks article also applies to IBM BPM V8.0 through V8.5.5.</div>
<div dir="ltr">
This pattern is built into IBM BPM v8.5.6.</div>
<div dir="ltr">
<b>Applicable editions: </b>Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<div dir="ltr">
<b>Source: </b><a data-cke-saved-href="http://www.ibm.com/developerworks/websphere/bpmjournal/1112_pacholski/1112_pacholski.html" href="http://www.ibm.com/developerworks/websphere/bpmjournal/1112_pacholski/1112_pacholski.html" target="_blank" title="(Opens in a new tab or window)">Implementing the facade pattern using IBM Business Process Manager Advanced V7.5</a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<b>9.<span style="font-size: small;">Good practice – Use the right process for the job</span></b></div>
<div dir="ltr">
<br /></div>
It is important to use the right type of process for your
requirements. You can determine the right type of process by following
these guidelines:<br />
<ul>
<li>For human and case centric processes, use BPMN or business process definitions (BPDs).</li>
<li>If you have IBM Business Process Manager (BPM) Advanced, for
straight-through processes that contain no human tasks, use BPEL. These
processes are more efficient and can use the advanced qualities of
services and integration capability.
<ul>
<li>For straight-through processes that do not need to wait on
asynchronous services, use BPEL microflows, which are very efficient.
The entire process runs in one transaction.</li>
<li>For straight-through processes that might span a longer period of
time, perhaps because they must wait on an asynchronous response, use
BPEL long-running flows. If only a portion of the solution requires
long-running processes, separate it into both microflows and
long-running processes to maximize the use of microflows. For more
information, see <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.6/com.ibm.wbpm.wid.bpel.doc/topics/cprocess_transaction.html?cp=SSFTDH_8.5.6&lang=en" target="_blank">Transactional behavior of BPEL processes</a>.</li>
</ul>
</li>
<li>If you have only IBM BPM Express or Standard, for straight-through
processes use the BPD option (new in V8.5.5) to optimize the process for
latency. For more information, see <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.6/com.ibm.wbpm.wle.editor.doc/topics/performance_optimization.html?cp=SSFTDH_8.5.6" target="_blank">Optimizing BPD execution for latency</a>.</li>
</ul>
For more information about BPEL microflows versus long-running flows, see the topics <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.6/com.ibm.wbpm.wid.bpel.doc/topics/cprocess.html?cp=SSFTDH_8.5.6&lang=en" target="_blank">BPEL process types</a> and <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.6/com.ibm.wbpm.wid.bpel.doc/topics/clngmcro.html?lang=en" target="_blank">Choosing between a microflow and a long-running process</a>.<br />
<b>Applicable editions: </b>Express, Standard, and Advanced<br />
<b>Applicable releases: </b>All<br />
<br />
<br />
<h1 class="pn-page-title">
<span style="font-size: small;">10. Good practice – Use the sync-over-async invocation pattern with caution</span></h1>
<div dir="ltr">
When you develop advanced IBM® Business Process Manager
(BPM) applications using IBM Integration Designer, use caution when you
invoke an asynchronous component or import using a synchronous
invocation style.</div>
<div dir="ltr">
Invoking an asynchronous component or import using a
synchronous invocation style causes the infrastructure underneath to
switch from synchronous to asynchronous, often with unintended
consequences including a new transaction boundary, use of threads to
wait on the asynchronous response, and specific retry behavior if the
invocation fails. This now infamous “Sync Over Async” situation is
considered an anti-pattern because of the issues it can cause.</div>
<div dir="ltr">
Follow the instructions in <a href="http://www.ibm.com/support/knowledgecenter/SSFTDH_8.5.5/com.ibm.wbpm.main.doc/topics/csca_synchoverasynch.html" target="_blank">Synchronous over asynchronous invocation.</a></div>
<div dir="ltr">
<b>Applicable editions:</b> Advanced</div>
<div dir="ltr">
<b>Applicable releases:</b> All</div>
<h1 class="pn-page-title">
<span style="font-size: small;"> <b>Source:</b> IBM</span></h1>
<h1 class="pn-page-title">
<span style="font-size: small;"> </span></h1>
<br />
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
<div dir="ltr">
</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
</div>
</div>
</div>
Marimuthu Udhayakumarhttp://www.blogger.com/profile/09587442813131926566noreply@blogger.com0