<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEIGQHo8cCp7ImA9WhJTFkw.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534</id><updated>2012-06-25T02:28:41.478-07:00</updated><category term="Business Process Modeling Software" /><category term="Twitter" /><category term="BTM Software Solutions" /><category term="Intalio Web Service" /><category term="Twitter Post" /><category term="XSL" /><category term="PDF" /><category term="REST" /><category term="Web Services" /><category term="GlassFish" /><category term="xForms Help" /><category term="XMPP" /><category term="XPL" /><category term="XML" /><category term="Orbeon" /><category term="Doba" /><category term="BPM" /><category term="Orbeon xForms" /><category term="Twitter Icon" /><category term="soapUI" /><category term="Upload Documents" /><category term="Rich Text Editor" /><category term="Roles" /><category term="LDAP" /><category term="Database file storage" /><category term="WSDL" /><category term="RESTful Service" /><category term="openESB" /><category term="OPS" /><category term="OpenFire" /><category term="Criminal Justice Technology" /><category term="RSS Feeds" /><category term="XHTML" /><category term="Intalio" /><category term="Business Process Modeling Methodolgy" /><category term="PSI" /><category term="Task Management" /><category term="Nabble" /><category term="e-commerce" /><title>BPM Blogs - BTM Software Solutions</title><subtitle type="html">BTM Software Solutions is a consulting agency that uses Business Process Modeling Software to design, deploy and manage simple to complex business processes</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://btmnj.blogspot.com/" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/Blxz" /><feedburner:info uri="blogspot/blxz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>blogspot/Blxz</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;AkMHQX0-cCp7ImA9WhdUEks.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-7480648379025671505</id><published>2011-09-28T20:53:00.000-07:00</published><updated>2011-09-28T20:53:50.358-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T20:53:50.358-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio" /><category scheme="http://www.blogger.com/atom/ns#" term="Database file storage" /><category scheme="http://www.blogger.com/atom/ns#" term="Upload Documents" /><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon xForms" /><title>Orbeon xForms Upload/Retrieve Docs from Database</title><content type="html">The following screen cast shows how you can use the orbeon upload control to capture document information from a file and then use one submission to store the file to a database and another submission to retrieve the file from the database.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
To store the file to the database an xpl file is called which calls an xslt processor to format the input-config element of the url-generator.&amp;nbsp; The url-generator processor receieves the url of the temp file passed in on instance data dynamically created by xslt processor.&amp;nbsp; The url-generator processor grabs the file data in binary mode.&amp;nbsp; We then use an identity processor to aggregate the instance data passed in on the submission and the output of the url-generator.&amp;nbsp; We call another xlst processor to dynamically create the input-config element for the SQL processor which will insert the document into the database along with metadata about the file - mediatype, filename, size, ids, etc.&lt;br /&gt;
&lt;br /&gt;
To retrieve the document from the database we call another submission which executes another xpl file.&amp;nbsp; We pass in instance data about the row of the file we selected to be used as parameters in the sql processor.&amp;nbsp; So we call sql processor and select the appropriate document.&amp;nbsp; Then we call an xslt processor and to dynamically configure the config-input element of the http-serializer.&amp;nbsp; We call a second xslt processor to wrap the document base64Binary data with a root document element and pass as the config-data to the http-serializer.&lt;br /&gt;
&lt;br /&gt;
For assistance on your Orbeon xForms project with storing files and/or integrating with Intalio BPM workflow tool please contact us at &lt;a href="http://btmsoftwaresolutions.com/"&gt;BTM Software Solutions, LLC&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;object data="http://content.screencast.com/users/Brian_Steuhl/folders/Jing/media/aaf3e0b4-1490-406f-9a0e-ddb553ed6875/jingswfplayer.swf" height="600" id="scPlayer" type="application/x-shockwave-flash" width="900"&gt; &lt;param name="movie" value="http://content.screencast.com/users/Brian_Steuhl/folders/Jing/media/aaf3e0b4-1490-406f-9a0e-ddb553ed6875/jingswfplayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Brian_Steuhl/folders/Jing/media/aaf3e0b4-1490-406f-9a0e-ddb553ed6875/FirstFrame.jpg&amp;containerwidth=1440&amp;containerheight=866&amp;content=http://content.screencast.com/users/Brian_Steuhl/folders/Jing/media/aaf3e0b4-1490-406f-9a0e-ddb553ed6875/2011-09-28_2309.swf&amp;blurover=false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="scale" value="showall" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="base" value="http://content.screencast.com/users/Brian_Steuhl/folders/Jing/media/aaf3e0b4-1490-406f-9a0e-ddb553ed6875/" /&gt;Unable to display content. Adobe Flash is required.&lt;/object&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=nxcLHI3zKDw:-1KNmgvk31Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=nxcLHI3zKDw:-1KNmgvk31Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=nxcLHI3zKDw:-1KNmgvk31Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=nxcLHI3zKDw:-1KNmgvk31Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=nxcLHI3zKDw:-1KNmgvk31Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=nxcLHI3zKDw:-1KNmgvk31Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=nxcLHI3zKDw:-1KNmgvk31Q:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/nxcLHI3zKDw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/7480648379025671505/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2011/09/orbeon-xforms-uploadretrieve-docs-from.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7480648379025671505?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7480648379025671505?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/nxcLHI3zKDw/orbeon-xforms-uploadretrieve-docs-from.html" title="Orbeon xForms Upload/Retrieve Docs from Database" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2011/09/orbeon-xforms-uploadretrieve-docs-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EBRnk5fyp7ImA9WhZSE0w.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-3461180901063978061</id><published>2011-03-28T05:34:00.000-07:00</published><updated>2011-03-28T05:34:17.727-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-28T05:34:17.727-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="LDAP" /><category scheme="http://www.blogger.com/atom/ns#" term="XHTML" /><category scheme="http://www.blogger.com/atom/ns#" term="Roles" /><category scheme="http://www.blogger.com/atom/ns#" term="XSL" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><title>Orbeon Page Theme and Menu Items Based on User Role</title><content type="html">&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0596003692&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;Orbeon xForms when deployed within a webapp container like Tomcat can be accessed at http://localhost:8080/orbeon/.&amp;nbsp; Here you will get the pre-packaged orbeon samples which are all included in the apps directory.&amp;nbsp; Orbeon uses a combination of xml, xsl, xpl and xhtml files when displaying this web application of samples.&amp;nbsp; If you like the theme (style) applied to the web pages, but want to personalize to your web applications including the menu of applications, you need to have an understanding of what components are used within orbeon.&amp;nbsp; Below is some documentation on how I used the pre-packed files and modified them to display various orbeon resource apps based on a logged in user's role.&amp;nbsp; The files that you will need to investigate and understand are apps-list.xml, theme-examples.xl, model.xpl, web.xml&amp;nbsp; and xhtml files located within your orbeon resource apps.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Console Menu Links/Navigation Components&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Apps-list.xml&lt;/b&gt; - out of the box lists all the orbeon samples in the left navigation menu when you view orbeon web app in web browser.&amp;nbsp; Modify this file and comment out Orbeon samples and add your applications.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How is apps-list.xml used?&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The apps-list.xml file is imported into theme-plain.xsl and used to create the menu list within our web console.&amp;nbsp; In order to display only those resources the logged in user has access to, apps-list.xml was modified to include a ‘role’ attribute on the sections element and the applications element.&amp;nbsp; The section element is the heading within the menu and the application element is the actual web application resource underneath each heading.&amp;nbsp; User roles are placed within the role attribute separated by a space.&amp;nbsp; If a user is authorized to have access to an application within our web console, then the user’s role must be placed within this role attribute within apps-list.xml.&lt;br /&gt;
&lt;ol start="2" type="a"&gt;&lt;/ol&gt;&lt;b&gt;Theme-examples.xsl&lt;/b&gt;       and &lt;b&gt;{YourApplicationName}.xhtml&lt;/b&gt; - Theme-examples.xsl provides the formatting for all xhtml files within our console.&amp;nbsp; If you wish to apply a different theme, you can place a theme.xsl file with your required format at the root of each application located under the resources/apps directory.&amp;nbsp; Currently, the only application in our list of orbeon resource applications that uses a modified theme (theme.xsl) is the java-authentication application that comes with Orbeon.&amp;nbsp; You can use Orbeon's theme-plain.xsl as a starting point and modify it to suit your needs.&amp;nbsp; Since the user is not logged in at this point, no menu items should be displayed.&amp;nbsp; If you want to alter how the login screen appears, modifications to this theme.xsl and/or the appropriate xhtml file is required.&amp;nbsp; &lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Before an application's xhtml file is presented to the user, the file is sent to epilogue.xpl if the xhtml file contains a model element (&amp;lt;model&amp;gt;).&amp;nbsp; If the xhtml file does not contain a model element, then the file is just presented to the user.&amp;nbsp; The epilogue.xpl file is located in each applications page-flow.xml file.&amp;nbsp; The epiloque.xpl file processes the xhtml file.&amp;nbsp; The xForms processor converts orbeon extensions into html elements.&amp;nbsp; The epilogue.xpl file calls the theme-plain.xsl file, or your theme.xsl file, and the processed xhtml file is passed as the data input to the theme-examples.xsl.&amp;nbsp; Therefore, to access the processed xhtml file within the xsl, you traverse the html DOM with /html:head being the root node.&amp;nbsp; If you view the source code of one of your web pages, this is what is accessible to the xsl file.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So how do we get the user's role accessible to the theme-examples.xsl file?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Within each one of our xhtml files, the users credentials are stored within an instance.&amp;nbsp; This is explained further in the Access Control section which follows shortly.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xforms:instance id="security" xmlns=""&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xi:include href="input:data"/&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xforms:instance&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OR&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xforms:instance id="userInfo" xmlns=""&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xi:include href="input:data"/&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xforms:instance&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;When the form loads and authentication matches a user within our Apache DS LDAP, &amp;lt;xi:include /&amp;gt; is replaced with the login information:&lt;/div&gt;&lt;br /&gt;
&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=1565924916&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&amp;lt;xforms:instance id=”security’&amp;gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp; &amp;lt;request-security&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;auth-type&amp;gt;FORM&amp;lt;/auth-type&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;secure&amp;gt;true&amp;lt;/secure&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remote-user&amp;gt;scott&amp;lt;/remote-user&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;user-principal&amp;gt;scott&amp;lt;/user-principal&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; &amp;lt;role&amp;gt;user&amp;lt;/role&amp;gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/request-security&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;/xforms:security&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Since the xsl file does not have access to instance data, the user’s role is sent to an xforms output control immediately under the body of the xhtml file.&amp;nbsp; The style color is set to white so the control’s value is blended in with the background of the form and is not visible to the user.&amp;nbsp; If you attempt to set the relevancy of the control to false, the value will not be available to the form and therefore not available to the xsl file so that is why we just blend the role with the background color.&amp;nbsp; The xforms output control has an attribute name set to id.&amp;nbsp; The value of the attribute is set to role.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&amp;lt;xforms:output id="role" style="color:white" ref="instance('security')/role" /&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;When the xhtml is processed, the xforms output control is converted to a span html element. &amp;nbsp;This attribute is available within the span html element.&amp;nbsp;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;lt;span id="role" class="xforms-control xforms-output" style="color:white"&amp;gt;officer&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Since the theme-examples.xsl has access to the html document structure, an xsl variable called role is created &lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0596527217&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;with its value set to the xpath expression locating the span element with an attribute named id.&amp;nbsp; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&amp;lt;xsl:variable name="role" select="/xhtml:html/xhtml:body//xhtml:span[@id = 'role']" /&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;This variable is then used within the left content (list of applications) section of the xsl file to control which ‘Sections’ and ‘Applications’ are displayed to the user based on their role.&amp;nbsp; The xpath expression within this part of the xsl was modified to include an xpath contains() function which looks at the role attribute we defined within the apps-list.xml file. &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&amp;lt;xsl:for-each select="$applications/*/section[contains(@role, $role)]"&amp;gt;&lt;/div&gt;&lt;div&gt;And&lt;/div&gt;&lt;div&gt;&amp;lt;xsl:for-each select="application[contains(@role, $role)]"&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
So, depending on who logs in, we display only those resources available to them based on their role. &lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Application Access Control&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Model.xpl - The model.xpl is called for each xhtml file and is defined within the page-flow.xml.&amp;nbsp; The model.xpl file is located at the root of each application.&amp;nbsp; &lt;/div&gt;&lt;ol start="2" type="1"&gt;&lt;ol start="1" type="a"&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;div&gt;&amp;lt;page path-info="/home/" model="model.xpl" view="view.xhtml"/&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Within the model.xpl file is the orbeon request-security processor.&amp;nbsp; The request security processor extracts information about the currently logged user from the client request (Tomcat). Its configuration contains a list of roles the application developer is interested in. Only those roles will be listed in the processor's output if the role is present.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&amp;lt;p:processor name="oxf:request-security"&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p:input name="config"&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;config&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role&amp;gt;da&amp;lt;/role&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role&amp;gt;vendor&amp;lt;/role&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/config&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p:input&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p:output name="data" ref="data" debug="xxxxx"/&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p:processor&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The output of the processor is stored within the security or userInfo instance within each xhtml file as described in the theme-examples.xsl narrative.&lt;br /&gt;
&lt;br /&gt;
Web.xml - Access control to the applications is provided by adding three sections to the web.xml file: &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;In &amp;lt;security-constraint&amp;gt; you define which role (with &amp;lt;role-name&amp;gt;) is required to access which part of the application (with &amp;lt;url-pattern&amp;gt;).&lt;span style="font-family: Wingdings;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In &amp;lt;login-config&amp;gt; you define how the user will authenticate himself. In other words, what method is used to get the user name and password. This can be done either with a form in an HTML page or with standard HTTP authentication. The names of those methods are: FORM and BASIC. In the example below, the form mechanism is demonstrated &lt;/li&gt;
&lt;li&gt;In &amp;lt;security-role&amp;gt; the security roles used in &amp;lt;security-constraint&amp;gt; section are declared &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&amp;lt;security-constraint&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-name&amp;gt;User Access&amp;lt;/web-resource-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/java-authentication/&amp;lt;/url-pattern&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/home/&amp;lt;/url-pattern&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;auth-constraint&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;vendor&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;da&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;it&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;officer&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;supervisor&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;idcenter&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/auth-constraint&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security-constraint&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;login-config&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;auth-method&amp;gt;FORM&amp;lt;/auth-method&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form-login-config&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form-login-page&amp;gt;/java-authentication/login&amp;lt;/form-login-page&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form-error-page&amp;gt;/java-authentication/login-error&amp;lt;/form-error-page&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form-login-config&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/login-config&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security-role&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;vendor&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;it&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;da&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;officer&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;supervisor&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role-name&amp;gt;idcenter&amp;lt;/role-name&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security-role&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The user information is retrieved through j_security_check from Tomcat using JNDI Realm with user information and roles stored in Intalio Embedded Apache DS LDAP.&amp;nbsp; If the user is not authenticated, the page is not displayed.&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Configuration Summary&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0471753610&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;The displaying and/or hiding of menu items in the navigation bar is not intended to be security, but rather to clean up the user interface so applications a user does not have authorization for do not clutter up the screen and/or confuse the user.&amp;nbsp; &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;The log-in form with Tomcat Form Based Authentication using JNDI Realm (Apache DS LDAP) are to provide access control to our resource applications.&amp;nbsp; So if a user writes down a URL they see from another users web browser, even if they do not see the menu link based on their assigned role, they will be displayed with an access denied error page if their credentials/role does not match with the web.xml configuration file.&lt;br /&gt;
&lt;br /&gt;
This information is provided by &lt;a href="http://btmsoftwaresolutions.com/"&gt;BTM Software Solutions&lt;/a&gt;. &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=_tDlu8PLuvI:NZuG5P2HEh8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=_tDlu8PLuvI:NZuG5P2HEh8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=_tDlu8PLuvI:NZuG5P2HEh8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=_tDlu8PLuvI:NZuG5P2HEh8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=_tDlu8PLuvI:NZuG5P2HEh8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=_tDlu8PLuvI:NZuG5P2HEh8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=_tDlu8PLuvI:NZuG5P2HEh8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/_tDlu8PLuvI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/3461180901063978061/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2011/03/orbeon-page-theme-and-menu-items-based.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/3461180901063978061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/3461180901063978061?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/_tDlu8PLuvI/orbeon-page-theme-and-menu-items-based.html" title="Orbeon Page Theme and Menu Items Based on User Role" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2011/03/orbeon-page-theme-and-menu-items-based.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHQ34yeCp7ImA9WhZTEU8.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-5570738050263811883</id><published>2011-03-14T09:31:00.000-07:00</published><updated>2011-03-14T09:48:52.090-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-14T09:48:52.090-07:00</app:edited><title>Intalio with Orbeon XML Validation Service</title><content type="html">I recently created an XML validation service using Orbeon to validate XML sent into a business process.  The Intalio business process retrieves the XML from eXist XML database and then I call a REST service.  The REST service is actually an orbeon webapp that consists of an XPL file with several processors (validation processor and xsl processor) included within the XPL file.&amp;nbsp; If the XML is valid, the REST service sends back an empty error message and the process proceeds.&amp;nbsp; If the XML is invalid, the validation processor marks the element that is invalid with an error element &amp;lt;v:error&amp;gt; with some descriptive information.&amp;nbsp; Before sending back the message to Intalio I transform the validation XML output to only include information about the error.&amp;nbsp; The XML error message contains information about the XML document, the parent node of each error so user knows which element(s) contains the error, the value of that node(s) and the message contained within the &amp;lt;v:error&amp;gt; element(s) sent back from the Validation processor.&amp;nbsp; The Intalio process then sends an HTML formatted email to the user.&lt;br /&gt;
&lt;br /&gt;
Example of email:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Message: The complaint you submitted has the following errors.  Please correct these errors and then resubmit your complaint.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;OTN: R04-12345&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Officer: Police Officer1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Department: X Regional Police Department&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Defendant: Kitty Meow&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;PersonSexCode: XN Error the value is not a member of the enumeration: ("U"/"F"/"M")&lt;br /&gt;
&lt;br /&gt;
This solution was developed by BTM Software Solutions.&amp;nbsp; Our web-site address is &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://BTMSoftwareSolutions.com&lt;/a&gt; for more information.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SCCrHYy9nmU:Ed6UEhHg2FA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SCCrHYy9nmU:Ed6UEhHg2FA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SCCrHYy9nmU:Ed6UEhHg2FA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=SCCrHYy9nmU:Ed6UEhHg2FA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SCCrHYy9nmU:Ed6UEhHg2FA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=SCCrHYy9nmU:Ed6UEhHg2FA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SCCrHYy9nmU:Ed6UEhHg2FA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/SCCrHYy9nmU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/5570738050263811883/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2011/03/intalio-with-orbeon-xml-validation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5570738050263811883?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5570738050263811883?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/SCCrHYy9nmU/intalio-with-orbeon-xml-validation.html" title="Intalio with Orbeon XML Validation Service" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2011/03/intalio-with-orbeon-xml-validation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8DRXk4fCp7ImA9Wx9VF0Q.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-6840710162326529111</id><published>2011-02-03T20:11:00.000-08:00</published><updated>2011-02-03T20:14:34.734-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-03T20:14:34.734-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RSS Feeds" /><category scheme="http://www.blogger.com/atom/ns#" term="e-commerce" /><category scheme="http://www.blogger.com/atom/ns#" term="XSL" /><category scheme="http://www.blogger.com/atom/ns#" term="Doba" /><category scheme="http://www.blogger.com/atom/ns#" term="BTM Software Solutions" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><title>XML and DOBA Products for E-Commerce</title><content type="html">I recently created an advertisement and product listing site at &lt;a href="http://btmdeals.com/"&gt;http://BTMDeals.com&lt;/a&gt;.&amp;nbsp; Some of the products I list on my site come from a wholesale provider company called Doba.&amp;nbsp; Using my background in XML, Xpath, and XSL I have come up with some creative ways to more efficiently update my web-site and list products in other marketing forums, including an &lt;a href="http://btmtravelnet.com/Documents/BTMProductsFeed.xml" title="Get Feed"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_anhYnONLcxA/TUt7BL3GIeI/AAAAAAAAADw/6-5leFnM_iY/s1600/rss.gif" /&gt;&lt;/a&gt; Feed.&amp;nbsp; Using some common open source products, I can manipulate the Doba watchlist data export to be represented in many different formats and easily uploaded or copied to sites, RSS Feeds, e.&lt;br /&gt;
&lt;br /&gt;
In the upcoming months, I hope to embark on developing an e-commerce site from scratch based on open source standards and using the technologies that I have come to learn in automating some of the mundane tasks that consume a significant amount of time for e-commerce site owners on a low budget and tight schedule.&amp;nbsp; As things progress check back often to see any new posts.&amp;nbsp; Or subscribe to this feed and look for feed titles including Doba and e-commerce.&lt;br /&gt;
&lt;br /&gt;
If you are a current Doba customer and would like to know if some of these technologies could make your e-commerce business more efficient, please contact me at &lt;a href="http://btmsoftwaresolutions.com"&gt;BTMSoftwareSolutions.com.&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=ewdxvz4Hkwg:sTGj7MnDnxw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=ewdxvz4Hkwg:sTGj7MnDnxw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=ewdxvz4Hkwg:sTGj7MnDnxw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=ewdxvz4Hkwg:sTGj7MnDnxw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=ewdxvz4Hkwg:sTGj7MnDnxw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=ewdxvz4Hkwg:sTGj7MnDnxw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=ewdxvz4Hkwg:sTGj7MnDnxw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/ewdxvz4Hkwg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/6840710162326529111/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2011/02/xml-and-doba-products-for-e-commerce.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6840710162326529111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6840710162326529111?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/ewdxvz4Hkwg/xml-and-doba-products-for-e-commerce.html" title="XML and DOBA Products for E-Commerce" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_anhYnONLcxA/TUt7BL3GIeI/AAAAAAAAADw/6-5leFnM_iY/s72-c/rss.gif" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2011/02/xml-and-doba-products-for-e-commerce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8FSXo_eCp7ImA9Wx9TFk0.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-1350748682456709817</id><published>2010-11-24T04:52:00.000-08:00</published><updated>2010-11-24T05:03:38.440-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-24T05:03:38.440-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio" /><category scheme="http://www.blogger.com/atom/ns#" term="XPL" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio Web Service" /><category scheme="http://www.blogger.com/atom/ns#" term="RESTful Service" /><title>RESTful Service From Email Using Orbeon to Intalio</title><content type="html">In a previous blog, I wrote about how you could use Intalio REST Connector to call an LDAP service created in Orbeon XPL.&amp;nbsp; In this blog I take a different tactic in using Orbeon and Intalio to meet a clients needs.&lt;br /&gt;
&lt;br /&gt;
The client project entailed creating a reminder/alerting service using Intalio as the business rules service.&amp;nbsp; If a timer expires before an updated message comes in to the process, emails are to be sent out to staff and manager.&amp;nbsp; In the email, they wanted the capability of checking a box and replying to the email which would end the Intalio Process for monitoring that case if monitoring was no longer required.&amp;nbsp; So this is what I put together for them using Intalio and Orbeon.&lt;br /&gt;
&lt;br /&gt;
When the email is sent, I format the body of the email using Intalio bpel:doXSLTransform function and in the xsl include HTML and values from the process.&amp;nbsp; As part of the html email I include a link which is formatted to call an Orbeon XPL file - a RESTful service.&amp;nbsp; In the url is the location of the service and the necessary parameters.&amp;nbsp; An example of the url format is below:&lt;br /&gt;
&lt;br /&gt;
http://{ip}:{port}/orbeon/{appName}/{pagePath}?{parameter1}={value}&amp;amp;........&lt;br /&gt;
&lt;br /&gt;
So, all this does is call the xpl file location which does the following.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;First we use an xsl processor to take the parameters from the url and put them in the pattern required by the delegation processor.&lt;/li&gt;
&lt;li&gt;The output of the xsl processor is passed to the input for the call of the delegation processor.&amp;nbsp; The delegation processor is configured to call Intalio Web Service.&lt;/li&gt;
&lt;li&gt;Intalio receives the message and responds back with the results, which in the case is just that the message was received.&lt;/li&gt;
&lt;li&gt;An xsl processor takes the result from the delegation processor and displays that result in the users browser.&lt;/li&gt;
&lt;/ol&gt;So, in this example we were able to call a web service (in this example the service endpoint was located in Intalio as part of a business process) from within an email using orbeon as the RESTful service provider.&lt;br /&gt;
&lt;br /&gt;
Thinking outside the box, Orbeon components were used without displaying one single xForms to add functionality to our process.&lt;br /&gt;
&lt;br /&gt;
If you would like more information or would like to implement something similar in your organization, contact us at http://btmsoftwaresolutions.com.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SzhUAPiTXB8:OLxa3uTC_aQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SzhUAPiTXB8:OLxa3uTC_aQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SzhUAPiTXB8:OLxa3uTC_aQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=SzhUAPiTXB8:OLxa3uTC_aQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SzhUAPiTXB8:OLxa3uTC_aQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=SzhUAPiTXB8:OLxa3uTC_aQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=SzhUAPiTXB8:OLxa3uTC_aQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/SzhUAPiTXB8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/1350748682456709817/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2010/11/restful-service-from-email-using-orbeon.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/1350748682456709817?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/1350748682456709817?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/SzhUAPiTXB8/restful-service-from-email-using-orbeon.html" title="RESTful Service From Email Using Orbeon to Intalio" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2010/11/restful-service-from-email-using-orbeon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYNRn47eip7ImA9Wx5aF0g.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-7377262355394362137</id><published>2010-11-14T09:36:00.000-08:00</published><updated>2010-11-14T09:36:37.002-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-14T09:36:37.002-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio Web Service" /><title>Intalio - Orbeon Email Service</title><content type="html">In a previous post I provided an example of how you could combine Orbeon and Intalio using rest to retrieve information from an LDAP and use it within a business process.&amp;nbsp; In this post I will describe a completed email service using this approach with the ability to send in multiple LDAP filters and send multiple emails.&lt;br /&gt;
&lt;br /&gt;
The concept was as follows - allow a process or a user to send in multiple LDAP filter criteria and send emails to all those users returned from the service.&amp;nbsp; For example, a process may want to send an email to not only one user (cn='userID'), but also that user and a everyone with the title supervisor (title='supervisor').&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Email service explained.&lt;br /&gt;
&lt;br /&gt;
Email service contract expects the following:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;A subject for the email&lt;/li&gt;
&lt;li&gt;A body for the email (can send in a nicely formatted HTML)&lt;/li&gt;
&lt;li&gt;The LDAP attribute(s) you want to filter and the value(s) - 1 to many&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;cn, userID&lt;/li&gt;
&lt;li&gt;title, supervisor&lt;/li&gt;
&lt;/ul&gt;&lt;/ol&gt;The process first counts the number of LDAP parameters being sent in and sets an in process variable to this value - $countFilters.&amp;nbsp; This variable is set within a main looping sub-process.&amp;nbsp; The main sub-process exits only when the number of loops equals the number of $countFilters.&amp;nbsp; We also set a variable $ldap to yes and the $mainLoop variable to 1.&amp;nbsp; Finally we set a variable $countNodes to 0.&amp;nbsp; This tells this email sub-process (explained next) gateway whether to call the LDAP REST service.&amp;nbsp; If $ldap set to yes, the LDAP Service is called.&amp;nbsp; If set to no, then bypass the LDAP service.&lt;br /&gt;
&lt;br /&gt;
The process then enters another sub-process (email sub-process).&amp;nbsp; The first thing this process does is set the in process variable $countNodes to $countNodes +1.&amp;nbsp; Remember $countNodes is set to 0 by default in the main sub-process because if we have multiple LDAP parameters being sent in, when the email sub-process is completed we may have to start all over again so we have to reset $countNodes.&amp;nbsp; This email sub-process will only exit when $countNodes equals count(result)&amp;nbsp; - the xpath function count() of the result nodes returned from the LDAP Rest service.&amp;nbsp; Next a gateway evaluates the $ldap variable and since we set it to yes, we call LDAP REST service.&amp;nbsp; We pass in the first filter by using the Intalio data editor and then in process variable $mainLoop to select the node position.&amp;nbsp; So, params/attribute[$mainLoop] and params/filter[$mainLoop].&amp;nbsp; LDAP returns 1 or more user information and then we start sending emails.&amp;nbsp; We use the $countNodes variable to iterate through all the potential results.&amp;nbsp; So to get the first email, we say results/result[$countNodes]/attribute[name='mail']/value.&amp;nbsp; This gives us the first person's email.&amp;nbsp; After the email is sent, we set the $ldap variable to no, because we do not need to call ldap again at this point.&amp;nbsp; If more emails are to be sent, we loop back in the email sub-process, do not go LDAP REST service because we set $ldap to no and $countNodes is now set to 2.&amp;nbsp; The next email will be sent.&amp;nbsp; If there are no emails, then $countNodes = count(result) and we exit the email sub-process.&amp;nbsp; But, if we sent in more then one LDAP filter, we loop back to the very beginning of the main sub-process because $countParams does not equal count(params).&amp;nbsp; We also set $mainLoop to 2 and $ldap variable to yes because we need to call the LDAP REST service again to get new user(s) information.&amp;nbsp; So, we take the next LDAP filters based on node position the user sent in and start the entire email sub-process over.&amp;nbsp; When email sub-process completes again, if $mainLoop = count(params), then we exit the main sub-process and the email service ends.&lt;br /&gt;
&lt;br /&gt;
You can call this email service from within an existing business process designed in Intalio or an external system since the email service generated in Intalio provides you with a WSDL.&amp;nbsp; So for example, you could call this email service from within Orbeon.&lt;br /&gt;
&lt;br /&gt;
If you would like to implement something similiar in your organization, contact BTM Software Solutions for more information.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=wU7lcKLHPnI:bIWcxltwxe0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=wU7lcKLHPnI:bIWcxltwxe0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=wU7lcKLHPnI:bIWcxltwxe0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=wU7lcKLHPnI:bIWcxltwxe0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=wU7lcKLHPnI:bIWcxltwxe0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=wU7lcKLHPnI:bIWcxltwxe0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=wU7lcKLHPnI:bIWcxltwxe0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/wU7lcKLHPnI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/7377262355394362137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2010/11/intalio-orbeon-email-service.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7377262355394362137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7377262355394362137?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/wU7lcKLHPnI/intalio-orbeon-email-service.html" title="Intalio - Orbeon Email Service" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2010/11/intalio-orbeon-email-service.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4NQX05eip7ImA9Wx5aFUU.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-8846761182383752095</id><published>2010-11-12T08:56:00.000-08:00</published><updated>2010-11-12T08:56:30.322-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-12T08:56:30.322-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="LDAP" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio Web Service" /><title>LDAP connector using Orbeon and Intalio</title><content type="html">In my business processes that I develop for customers they often want email notifications sent for alerts and or events that happen along the business process.&amp;nbsp; The user information is stored in Apache DS LDAP so the trick is getting the data in the process to be used for html emails.&amp;nbsp; I came up with a solution several months back which involved using openESB and their LDAP Binding Connector (BC) to create a composite application deployed on Glassfish Server.&amp;nbsp; The Trigger was an HTTP SOAP call which passed information to the LDAP BC and returned the desired results.&lt;br /&gt;
&lt;br /&gt;
Even though this solution got the job done, you had to download openESB, develop the composite application in Netbeans, deploy the process to GlassFish Server, etc.&amp;nbsp; More tools, possibility for errors, something else to learn, something else to support and servers running just for basic LDAP information.&lt;br /&gt;
&lt;br /&gt;
The product I use for Business Process workflow is Intalio.&amp;nbsp; And although they currently do not have an LDAP Connector, they do have a REST connector.&amp;nbsp; Another product I use is Orbeon xForms.&amp;nbsp; Orbeon does have the ability to query an LDAP through XML Pipe Line (XPL).&amp;nbsp; So how do these technologies get me my LDAP information into a Intalio Business Process without having to add Netbeans, openESB, Glassfish to my toolbox.&amp;nbsp; Let me share.&lt;br /&gt;
&lt;br /&gt;
Orbeon page-flow controller can be called from within your browser - http://localhost:8080/orbeon/ldap/rest.&amp;nbsp; If you want to filter your LDAP response, then add the parameter to your url - http://localhost:8080/orbeon/ldap/rest?cn={value}.&amp;nbsp; In the page-flow controller, construct a page element /ldap/rest and a default submission to extract the parameter from the url.&amp;nbsp; You have to create an xml file to hold these parameters.&amp;nbsp; The submission will call the ldap.xpl file which I first pass into a xsl processor to construct the filter dynamically for the ldap process.&amp;nbsp; I pass the xsl processor output to the ldap processor filter configuration.&amp;nbsp; You can build a test case and test it from your browser.&amp;nbsp; There is your RESTful LDAP service.&lt;br /&gt;
&lt;br /&gt;
So how do you integrate this with Intalio.&amp;nbsp; Well, like I said, Intalio has a REST Connector.&amp;nbsp; Take your url statement above and using Intalio REST wizard create the RESTful service in intalio.&amp;nbsp; Drop the WSDL in your process and map your elements (input parameter and response message).&amp;nbsp; You are done.&amp;nbsp; Your process will call your end point url, which will call Orbeon XPL file and return the results to Intalio.&amp;nbsp; No need to install more servers and other tools.&amp;nbsp; I just use Orbeon and Intalio.&lt;br /&gt;
&lt;br /&gt;
One note, the xml returned by Orbeon is in an empty namespace.&amp;nbsp; Intalio mapper will not recognize the variable without a namespace.&amp;nbsp; So, I had to add one more layer of transformation within the Orbeon XPL file.&amp;nbsp; After the LDAP response is returned, I pass this output to one final XSL Processor and include a namespace in the root of the xsl - xmlns="http://example.com/rest".&amp;nbsp; Then when intalio gets the data, a namespace is present and you can map the results in your business process to send out emails.&lt;br /&gt;
&lt;br /&gt;
Another tip is to use xsl within the process to pass html into the body of the email service so your clients get nicely formatted email messages.&lt;br /&gt;
&lt;br /&gt;
If you would like assistance on integrating this solution into one of your projects contact me at http://BTMSoftwareSolutions.com.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hpFafyN96v8:WjHWn_4bBlQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hpFafyN96v8:WjHWn_4bBlQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hpFafyN96v8:WjHWn_4bBlQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=hpFafyN96v8:WjHWn_4bBlQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hpFafyN96v8:WjHWn_4bBlQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=hpFafyN96v8:WjHWn_4bBlQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hpFafyN96v8:WjHWn_4bBlQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/hpFafyN96v8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/8846761182383752095/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2010/11/ldap-connector-using-orbeon-and-intalio.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/8846761182383752095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/8846761182383752095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/hpFafyN96v8/ldap-connector-using-orbeon-and-intalio.html" title="LDAP connector using Orbeon and Intalio" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2010/11/ldap-connector-using-orbeon-and-intalio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRng-fSp7ImA9Wx5XFUg.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-1216430645313091243</id><published>2010-09-15T05:38:00.000-07:00</published><updated>2010-09-15T05:38:37.655-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-15T05:38:37.655-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PDF" /><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="Rich Text Editor" /><title>Orbeon Rich Text Editor PDF tip</title><content type="html">If you are using Orbeon and create xForms and PDFs outside of form builder and form runner, then this tip might help if you come across a PDF generation error.&lt;br /&gt;
&lt;br /&gt;
When using the rich text editor, tags are placed within your xml text().&amp;nbsp; when sending this text to xsl-fo, you have to apply-templates which convert the html tags to xsl-fo structure so the formatting can be rendered.&amp;nbsp; An error that I was encountering is if a person put a double space within the text or between sentences.&amp;nbsp; The PDF would throw an error upon opening.&amp;nbsp; After looking at what was being stored in the xml, I noticed: &amp;amp;nbsp;.&amp;nbsp; This is what was throwing the error.&lt;br /&gt;
&lt;br /&gt;
To simply correct,&amp;nbsp;when the user exits the&amp;nbsp;rich text editor I called the orbeon event DOMFOcusOut.&amp;nbsp;&amp;nbsp;I thne used the setvalue to replace the same node with a copy of itself, minus the &amp;amp;nbsp;.&amp;nbsp; To do this just&amp;nbsp;use the replace function.&amp;nbsp; So something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xforms:setvalue ref="instance('yourinstance')..." value="replace(instance('yourinstance').., '&amp;amp;amp;nbsp;', ''" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I had to escape the &amp;amp; with &amp;amp;amp;.&lt;br /&gt;
&lt;br /&gt;
That is it.&amp;nbsp;Any questions&amp;nbsp;contact us.&amp;nbsp; &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com/&lt;/a&gt;.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=96YHMSHzHrQ:FFzpcUiQ11k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=96YHMSHzHrQ:FFzpcUiQ11k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=96YHMSHzHrQ:FFzpcUiQ11k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=96YHMSHzHrQ:FFzpcUiQ11k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=96YHMSHzHrQ:FFzpcUiQ11k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=96YHMSHzHrQ:FFzpcUiQ11k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=96YHMSHzHrQ:FFzpcUiQ11k:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/96YHMSHzHrQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/1216430645313091243/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2010/09/orbeon-rich-text-editor-pdf-tip.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/1216430645313091243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/1216430645313091243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/96YHMSHzHrQ/orbeon-rich-text-editor-pdf-tip.html" title="Orbeon Rich Text Editor PDF tip" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2010/09/orbeon-rich-text-editor-pdf-tip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACQXs6cSp7ImA9Wx5XEUs.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-3223482920630040347</id><published>2010-09-10T16:52:00.000-07:00</published><updated>2010-09-10T16:52:40.519-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T16:52:40.519-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GlassFish" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio Web Service" /><category scheme="http://www.blogger.com/atom/ns#" term="BPM" /><category scheme="http://www.blogger.com/atom/ns#" term="XMPP" /><category scheme="http://www.blogger.com/atom/ns#" term="PSI" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenFire" /><title>Instant Messaging with Intalio, openESB, GlassFish, PSI and OpenFire XMPP Server</title><content type="html">If you are interested in deploying an Instant Messaging component in your Intalio process, read on.&amp;nbsp; I recently was involved in a project in which a telecommunications company wanted to send instant messaging notifications when certain events where triggered (usually timers).&amp;nbsp; The architecture that was chosen was using a php script that accepted a post and then relayed the information to XMPP server.&amp;nbsp; In this scenario OpenFire XMPP server was used.&amp;nbsp;I was only responsible for developing the REST call from within Intalio which was pretty easy and straight forward.&amp;nbsp; However not being a php developer, I wanted another solution I could use in other environments.&lt;br /&gt;
&lt;br /&gt;
In a previous blog, I noted how I used openESB to create an LDAP web service Intalio could call to query for users and then send email notifications.&amp;nbsp; I have not been back to openESB in sometime, but I came across their new XMPP Binding Connector (BC).&amp;nbsp; I read some documentation and figured I could use the same design with XMPP that I did with LDAP.&amp;nbsp; Create a web service in openESB using NetBeans and then deploy the service to Glassfish Server and let Intalio call the web service.&lt;br /&gt;
&lt;br /&gt;
So, here are the basic components.&amp;nbsp; Create a project with two WSDLs and one BPEL diagram.&amp;nbsp; The first WSDL I usually call trigger, since Intalio will call this end point and trigger the invocation of the XMPP WSDL.&amp;nbsp; The WSDL will be SOAP document literal and just pass in two parameters, jabber id (jid) and message.&amp;nbsp; The BPEL process will receive the message and then assign the variables for the XMPP WSDL.&amp;nbsp; Then invoke the XMPP WSDL and you are done.&amp;nbsp; You have to add the XMPP jar files to openESB but the documentation is on openESB for you to read.&lt;br /&gt;
&lt;br /&gt;
Next take the WSDL for the trigger (SOAP document literal) and put it in your Intalio project.&amp;nbsp; Also take the schema you had to create for the WSDL and place that in Intalio.&amp;nbsp; Wire up the WSDL in the intalio mapper, deploy and test.&lt;br /&gt;
&lt;br /&gt;
I installed OpenFire XMPP server locally and used PSI XMPP Client.&amp;nbsp; Installation and set up is easy.&lt;br /&gt;
&lt;br /&gt;
Any questions, contact me at btmsoftwaresolutions.com.&amp;nbsp; Any other good XMPP uses in BPM let me know.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=kw_HZ_wfoss:Why1kfalVR8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=kw_HZ_wfoss:Why1kfalVR8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=kw_HZ_wfoss:Why1kfalVR8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=kw_HZ_wfoss:Why1kfalVR8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=kw_HZ_wfoss:Why1kfalVR8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=kw_HZ_wfoss:Why1kfalVR8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=kw_HZ_wfoss:Why1kfalVR8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/kw_HZ_wfoss" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/3223482920630040347/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2010/09/instant-messaging-with-intalio-openesb.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/3223482920630040347?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/3223482920630040347?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/kw_HZ_wfoss/instant-messaging-with-intalio-openesb.html" title="Instant Messaging with Intalio, openESB, GlassFish, PSI and OpenFire XMPP Server" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2010/09/instant-messaging-with-intalio-openesb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AAR388fip7ImA9Wx5QEUw.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-4999875640891250235</id><published>2010-08-29T14:02:00.000-07:00</published><updated>2010-08-29T14:02:26.176-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-29T14:02:26.176-07:00</app:edited><title>Open Source Award Winner - Intalio BPM</title><content type="html">Intalio wins BOSSIE award in best open source platforms and&amp;nbsp;middleware&amp;nbsp;- &lt;a href="http://www.infoworld.com/d/open-source/bossie-awards-2010-the-best-open-source-platforms-and-middleware-155¤t=8&amp;amp;last=12#slideshowTop"&gt;http://www.infoworld.com/d/open-source/bossie-awards-2010-the-best-open-source-platforms-and-middleware-155¤t=8&amp;amp;last=12#slideshowTop&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I would strongly encourage anyone researching a business process modeling product to take a look at Intalio.&amp;nbsp;&amp;nbsp;Even if you start out with their Community Edition product to gain a little insight, you can always upgrade to the Professional Edition if your business needs require additional tools and/or support.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
I have been using Intalio for three years now - both the Enterprise Edition and the Community Edition.&amp;nbsp; Implementations in the Criminal Justice Community (Police, District Attorney&amp;nbsp;and Probation) as well as the private sector with a Telecommunications Company.&amp;nbsp; If your business requires some initial support with installation and or design/modeling, please visit &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com/&lt;/a&gt;.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hZHm_wSMGFc:NGWJ7fWoiS4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hZHm_wSMGFc:NGWJ7fWoiS4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hZHm_wSMGFc:NGWJ7fWoiS4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=hZHm_wSMGFc:NGWJ7fWoiS4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hZHm_wSMGFc:NGWJ7fWoiS4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=hZHm_wSMGFc:NGWJ7fWoiS4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=hZHm_wSMGFc:NGWJ7fWoiS4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/hZHm_wSMGFc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/4999875640891250235/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2010/08/open-source-award-winner-intalio-bpm.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/4999875640891250235?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/4999875640891250235?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/hZHm_wSMGFc/open-source-award-winner-intalio-bpm.html" title="Open Source Award Winner - Intalio BPM" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2010/08/open-source-award-winner-intalio-bpm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cMR308cCp7ImA9WxNVE0U.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-7168838740508487081</id><published>2009-10-22T08:43:00.000-07:00</published><updated>2009-10-24T05:58:06.378-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-24T05:58:06.378-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Intalio Web Service" /><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon xForms" /><title>Intalio Timer - xPath Durations</title><content type="html">This is a short blog to share my experience in creating a process which uses a parallel gateway in a potentially long ongoing process to allow users to perform work while process simultaneously calls a reporting service quarterly while that process is still in progress.&amp;nbsp; Here is how I did it:&lt;br /&gt;
&lt;br /&gt;
The user form (Orbeon xForms) which kicks off the process determines the current date and using xpath sets date to either {year}-01-01T12:00:00.000, {year}-04-01T12:00:00.000,&amp;nbsp; {year}-07-01T12:00:00.000, or {year}-10-01T12:00:00.000.&amp;nbsp; If the month is 10, 11 or 12, one year is added to the current year&amp;nbsp;so reporting&amp;nbsp;quarter is in the correct year.&lt;br /&gt;
&lt;br /&gt;
So, the process recives this dateTime value and it is mapped to a process variable called reportKickOff.&amp;nbsp;&amp;nbsp;After the one parallel gateway branch a timer is placed and set to this value.&amp;nbsp; When the dateTime is reached, the process continues into a loop which first&amp;nbsp;calls&amp;nbsp;a reporting service and&amp;nbsp;after service completes encounters another timer.&amp;nbsp; Here I take the reportKickOff value and add 3 months.&amp;nbsp; So, if it was 2009-01-01T12:00:00.000 it is now 2009-04-01T12:00:00.000.&amp;nbsp; The key here in the mapper is to take the reportingDate (of type xs:dateTime) variable and map to function op:add-yearMonthDuration-to-dateTime() and then map String "P0Y3M" of type xs:yearMonthDuration() to same function.&amp;nbsp; This is then mapped to&amp;nbsp;'date'&amp;nbsp;variable in right side of mapper.&lt;br /&gt;
&lt;br /&gt;
Once this date is reached, process continues into an intermediate&amp;nbsp;event which&amp;nbsp;resets the reportKickOff variable&amp;nbsp;by adding another three months using the same technique above, the loop condition is evaluated and if condition to exit is not met, the process loops and calls the reporting service.&amp;nbsp; After the service completes, the timer is reached again and it waits&amp;nbsp;until the next quarter.&amp;nbsp; This process&amp;nbsp;repeats every&amp;nbsp;3 months&amp;nbsp;until the loop is broken.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
To end the process, both branches of parallel gateway have to complete.&amp;nbsp;&amp;nbsp;If user is done with this long ongoing process, before they reach the end of the parallel gateway I set reportKickOff variable&amp;nbsp;to currentDate() and a loop variable to exit.&amp;nbsp; By setting the reportKickOff variable to currentDate(), the timer will&amp;nbsp;release and&amp;nbsp;the reporting loop will evaluate to exit.&amp;nbsp; Both parallel branches will now meet and the entire process can complete.&amp;nbsp; Before the process ends, I call the reporting service one last time to&amp;nbsp;submit the&amp;nbsp;data for&amp;nbsp;the duration the process was in progress since last reporting period.&lt;br /&gt;
&lt;br /&gt;
If you would like to learn more information about how you can use timers and loops like this in one of your Intalio processes - contact me at &lt;a href="http://btmsoftwaresolutions.com/"&gt;BTMSoftwareSolutions.com.&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=5FgmZZLnGbM:6ksRdfjA5pk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=5FgmZZLnGbM:6ksRdfjA5pk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=5FgmZZLnGbM:6ksRdfjA5pk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=5FgmZZLnGbM:6ksRdfjA5pk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=5FgmZZLnGbM:6ksRdfjA5pk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=5FgmZZLnGbM:6ksRdfjA5pk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=5FgmZZLnGbM:6ksRdfjA5pk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/5FgmZZLnGbM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/7168838740508487081/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/10/intalio-timer-xpath-durations.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7168838740508487081?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7168838740508487081?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/5FgmZZLnGbM/intalio-timer-xpath-durations.html" title="Intalio Timer - xPath Durations" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/10/intalio-timer-xpath-durations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MFQXw7eip7ImA9WxNQFk8.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-5527317682079001648</id><published>2009-09-22T06:12:00.000-07:00</published><updated>2009-09-22T06:16:50.202-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-22T06:16:50.202-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GlassFish" /><category scheme="http://www.blogger.com/atom/ns#" term="openESB" /><title>openESB Database BC and Intalio</title><content type="html">Last week I needed to create a web service to access a MySQL database within Intalio.&amp;nbsp; I had used openESB's LDAP BC previously so I had some insight into what was required.&amp;nbsp; This blog will attempt to consolidate the pieces of information I had to find from different resources on the Internet to configure the JNDI resource and database pools within GlassFish Server so my composite application could connect to MySQL DB.&amp;nbsp; I hope this helps others.&lt;br /&gt;
&lt;br /&gt;
First make sure &lt;strong&gt;GlassFish Server&lt;/strong&gt; is running.&amp;nbsp; Then follow these steps:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Log in to the GlassFish administration console at: &lt;a href="http://%7bserver%7d:4848/login.jsf"&gt;http://%7bserver%7d:4848/login.jsf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Click on 'Resources' in left pane&lt;/li&gt;
&lt;li&gt;Click on 'JDBC'&lt;/li&gt;
&lt;li&gt;Click on 'Connection Pools'&lt;/li&gt;
&lt;li&gt;In main window add a new&amp;nbsp;Connection &amp;nbsp;Pool by clicking 'New' and enter in your pool settings&lt;/li&gt;
&lt;li&gt;Click next and configure any additional settings, then click finish - You now have a Connection Pool&lt;/li&gt;
&lt;li&gt;Click 'Ping' to test your Connection&amp;nbsp; Pool.&amp;nbsp; If Ping fails, the next tip may resolve your issue&lt;/li&gt;
&lt;/ol&gt;**** If Ping Fails ****&lt;br /&gt;
When I was creating my Connection Pool I was not successfully connecting.&amp;nbsp; I stumbled across the following tip which hoepfully will save you time.&amp;nbsp; This is what you need to do:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Make sure the MySQL Driver (mysql-connector-{version}.jar) is located in your GlassFish installation domains/domain1/lib/ext directory&lt;/li&gt;
&lt;li&gt;Restart Server&lt;/li&gt;
&lt;li&gt;Try pinging again&lt;/li&gt;
&lt;/ol&gt;NOTE:&amp;nbsp; I initially read that the MySQL jar file had to be in GlassFishESBv21/glassfish/lib when setting up JDBS resources so in my installation the jar file is there as well.&lt;br /&gt;
&lt;br /&gt;
Next you will create a JDBC Resource&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Click on 'JDBC Resources' in left pane&lt;/li&gt;
&lt;li&gt;In main window add a new JDBC resource by clicking 'New'&lt;/li&gt;
&lt;li&gt;Enter your JDBC Resource JNDI Name - JDBC/'something'&lt;/li&gt;
&lt;li&gt;Select the Connection Pool you created in previous steps&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;/ol&gt;You now have your JDBC resource configured within GlassFish which can now be used within openESB Database BC.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Start NetBeans IDE&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
First we need to make sure you have added your Database Application within GlassFish&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;In left hand pane select Services&lt;/li&gt;
&lt;li&gt;Under Databases if your Database Application is not listed, right click and choose 'New Connection'&lt;/li&gt;
&lt;li&gt;Enter in your settings for your Database Application Connection&lt;/li&gt;
&lt;/ol&gt;Next we can create a new project using openESB Database BC&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Click File -New Project -SOA- BPEL Module&lt;/li&gt;
&lt;li&gt;Give your BPEL Module a name and click finish&lt;/li&gt;
&lt;li&gt;Right click on Process Files within that BPEL Module and select New - WSDL&lt;/li&gt;
&lt;li&gt;Enter a File Name&lt;/li&gt;
&lt;li&gt;Select Concrete WSDL&lt;/li&gt;
&lt;li&gt;In Binding select 'DATABASE'&lt;/li&gt;
&lt;li&gt;In Type select the appropriate value - I used 'Prepared Statement'&lt;/li&gt;
&lt;li&gt;In URl, select the conenction you created above&lt;/li&gt;
&lt;li&gt;Type in your prepared statement and enter any parameters&lt;/li&gt;
&lt;li&gt;In the JNDI Name, type in the JDBC resource you created in the beginning of these instructions.&lt;/li&gt;
&lt;/ol&gt;That is it.&amp;nbsp; Create another WSDL (database trigger - make sure you select Concrete WSDL and choose SOAP -Document Literal to be used within Intalio) which will send in a SOAP message to invoke this Database service.&amp;nbsp; Add thsese two WSDLs to a BPEL Process within your Project.&amp;nbsp; Then add jar files from this project into a composite application, CLEAN and Build, Deploy and then Test.&lt;br /&gt;
&lt;br /&gt;
I then took the database trigger WSDL and the associated schema and placed them within Intalio.&amp;nbsp; Dropped the operation within Intalio Diagram, wired up the variables in the data mapper and deployed successfully.&lt;br /&gt;
&lt;br /&gt;
If you need more assistance, contact me at &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com/&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=3XJejMXelkM:ePOKmbjXcog:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=3XJejMXelkM:ePOKmbjXcog:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=3XJejMXelkM:ePOKmbjXcog:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=3XJejMXelkM:ePOKmbjXcog:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=3XJejMXelkM:ePOKmbjXcog:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=3XJejMXelkM:ePOKmbjXcog:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=3XJejMXelkM:ePOKmbjXcog:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/3XJejMXelkM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/5527317682079001648/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/09/openesb-jdbc-connections-and-intalio.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5527317682079001648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5527317682079001648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/3XJejMXelkM/openesb-jdbc-connections-and-intalio.html" title="openESB Database BC and Intalio" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/09/openesb-jdbc-connections-and-intalio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMASHk8cSp7ImA9WxNREkg.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-5912433099049149356</id><published>2009-09-06T10:34:00.000-07:00</published><updated>2009-09-06T10:34:09.779-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-06T10:34:09.779-07:00</app:edited><title>LDAP, Intalio and openESB</title><content type="html">This blog demostrates how LDAP data&amp;nbsp;may be accessed&amp;nbsp;with Intalio using openESB to&amp;nbsp;create composite application consisting of two web services.&lt;br /&gt;
&lt;br /&gt;
I had a business requirement in which we had to access user attributes from LDAP within Intalio Business Process.&amp;nbsp; Since Intalio does not currently offer an LDAP connector to access user attributes, I downloaded the latest version of openESB and&amp;nbsp;used the NetBeans IDE GUI to develop a BPEL module that included 2 web services to return user information stored in an LDAP.&amp;nbsp; These were the general steps involved:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Create a new SOA BPEL module project&lt;/li&gt;
&lt;li&gt;Add&amp;nbsp;LDAP WSDL&lt;/li&gt;
&lt;li&gt;Add&amp;nbsp;Trigger WSDL&lt;/li&gt;
&lt;li&gt;Updat BPEL module to include 2 web services (WSDLs defined above)&lt;/li&gt;
&lt;li&gt;Deploy project to GlassFish Server&lt;/li&gt;
&lt;/ol&gt;The Trigger WSDL is a SOAP&amp;nbsp;call defined with input and output parameters.&amp;nbsp; The LDAP WSDL is an LDAP call search with filter based on cn value (SOAP input parameter) and return value of user email attribute (reply to SOAP call).&amp;nbsp; So, SOAP message is received, BPEL assigns input message to&amp;nbsp;a variable called cn.&amp;nbsp; BPEL invokes LDAP service and passes cn value as a filter.&amp;nbsp;&amp;nbsp;Users email address (LDAP attribute) is sent back and&amp;nbsp;BPEL assigns this value to a&amp;nbsp;variable called mail.&amp;nbsp; BPEL&amp;nbsp;sends mail variable to SOAP call.&amp;nbsp; That is it.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
How does this work with Intalio.&amp;nbsp; The SOAP WSDL is imported into Intalio and placed within a diagram.&amp;nbsp; In the mapper, the SOAP input message and output message is exposed.&amp;nbsp; The users cn attribute is passed from within Intalio business process.&amp;nbsp; The call is made to the service (which resides in GlassFish server deployed from NetBeans)&amp;nbsp;and the users email is sent back to intalio process to be used to send email notifications from within Intalio.&lt;br /&gt;
&lt;br /&gt;
For more information, contact &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com/&lt;/a&gt;.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=6yCtpGTZEIk:9MbEsMBSYTQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=6yCtpGTZEIk:9MbEsMBSYTQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=6yCtpGTZEIk:9MbEsMBSYTQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=6yCtpGTZEIk:9MbEsMBSYTQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=6yCtpGTZEIk:9MbEsMBSYTQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=6yCtpGTZEIk:9MbEsMBSYTQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=6yCtpGTZEIk:9MbEsMBSYTQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/6yCtpGTZEIk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/5912433099049149356/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/09/ldap-intalio-and-openesb.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5912433099049149356?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5912433099049149356?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/6yCtpGTZEIk/ldap-intalio-and-openesb.html" title="LDAP, Intalio and openESB" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/09/ldap-intalio-and-openesb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEMRHc5eyp7ImA9WxNSF0o.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-6802924386364730989</id><published>2009-08-31T18:36:00.000-07:00</published><updated>2009-08-31T19:04:45.923-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T19:04:45.923-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Icon" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Post" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter" /><title>How to Add Twitter Post for your Blog</title><content type="html">I recently updated my Blogger 'Layout' to include a Twitter Icon to allow readers the ability to post&amp;nbsp;my blog on Twitter.&amp;nbsp; If the reader is already logged into Twitter, the Blog title and Blogger Twitter Account&amp;nbsp;account is automatically entered into the Twitter 'What Are You Doing?' text area.&amp;nbsp; I updated the code to simply open Twitter in a new window instead of in the same window as the blog post.&amp;nbsp; I also had to find a twitter image I wanted to use and update the code to point to this image.&amp;nbsp; Since I use Microsoft Office Live for my Web Site, I just stored the image in the images gallery within Microsoft Office Live and then referenced that location in the image src attribute.&amp;nbsp; Finally I added the text 'Tweet Me!'.&amp;nbsp; The code is below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a expr:href=""http://twitter.com/home?status=Reading " + data:post.title + " @BTM_SS " + data:post.url" href="http://www.blogger.com/" target="_blank" title="Tweet it on Twitter"&amp;gt;&amp;lt;img alt="Tweet This" src="http://btmsoftwaresolutions.com/images/twitter.png" /&amp;gt;Tweet Me!&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modify the code above for your specific information:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;update BTM_SS with your Twitter ID&lt;/li&gt;
&lt;li&gt;Change the following text to whatever you want&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;Reading&lt;/li&gt;
&lt;li&gt;Tweet it on Twitter&lt;/li&gt;
&lt;li&gt;Tweet This&lt;/li&gt;
&lt;li&gt;Tweet Me!&lt;/li&gt;
&lt;li&gt;replace the src location to a location of your image (even if you do not want a web-site, you can get a free Microsoft Office Live Web-site account and store the image there)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Remove target='_blank' if you do not want twitter to open in a new window&lt;/li&gt;
&lt;/ol&gt;To add this code to you blog, follow these simple steps:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Log in to your blogger account&lt;/li&gt;
&lt;li&gt;Choose Layout&lt;/li&gt;
&lt;li&gt;Click 'Edit HTML'&lt;/li&gt;
&lt;li&gt;Check the box 'Expand Widget Templates'&lt;/li&gt;
&lt;li&gt;Place code above after &lt;br /&gt;
&amp;lt;div class='post-footer'&amp;gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;Any questions, visit my web-site at &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com/&lt;/a&gt; and contact me for assistance.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=T6ypdPhyvoc:myUsfv6qlVE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=T6ypdPhyvoc:myUsfv6qlVE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=T6ypdPhyvoc:myUsfv6qlVE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=T6ypdPhyvoc:myUsfv6qlVE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=T6ypdPhyvoc:myUsfv6qlVE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=T6ypdPhyvoc:myUsfv6qlVE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=T6ypdPhyvoc:myUsfv6qlVE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/T6ypdPhyvoc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/6802924386364730989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/08/add-twitter-post-for-blog.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6802924386364730989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6802924386364730989?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/T6ypdPhyvoc/add-twitter-post-for-blog.html" title="How to Add Twitter Post for your Blog" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/08/add-twitter-post-for-blog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYNQX49eip7ImA9WxNSF04.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-6686064693765505778</id><published>2009-08-31T07:38:00.001-07:00</published><updated>2009-08-31T07:49:50.062-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T07:49:50.062-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xForms Help" /><category scheme="http://www.blogger.com/atom/ns#" term="OPS" /><category scheme="http://www.blogger.com/atom/ns#" term="Nabble" /><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon xForms" /><title>Orbeon xForms Help</title><content type="html">Orbeon xForms is an excellent product for creating web forms.  I have been using Orbeon for almost 2 years.  Orbeon continues to add functionality and enhancements which reduces the amount of code that has to be written to create functional web forms.&lt;br /&gt;&lt;br /&gt;For the new Orbeon xForm programmer, you can join the OPS (Orbeon Presentation Server) user group on Nabble.  Here you can ask questions and search previous posts to see advice and solutions.  This is a great starting point.  Orbeon also has good documentation on the product which I strongly encourage that you read, and re-read, and re-read.  After each read you will walk away with more knowledge on the product.&lt;br /&gt;&lt;br /&gt;If you still find yourself stuck getting started or have a specific question on how to use pipelines to connect to databases, xml instance passing, page navigation, creating PDF documents, etc, you can contact me at &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com&lt;/a&gt; for help.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=YegtJItvmr4:Z-ZV4bzasoA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=YegtJItvmr4:Z-ZV4bzasoA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=YegtJItvmr4:Z-ZV4bzasoA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=YegtJItvmr4:Z-ZV4bzasoA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=YegtJItvmr4:Z-ZV4bzasoA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=YegtJItvmr4:Z-ZV4bzasoA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=YegtJItvmr4:Z-ZV4bzasoA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/YegtJItvmr4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/6686064693765505778/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/08/orbeon-xforms-help.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6686064693765505778?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6686064693765505778?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/YegtJItvmr4/orbeon-xforms-help.html" title="Orbeon xForms Help" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/08/orbeon-xforms-help.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQn86eSp7ImA9WxJUF04.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-4034199557209133833</id><published>2009-07-16T00:45:00.000-07:00</published><updated>2009-07-16T01:20:23.111-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-16T01:20:23.111-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Orbeon" /><category scheme="http://www.blogger.com/atom/ns#" term="Intalio Web Service" /><category scheme="http://www.blogger.com/atom/ns#" term="WSDL" /><category scheme="http://www.blogger.com/atom/ns#" term="soapUI" /><title>Intalio Diagram Web Service and Orbeon</title><content type="html">Intalio and Orbeon yet again make my life so easy that I had to share a short blog about my late night coding. I had a thought today how I wanted to provide the ability for users to query some records and then start an Intalio business process off of one of those records. Now I did not want to develop a diagram that was a query and stick it into the processes tab of Intalio - too me a query is a query and may or may not lead to starting a process. And knowing that an Intalio Process does not have to start with a user entering data onto a form within Intalio, but may be started from any external system that can access a web service, I started down this path.&lt;br /&gt;&lt;br /&gt;In a previous project, I developed a diagram which when compiled in Intalio creates a WSDL. This WSDL was provided to a client. The client imported that wsdl into ASP.NET and after several hours of trying to figure out the ASP.NET portion - we got processes kicked off from a .NET application into Intalio. Well, I use Orbeon forms and not ASP.NET. But I figured Orbeon is a powerful program, I should be able to start an Intalio process from an external Orbeon form. Yep - and pretty easy too. This is all that it took.&lt;br /&gt;&lt;br /&gt;I had to create the diagram in Intalio which created my WSDL.&lt;br /&gt;&lt;br /&gt;I had to create one instance, one control (Trigger) and one submission in my Orbeon xForm:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A Trigger inside a repeated table which would first dynamically set an xml element and second send a Submission to the web service&lt;/li&gt;&lt;li&gt;An instance which would hold the SOAP message passed to the web service. Inside the SOAP message body is the parameter the web service is expecting which I set above using the trigger and a setvalue action.&lt;/li&gt;&lt;li&gt;A submission which would invoke the web service and send the SOAP payload &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;That was it. Real simple. And here is another trick if you need it.&lt;/p&gt;&lt;p&gt;I use the soapUI plugin in the Intalio eclispe framework - great tool. To create a new wsdl project in soapUI you just browse out to the Intalio generated WSDL. Once you double click on the request message, you get the web service end point displayed for you and in the request frame, the SOAP payload which you can just copy and place within the xform instance you are going to reference in the submission. Just make sure you have any namespaces from your SOAP message referenced in the xhtml document or you will get an error.&lt;/p&gt;&lt;p&gt;Any questions or comments drop me a line:&lt;/p&gt;&lt;p&gt;Brian Steuhl: &lt;a href="mailto:bsteuhl@btmsoftwaresolutions.com"&gt;bsteuhl@btmsoftwaresolutions.com&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=H2uSXabRTbc:YVoIYk1jW5U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=H2uSXabRTbc:YVoIYk1jW5U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=H2uSXabRTbc:YVoIYk1jW5U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=H2uSXabRTbc:YVoIYk1jW5U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=H2uSXabRTbc:YVoIYk1jW5U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=H2uSXabRTbc:YVoIYk1jW5U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=H2uSXabRTbc:YVoIYk1jW5U:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/H2uSXabRTbc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/4034199557209133833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/07/intalio-diagram-web-service-orbeon.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/4034199557209133833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/4034199557209133833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/H2uSXabRTbc/intalio-diagram-web-service-orbeon.html" title="Intalio Diagram Web Service and Orbeon" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/07/intalio-diagram-web-service-orbeon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCSHY5eyp7ImA9WxJVGE0.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-2934344248153890469</id><published>2009-06-23T20:47:00.000-07:00</published><updated>2009-07-05T07:31:09.823-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-05T07:31:09.823-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Task Management" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Business Process Modeling Software" /><category scheme="http://www.blogger.com/atom/ns#" term="BPM" /><title>Intalio BPM - Intermediate Timers and Task Management</title><content type="html">&lt;strong&gt;&lt;u&gt;Use Case:&lt;/u&gt;&lt;/strong&gt; Police electronically file a criminal complaint in which a summons is issued and the defendant has not been processed (electronically fingerprinted with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;LiveScan&lt;/span&gt;&lt;/span&gt; and Photographed). The Chief law enforcement officer of the jurisdiction wants to be able to track fingerprint compliance to monitor who has and who has not &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;been&lt;/span&gt; processed. In the current model, we are able to capture those defendants who have been processed, but have no way of updating the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;KPI&lt;/span&gt;&lt;/span&gt; dashboard on fingerprint compliance for those who have not been fingerprinted once the complaint has been electronically filed with the Court.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Proposed Solution:&lt;/u&gt;&lt;/strong&gt; Using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;BPM&lt;/span&gt;&lt;/span&gt;, extend the current model to track those defendants not processed and incorporate any rules of criminal procedure within the process that pertain to fingerprinting following the issuance of a summons.&lt;br /&gt;&lt;br /&gt;In the diagram below, a message is received after electronically filing a criminal complaint if the defendant was not processed. A task is sent to the officer filing the complaint - 'Fingerprint Pending'. Since the defendant has 5 days to report for processing, an intermediate timer between the creation of the task and the completion of the task is set to 5 days and 1 minute. An intermediate timer placed on the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;sub process&lt;/span&gt; is set to 5 days. If the defendant reports for fingerprinting within the court ordered time frame of 5 days, the officer will complete this task and the Key Performance Indicator (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;KPI&lt;/span&gt;&lt;/span&gt;) for the fingerprint compliance &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;dashboard&lt;/span&gt; will be updated. However, if 5 days passes and the task is not completed by the officer the following occurs:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The task is deleted from the officer's task list. This is accomplished by calling two (2) different services within &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Intalio&lt;/span&gt;&lt;/span&gt; - task manager service and token service. In the task manager service, there is an operation called delete and this operation will delete a given task. The delete &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;operation&lt;/span&gt;&lt;/span&gt; takes two (2) parameters, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;taskID&lt;/span&gt;&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;participantToken&lt;/span&gt;&lt;/span&gt;. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;taskID&lt;/span&gt;&lt;/span&gt; is obtained within the process from the create task response message. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;participantToken&lt;/span&gt;&lt;/span&gt; has to be retrieved using the Token Service. The token service takes two parameters, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;username&lt;/span&gt;&lt;/span&gt; and password. The administrator account has the authority to delete a task so those values are passed into the service. The response message from the token service provides the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;participantToken&lt;/span&gt;&lt;/span&gt; which can be passed into the delete operation. This will then delete the task from the officer's task list. &lt;/li&gt;&lt;li&gt;In case the officer forgot to complete this task, and the defendant was fingerprinted, we send an email from the process using an email web service informing the officer that this task was deleted and if the defendant was fingerprinted to contact the District Attorney's office immediately before bail revocation documents are forwarded to the Court.&lt;/li&gt;&lt;li&gt;A task is sent to the District Attorney's office informing them that Bail Revocation may be required due to non-compliance with a fingerprint order as a condition of bail. If the DA determines from their own investigation or from the officer that the defendant was processed, they can enter the name of the booking center and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;KPI&lt;/span&gt;&lt;/span&gt; will be updated and reflected in the fingerprint compliance dashboard. If the defendant was not processed, information retrieved from the complaint can &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;pre&lt;/span&gt;&lt;/span&gt;-populate a bail revocation web form to reduce redundant data entry. Any additional information required may be entered by the District Attorney staff. A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;pdf&lt;/span&gt;&lt;/span&gt; of the bail report can be printed from the web form and submitted to court. In the future it is possible that the document be electronically submitted to the court. &lt;/li&gt;&lt;li&gt;Finally, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;KPI&lt;/span&gt;&lt;/span&gt; is updated to reflect that a bail revocation has been filed on this defendant.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Below is a diagram of the proposed &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;work flow&lt;/span&gt;. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Diagram:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_anhYnONLcxA/SkGkJhgdQ5I/AAAAAAAAAAM/3Sq24lqcino/s1600-h/ID+Incomplete.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5350738315813143442" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 425px; CURSOR: hand; HEIGHT: 228px" alt="" src="http://3.bp.blogspot.com/_anhYnONLcxA/SkGkJhgdQ5I/AAAAAAAAAAM/3Sq24lqcino/s320/ID+Incomplete.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More info at &lt;a href="http://btmsoftwaresolutions.com/"&gt;http://btmsoftwaresolutions.com&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=9pW4fz8TuXY:CWSjsf8ZRfA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=9pW4fz8TuXY:CWSjsf8ZRfA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=9pW4fz8TuXY:CWSjsf8ZRfA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=9pW4fz8TuXY:CWSjsf8ZRfA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=9pW4fz8TuXY:CWSjsf8ZRfA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=9pW4fz8TuXY:CWSjsf8ZRfA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=9pW4fz8TuXY:CWSjsf8ZRfA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/9pW4fz8TuXY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/2934344248153890469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/06/intalio-bpm-intermediate-timers-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/2934344248153890469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/2934344248153890469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/9pW4fz8TuXY/intalio-bpm-intermediate-timers-and.html" title="Intalio BPM - Intermediate Timers and Task Management" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_anhYnONLcxA/SkGkJhgdQ5I/AAAAAAAAAAM/3Sq24lqcino/s72-c/ID+Incomplete.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/06/intalio-bpm-intermediate-timers-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AMRX06eSp7ImA9WxJWF0g.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-5311131985807401710</id><published>2009-06-12T07:54:00.000-07:00</published><updated>2009-06-23T04:16:24.311-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-23T04:16:24.311-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Criminal Justice Technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Business Process Modeling Methodolgy" /><category scheme="http://www.blogger.com/atom/ns#" term="Business Process Modeling Software" /><title>Solving Business Problems - BPM</title><content type="html">As stated in a previous blog, I am currently working on a BPM initiative in the criminal justice community. Since I could not sleep last night, I googled BPM and came across a free PDF download - BPM Basics for Dummies. A link to the download is available on my website currently under construction at &lt;a href="http://btmsoftwaresolutions.com/"&gt;BTMSoftwareSolutions.com&lt;/a&gt;. I decided to give it a read. It was only 78 pages long and you can always learn more. As it turned out, this morning I turned that reading into an email suggestion amongst our team on our current business process model. In a nutshell, this is what I stated.&lt;br /&gt;&lt;br /&gt;Our current business process model does not capture one of the significant process outcomes of filing a criminal complaint a consumer (in my situation the criminal justice community is the consumer) expects, the fingerprinting of defendants. The criminal justice community has not been very efficient at ensuring that 100% of defendants alleged to have committed a crime are fingerprinted. They have gotten better, but more needs to be done. And studies show that even a portion of the prison population currently serving sentences are for crimes they were never fingerprinted. Without fingerprinting, criminal justice agencies (Police, DA, Courts, Probation, Prisons, etc) are making decisions sometimes without all the information about a person. Without this critical information about prior offenses, the safety of our criminal justice employees and also the community are impacted.&lt;br /&gt;&lt;br /&gt;My suggestion was to indicate that processing defendants is a very important key performance indicator and a metric we can capture within our business process. Some current attempts to address the problem and increase fingerprint rates was to purchase more equipment for law enforcement agencies. But this approach does not address the root cause of the problem, the BUSINESS PROCESS, nor does it assist key stakeholders in monitoring their success in real-time on who has been and who has not been fingerprinted. By leveraging BPM with Business Activity Monitoring (BAM), metrics from within the process can be captured and displayed on a dashboard to users. Dashboards have drill down capabilities so those complaints where no fingerprints have been recorded, users may obtain more information about the defendant and the approrpiate measures taken to ensure fingperprint compliance.&lt;br /&gt;&lt;br /&gt;This is part of what BPM is all about - being flexible and agile to changing business needs or newly identified process improvements. Once the process is discussed with key stakeholders, process owners and business/system analysts, the updated business process can quickly be implemented and performance tracking monitored.&lt;br /&gt;&lt;br /&gt;Remember, modeling something that is already broken only speeds up gathering information that the process is broken. You want to measure the As-Is process to define a baseline of measurements. These measurements then can be compared to the To-Be process to determine the Return On Investment (ROI).&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=c4g28Gdvojk:QKl5tA9RBYc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=c4g28Gdvojk:QKl5tA9RBYc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=c4g28Gdvojk:QKl5tA9RBYc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=c4g28Gdvojk:QKl5tA9RBYc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=c4g28Gdvojk:QKl5tA9RBYc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=c4g28Gdvojk:QKl5tA9RBYc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=c4g28Gdvojk:QKl5tA9RBYc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/c4g28Gdvojk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/5311131985807401710/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/06/solving-business-problems-bpm-vs-money.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5311131985807401710?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/5311131985807401710?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/c4g28Gdvojk/solving-business-problems-bpm-vs-money.html" title="Solving Business Problems - BPM" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/06/solving-business-problems-bpm-vs-money.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AHR3k5cCp7ImA9WxJWF0g.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-7653588515490095591</id><published>2009-06-08T08:16:00.000-07:00</published><updated>2009-06-23T04:15:36.728-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-23T04:15:36.728-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Criminal Justice Technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Business Process Modeling Software" /><title>Probation Office Case Scenario</title><content type="html">Having worked in the Probation and Parole field for 10 years, these agencies spend a significant amount of time preparing reports for the Court. These documents often need review from a supervisor with &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;almost&lt;/span&gt; certain revisions and updates. Once completed, these reports are then shared with other criminal and non-criminal justice agencies pursuant to rules of criminal procedure and local court orders. So how does this current As-Is process look. Lets take a look at the current business process for compiling information, reviews and submissions and then compare this to what a To-Be business process might look like using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;BPM&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The current As-Is process scenario typically follows this route. An officer of the court gathers information from a local Record Management System (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;RMS&lt;/span&gt;) that holds offender information. This information is usually entered in by various personnel including support staff who enter the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;initial&lt;/span&gt; case information followed by probation officers who add &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;additional&lt;/span&gt; case information as it is collected. To prepare a report, the Probation Officer uses a text editor and redundantly types this same information which was recorded into the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;RMS&lt;/span&gt; system. The report is then printed and delivered to a supervisor for their review. If any revisions are required, the paperwork is delivered back to the officer for corrections. This cycle continues until the report is approved at which time it is forwarded to the Court. Reports thatare permitted to be shared with other criminal justice and/or non-criminal justice agencies are also forwarded, usually in paper print. If this information is valuable to those receiving agencies, they typically redundantly enter the same information into their RMS.&lt;br /&gt;&lt;br /&gt;As you can see from reading this case scenario, the process is not very efficient. From the redundant data entry, paper and printing costs, delivery costs (inter office and sometimes mail which requires postage) and the possibility of misplaced papers, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;BPM&lt;/span&gt; can allow agencies to better align their IT environment on a low budget and modify a business process as it changes. Lets look at what this To-Be process, using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;BPM&lt;/span&gt; and other open source technology could look like.&lt;br /&gt;&lt;br /&gt;An officer starts a report by logging in to their business process console and selecting the type of report (process) they would like to begin. Information from various external sources are gathered using web services to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;pre&lt;/span&gt;-compile a majority of the information, thus reducing redundant data entry. The officer can save this report if not complete and it will appear in their task list neatly organized so not to slip &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;through&lt;/span&gt; the cracks only to be remembered last minute. Once the report is complete it is submitted into the process electronically. Business rules decide on where this information flows next. If supervisor review is required, the report can go to a specific supervisor or be available to all personnel with the role of a supervisor. A supervisor can then CLAIM a report to be reviewed and the task will no longer appear in the other supervisors task list. The supervisor can make &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;determinations&lt;/span&gt; as to whether the report should be approved, revised or rejected. Based on the supervisors decision the process flow continues. If revisions were requested, the officer will receive a task and possibly an email notification that the task is waiting for them. The officer can review any comments the supervisor made and resubmit the report upon completion. Again, this cycle continues as before in the As-Is process, but paper/printing costs are reduced and tracking of the process is possible using Business Activity Monitoring (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;BAM&lt;/span&gt;). Once approved, the process continues delivering the information to those participants involved in the process - humans and systems. Web Services using XML can be integrated into the process to allow information from the process to populate other RMS.&lt;br /&gt;&lt;br /&gt;As mentioned in the To-Be process, Business Activity Monitoring (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;BAM&lt;/span&gt;) can be developed to capture key performance indicators to see if goals, objectives and/or mission statements of that organization are being met. This provides decision makers with critical data they can use to re-allocate resources, request additional resources or realign their goals and objectives based on the data collected. And since the data is being collected from within the process, no other human intervention for record keeping is required. Another added benefit that using business process management software allows for.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;BPM&lt;/span&gt; is not a panacea, but from my experience it bridges the gap between the IT developers, Business Analysts and Operational Level staff that require IT support to increase efficiency of their current business processes and activities. In addition, with the amount of open source software that is available, software costs for such a system can be substantially reduced..&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=7SjXOX5mfHw:ggJ73uk1HRM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=7SjXOX5mfHw:ggJ73uk1HRM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=7SjXOX5mfHw:ggJ73uk1HRM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=7SjXOX5mfHw:ggJ73uk1HRM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=7SjXOX5mfHw:ggJ73uk1HRM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=7SjXOX5mfHw:ggJ73uk1HRM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=7SjXOX5mfHw:ggJ73uk1HRM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/7SjXOX5mfHw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/7653588515490095591/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/06/probation-office-case-scenario.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7653588515490095591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/7653588515490095591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/7SjXOX5mfHw/probation-office-case-scenario.html" title="Probation Office Case Scenario" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/06/probation-office-case-scenario.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EAR3czcSp7ImA9WxJWF0g.&quot;"><id>tag:blogger.com,1999:blog-2174695770955142534.post-6297568640175201721</id><published>2009-06-05T10:15:00.000-07:00</published><updated>2009-06-23T04:14:06.989-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-23T04:14:06.989-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Business Process Modeling Software" /><title>Business Process Modeling</title><content type="html">Coming from a criminal justice background and commercial software product culture, accepting a new job which was focusing on open source software for Business Process Modeling felt a little daunting - and the first several months were. It has been almost two years since that leap of 'faith' and I have come into my own. I have also realized the benefits an organization may receive using this type of technology. What type of technology am I writing about - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BPM&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Intalio&lt;/span&gt;), MySQL, Apache &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;DS&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;LDAP&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Orbeon&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;xForms&lt;/span&gt;, Tomcat Server, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;eXist&lt;/span&gt; XML database. These are some of the products I have come to know over the past year.&lt;br /&gt;&lt;br /&gt;What have I been developing with these products? I am currently working on a project which models a criminal justice process that allows information sharing between external entities relying mainly on Web Services and XML. The process is modeled representing all the actors involved (humans and systems) and the decisions, rules and flow that make up that business process . The entire application development has integrated the above technologies to deliver the back-end data storage both in a relational database (MySQL) and as XML documents (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;eXist&lt;/span&gt;), web server container (Tomcat), Directory Structure for user log in credentials (Apache &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DS&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;LDAP&lt;/span&gt;), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Intalio&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;BPM&lt;/span&gt; which models the business process which creates the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;BPEL&lt;/span&gt; to deploy to Tomcat and web forms that expose all of these components to the end user - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Orbeon&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;xForms&lt;/span&gt;.&lt;br /&gt;A significant amount of XML technologies are utilized in delivering the end result - Web Service Description Language (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;WSDL&lt;/span&gt;), SOAP, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;XSLT&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;XSL&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;FO&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;XPATH&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;XQUERY&lt;/span&gt; to name a few.&lt;br /&gt;&lt;br /&gt;I often wonder about the market for such a software development using the above technologies that focuses on small to medium size businesses with limited technology budgets but with the necessity to be as efficient as possible. I hope to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_21"&gt;continue&lt;/span&gt; down this path of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;BPM&lt;/span&gt; and XML in the future and would love to hear from others on their experiences with such technologies and those who are interested in reading/learning more.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=FwrwFXiRpa8:vuCKJJqQOo4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=FwrwFXiRpa8:vuCKJJqQOo4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=FwrwFXiRpa8:vuCKJJqQOo4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=FwrwFXiRpa8:vuCKJJqQOo4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=FwrwFXiRpa8:vuCKJJqQOo4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?i=FwrwFXiRpa8:vuCKJJqQOo4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Blxz?a=FwrwFXiRpa8:vuCKJJqQOo4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Blxz?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Blxz/~4/FwrwFXiRpa8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://btmnj.blogspot.com/feeds/6297568640175201721/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://btmnj.blogspot.com/2009/06/business-process-modeling.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6297568640175201721?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2174695770955142534/posts/default/6297568640175201721?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Blxz/~3/FwrwFXiRpa8/business-process-modeling.html" title="Business Process Modeling" /><author><name>Brian Steuhl</name><uri>http://www.blogger.com/profile/10223392428799332846</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://btmnj.blogspot.com/2009/06/business-process-modeling.html</feedburner:origLink></entry></feed>
