<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7474806092396192473</id><updated>2012-02-17T00:02:12.048+02:00</updated><title type='text'>Antonis Antoniou's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-2645094240189372418</id><published>2012-02-17T00:02:00.001+02:00</published><updated>2012-02-17T00:02:12.052+02:00</updated><title type='text'>Oracle WebCenter 11g and ConcurrentModificationException</title><content type='html'>I came accross recently a very weird issue on Oracle WebCenter 11g PS4 (11.1.1.5).&lt;br /&gt;&lt;br /&gt;I had a page, with four portlets. One of them had a portlet parameter. When I tried to provide a value for that portlet parameter at runtime (using the WebCenter Administrator), i got a ConcurrentModificationException exception. Here is a snippet from the log file:&lt;br /&gt;&lt;br /&gt;java.util.ConcurrentModificationException&lt;br /&gt;at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)&lt;br /&gt;at java.util.LinkedList$ListItr.next(LinkedList.java:696)&lt;br /&gt;at oracle.portlet.client.containerimpl.event.EventManagerImpl.fireEvent(EventManagerImpl.java:117)&lt;br /&gt;&lt;br /&gt;After loggin an SR, this is a known issue and Oracle has a fix for it (patch 10427778).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-2645094240189372418?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/2645094240189372418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/02/oracle-webcenter-11g-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/2645094240189372418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/2645094240189372418'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/02/oracle-webcenter-11g-and.html' title='Oracle WebCenter 11g and ConcurrentModificationException'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-7696146379575388152</id><published>2012-02-01T18:59:00.001+02:00</published><updated>2012-02-01T18:59:42.612+02:00</updated><title type='text'>Ensuring that your ADF Application is Passivation/Activation Safe</title><content type='html'>&lt;table&gt;&lt;tr&gt;&lt;td&gt;Hi everyone,&lt;br /&gt;&lt;br /&gt;Just a quick note on passivation/activation. ADF works with two pools, Application (via AMs) and Database (via your database connection). Each time a user accesses a resource and that resource uses an AM to display data, the Application Module pool manager assigns an AM instance to the user session. If the pool runs out of connections, the AM pool Manager passivates the state of one of the sessions (either in the database or in a file), thus releasing an instance and assigning it to the new session. When the user that was passivated resumes their work, ADF will activate their state from the configured store. This is done automatically for you for all attributes that are mapped to a database column.&lt;br /&gt;&lt;br /&gt;However, for transient attributes and transient views, if you do not mark them to be passivated, their state will be lost, and during activation will be empty. You can test if your ADF application is passivation/activation safe by deselecting the “Enable Application Module Pooling” option in the “Pooling and Scalability” tab of the AM configurations. This will basically force the framework to passivate/activate your session state with every click that you perform. &lt;br/&gt;&lt;br/&gt;***NOTE*** Do not forget to enable AM pooling once you have tested your application.&lt;br /&gt;&lt;br /&gt;To mark a transient attribute that is part of a normal view to be passivated, you just need to select the “Passivate” attribute on a the view object attribute.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWUxZDcwZDEtNzRmNi00MmUyLThkNTctMTM1NzI5ODA1N2Y3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWUxZDcwZDEtNzRmNi00MmUyLThkNTctMTM1NzI5ODA1N2Y3" width="350" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the case of a transient view (programmatic) though, you need to do a couple of things:&lt;br /&gt;&lt;br /&gt;a) Mark the whole view, including all transient attributes to be passivated&lt;br/&gt;b) Make sure that the “No Rows” option is selected in the “Retrieve from the Database” section is selected&lt;br/&gt;c) Override the beforeRollback and  afterRollback methods in the ViewObjImpl class by commenting out the call to &lt;b&gt;super&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2U5ZmRjNDMtZDFiOS00ZTk4LWFiN2YtYTdmYTQzMjBkODA4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2U5ZmRjNDMtZDFiOS00ZTk4LWFiN2YtYTdmYTQzMjBkODA4" width="350" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-7696146379575388152?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/7696146379575388152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/02/ensuring-that-your-adf-application-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/7696146379575388152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/7696146379575388152'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/02/ensuring-that-your-adf-application-is.html' title='Ensuring that your ADF Application is Passivation/Activation Safe'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-795307528004061904</id><published>2012-01-27T00:02:00.002+02:00</published><updated>2012-01-27T00:02:52.868+02:00</updated><title type='text'>Oracle Fusion Middleware in a Real Life Example</title><content type='html'>This is a video that I have prepared for one of my clients some time ago to demonstratehow Oracle Fusion Middleware can be used to satisfy their businessrequirements.&lt;br /&gt;&lt;br /&gt;The client, a global provider of marine transportation services, wanted toautomate the communication process between their vessels and headquarters. Theimplementation approach had to take into account three major requirements; tominimize the network traffic between vessels and headquarters as much aspossible as ships are using satellite connection to establish connection withheadquarters which is very expensive, to automate the backend workflow andapproval process and to provide a solution that wouldn’t require any installationto take place on the vessels.&lt;br /&gt;&lt;br /&gt;The purpose of this video is not to provide step-by-step instructions onhow to implement such a solution but to give you a broad overview of thecapabilities and features of several Oracle Fusion Middleware products andtechnologies, such as Weblogic 10.3.2 as the Application Server, SOA 11g consisting ofBPEL for designing our business processes and BAM for monitoring&amp;nbsp; the business services using interactivereal-time dashboard reports, Oracle Business Intelligence 11g as the reportingsolution for generating dynamic reports, Oracle Universal Content Server 10g formanaging and filling all documents generated, Oracle Internet Directory 11g as theLDAP directory service and Oracle Database 11g as the persistence store.&lt;br /&gt;&lt;br /&gt;&lt;iframe width="480" height="360" src="http://www.youtube.com/embed/Acmjq0XTR7I" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-795307528004061904?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/795307528004061904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/01/oracle-fusion-middleware-in-real-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/795307528004061904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/795307528004061904'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/01/oracle-fusion-middleware-in-real-life.html' title='Oracle Fusion Middleware in a Real Life Example'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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://img.youtube.com/vi/Acmjq0XTR7I/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-1682083502889612722</id><published>2012-01-12T16:19:00.000+02:00</published><updated>2012-01-16T22:11:16.147+02:00</updated><title type='text'>Fusion Middleware Partner Community Forum - Feb 7th and 8th 2012 Malaga, Spain</title><content type='html'>Oracle, for the first time, organizes a combined Fusion Middleware Partner Community Forum in Malaga Spain for the SOA &amp;amp; WebCenter &amp;amp; BPM &amp;amp; WebLogic Partner Communities.&lt;br /&gt;&lt;br /&gt;The event will take place on February 7th and 8th 2011 at the NH Hotel in Malaga, Spain. It will be followed by a two-days hands-on training workshops on ADF &amp;amp;  WebCenter, WebLogic 12c and SOA.&lt;br /&gt;&lt;br /&gt;You can register by clicking &lt;a href="http://www.oracle.com/go/?&amp;amp;Src=7477511&amp;amp;Act=4&amp;amp;pcode=EMEAPN11110010MPP005"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See you all in Malaga! &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-1682083502889612722?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/1682083502889612722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/01/fusion-middleware-partner-community.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/1682083502889612722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/1682083502889612722'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2012/01/fusion-middleware-partner-community.html' title='Fusion Middleware Partner Community Forum - Feb 7th and 8th 2012 Malaga, Spain'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-4179063870263432051</id><published>2011-11-28T11:59:00.009+02:00</published><updated>2011-11-28T12:37:14.439+02:00</updated><title type='text'>IWorkflowServiceClient Interface changes in 11gPS4 (get authenticated user from BPM)</title><content type='html'>A recent upgrade from 11gPS3 (11.1.1.4) to 11gPS4 (11.1.1.5) has revealed some changes in the IWorkflowServiceClient interface (oracle.bpel.services.workflow.query package) which provides you with a programmatic means for retrieving tasks, task details etc. &lt;br /&gt;&lt;br /&gt;More specifically, we where using the Workflow Services API to get the authenticated username from BPM and propagate it to our custom ADF application which was embedded inside a Human Task as a region. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;String contextStr = ADFWorklistBeanUtil.getWorklistContextId();&lt;br /&gt;IWorkflowServiceClient wfSvcClient = WorkflowService.getWorkflowServiceClient();&lt;br /&gt;ITaskQueryService queryService = wfSvcClient.getTaskQueryService();&lt;br /&gt;IWorkflowContext wfContext = queryService.getWorkflowContext(contextStr);&lt;br /&gt;String userId = wfContext.getUser(); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please note that in 11gPS4, to retrieve the IWorkflowServiceClient object, you need to use the TaskFlowPropsUtil interface and NOT the WorkflowService interface, and pass to the getWorkflowServiceClient method the lookup client object which can be retrieved using the ADFWorklistBeanUtil interface.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;String contextStr = ADFWorklistBeanUtil.getWorklistContextId();&lt;br /&gt;String lookupClient = ADFWorklistBeanUtil.getLookupClient();   &lt;br /&gt;IWorkflowServiceClient wfSvcClient = TaskFlowPropsUtil.getWorkflowServiceClient(lookupClient);&lt;br /&gt;ITaskQueryService queryService = wfSvcClient.getTaskQueryService();&lt;br /&gt;IWorkflowContext wfContext = queryService.getWorkflowContext(contextStr);&lt;br /&gt;String userId = wfContext.getUser();&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-4179063870263432051?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/4179063870263432051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/11/iworkflowserviceclient-interface.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/4179063870263432051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/4179063870263432051'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/11/iworkflowserviceclient-interface.html' title='IWorkflowServiceClient Interface changes in 11gPS4 (get authenticated user from BPM)'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-2897459867555456505</id><published>2011-11-17T12:14:00.026+02:00</published><updated>2011-12-17T16:50:51.447+02:00</updated><title type='text'>ADF Contextual Events</title><content type='html'>Oracle provides us with a very powerful feature to implement view-to-region, region-to-view, and region-to-region communication without requiring the region or the reference bounded task-flow to be refresh or restarted.&lt;br /&gt;&lt;br /&gt;In this example, i will be showing you on how you can achieve region-to-region communication using the HR schema. I will create two task-flows, each consisting of a single JSF page fragment. The first JSF page fragment (named PageA.jsff) includes the employeess ADF form with some navigation controls and a submit button and the second JSF page fragment (names PageB.jsff) includes the employees ADF table.&lt;br /&gt;&lt;br /&gt;I have created a third JSF page, demo.jspx, which will include the above stated pages as regions. I will use ADF Contextual Events to refresh the employees ADF table once a change has been made in an employee using the employee ADF form in the first page.&lt;br /&gt;&lt;br /&gt;I have created a new application (named "ADFContextualEvents") with the "Fusion Web Application (ADF)" application template and using the "Business Components from Tables" i have created a connection to the HR schema, creating the Employees entity, a default view for the Employeess entity (EmployeesView) and an Application Module which includes the EmployeesView.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="10px"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2U0OTAzZWEtNGY0ZC00NWFkLWE4OGUtMWMzYWEzYTgxODEy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2U0OTAzZWEtNGY0ZC00NWFkLWE4OGUtMWMzYWEzYTgxODEy" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;I created two task-flows, TaskFlowA and TaskFlowB. Both task-flows include a single JSF page fragment (TaskFlowA includes PageA and TaskFlowB includes PageB). The first page includes the Employees ADF Form&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINmQwMDQ0ZDMtOTVkYS00M2E3LWJhZTYtMGVkYWJiNmMxMDc2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINmQwMDQ0ZDMtOTVkYS00M2E3LWJhZTYtMGVkYWJiNmMxMDc2" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;while the second page includes the employees ADF table.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTI5Y2U3YzQtZmI1OS00MTYwLWJkMTktMWYwNzgwZGJiMmI1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTI5Y2U3YzQtZmI1OS00MTYwLWJkMTktMWYwNzgwZGJiMmI1" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;I then created a normal jspx page (called demo.jspx) which includes the two task-flows created above as an ADF region. If you run the page and try to do a change in one of the employees, you will see that the changes are not reflected in the table below.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDc4ZGNmNTgtYTBkNS00YmU1LTllMjktMjlhZTgwZjAzZTVj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDc4ZGNmNTgtYTBkNS00YmU1LTllMjktMjlhZTgwZjAzZTVj" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;To refresh the view and subsequently the table to show the changes made in the form above, I will use Contextual Events. So the first thing that I will do is to create a method in the Application Module that will refresh (by re-executing) the view.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;i&gt;public void refreshEmployees(){&lt;br /&gt;     getEmployeesView().executeQuery();&lt;br /&gt;   }&lt;br /&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Please make sure that you expose this new method to the UI using the client interface option of the Application Module.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmNkNjA5YjAtMTc3Ny00NDE0LWExYTMtY2ZmZTVmYWJmYWEw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmNkNjA5YjAtMTc3Ny00NDE0LWExYTMtY2ZmZTVmYWJmYWEw" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;You need to add this method in PageB’s bindings as a method action using the page definition file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTMyZmQzYjAtOTM1Ni00ZTUzLThmOWYtOTk0ZmNhNTA0N2E0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTMyZmQzYjAtOTM1Ni00ZTUzLThmOWYtOTk0ZmNhNTA0N2E0" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Next, you need to define when the event should be triggered. This should be every time the user clicks the “Submit” button that is included in PageA (where the ADF Form is).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDRiZTdlMGItNTNlNS00MjlkLTllNDAtNWI5NWZjMGZlYTUy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDRiZTdlMGItNTNlNS00MjlkLTllNDAtNWI5NWZjMGZlYTUy" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Finally, in the page that includes both task-flows as regions (demo.jspx), we need to define the subscriber for the event that will be triggered with the Submit button. To do so, go the page definition and select the “Contextual Events” and then the “Subscibers” tab and click on the green plus icon “Add a New Subscription”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDYzODAwMWQtOTNhMy00NGI0LThhMzQtZDNhZGJmZWMwNjcz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDYzODAwMWQtOTNhMy00NGI0LThhMzQtZDNhZGJmZWMwNjcz" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Subscribe to Contextual Event” window, select the event that you have created, the publisher of the event and the handler (in our case, it is the method that we have created in the Application Module and included it in the second page’s page definition as a method action, and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTJlMzZhZTgtNzg0Mi00OWYzLTlkNWUtYjZhN2UxNThjNDA4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTJlMzZhZTgtNzg0Mi00OWYzLTlkNWUtYjZhN2UxNThjNDA4" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;If you run the demo page that includes both task-flows as regions, you will see that by doing a change in one of the employees using the employee form, the employees table displays the new changes without needing to refresh the region or page.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Download: &lt;a href="https://docs.google.com/open?id=0B62-7A9Xi4iIOGRlMTc2YTAtNmRhOS00MTllLTk3NzEtNWI5ZDJiNzQwZjk4"&gt;ADF Contextual Events&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-2897459867555456505?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/2897459867555456505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/11/adf-contextual-events.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/2897459867555456505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/2897459867555456505'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/11/adf-contextual-events.html' title='ADF Contextual Events'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-5035795169054404566</id><published>2011-09-16T12:14:00.013+03:00</published><updated>2011-11-17T20:44:30.844+02:00</updated><title type='text'>Propagate authenticated user from BPM to ADF using BPM API and ADF Task Flow parameters</title><content type='html'>In my previous post, I have demonstrated how you can propagate the authenticated user from BPM to your custom ADF Application using Contextual Events.&lt;br&gt;&lt;br /&gt;In this post, I will demonstrate how you can achieve the exact same result, this time using BPM API and ADF Task Flow parameters.&lt;br&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;So, let’s first start with creating the custom ADF application. This will be a very simple application, where I will create a taskflow with a parameter and a fragment page to just display the taskflow parameter that will eventually hold the authenticated username that will get propagated from BPM.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2VmOWI4ZDctYWVjNS00NTc2LTljODUtOTliM2UxN2E1NDAz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2VmOWI4ZDctYWVjNS00NTc2LTljODUtOTliM2UxN2E1NDAz " width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;I just created an ADF Application, named “DemoADF” and selected “Fusion Web Application (ADF)” from the Application Templates.&lt;br /&gt;Next create an ADF TaskFlow and name it, DemoTF. Make Sure that the “Create with Page Fragments” checkbox is selected.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjk4YmI5YzYtNTE3MS00NTczLWE3MGMtNTRkZDEwNWIxNDAw " imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjk4YmI5YzYtNTE3MS00NTczLWE3MGMtNTRkZDEwNWIxNDAw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;If not opened, open the DemoHT ADF Human Task that you have just created and using the overview view option, create a parameter, naming it “UserNameFromBPM”, setting the class to “java.lang.String” and the value to “#{pageFlowScope.UserNameFromBPM}”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTdjYjE4NjAtNWQ5Yy00ZjFmLWI4OTUtMDc4MGNiMTdhOTI4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTdjYjE4NjAtNWQ5Yy00ZjFmLWI4OTUtMDc4MGNiMTdhOTI4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Create a new view component and name it “Demo”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWI0MDhiMDUtMjliNy00M2U2LWJiZjgtODI4MDNlYmMyZjlm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWI0MDhiMDUtMjliNy00M2U2LWJiZjgtODI4MDNlYmMyZjlm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Double click to create the page fragment and drag an output label ADF component, setting the value attribute to “Authenticated User: #{pageFlowScope.UserNameFromBPM}”&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTg4YjFhY2EtMGU3Zi00MTJkLThjMDItNjE4NDkwNjRkMjgx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTg4YjFhY2EtMGU3Zi00MTJkLThjMDItNjE4NDkwNjRkMjgx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Now, we need to package this ADF Application that we have just created into an ADF Jar Library. To do this, right-click the ViewController project, select new from the context menu and in the “New Gallery” window, select “Deployment Profiles“ from the Categories and “ADF Library JAR File” from the items and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTYzMTYyMWMtNDBjYy00NThlLWI2OTMtYmYxNTBkNThlY2Jj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTYzMTYyMWMtNDBjYy00NThlLWI2OTMtYmYxNTBkNThlY2Jj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create Deployment Profile” window, give your deployment profile a meaningfull name (for example, DemoADF, and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjNiMTNkZDQtNmU4MS00NDAyLWExNDctZTc1NThmNmJiNDNi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjNiMTNkZDQtNmU4MS00NDAyLWExNDctZTc1NThmNmJiNDNi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Edit ADF Library JAR Deployment Profile Properties”, just click OK. The same with the “Project Properties” window, just click OK.&lt;br /&gt;To deploy your ADF Application in the ADF JAR Library, you need to right-click the ViewController project and select Deploy &gt; DemoADF&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmE2MGIwZWQtMTE0OS00Y2YxLThhYjQtMjdiODNlNDNkNTdi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmE2MGIwZWQtMTE0OS00Y2YxLThhYjQtMjdiODNlNDNkNTdi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Deploy DemoADF” window, click next and in the Summary screen, make sure to note down the location of the generated jar file (in my case, it’s C:\JDeveloper\mywork\myBlog\DemoADF\ViewController\deploy) and click Finish.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDg4NTg3NTctZDM0Zi00ZTk0LWI1YzMtNjk5OGIwYWQ0Zjlm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDg4NTg3NTctZDM0Zi00ZTk0LWI1YzMtNjk5OGIwYWQ0Zjlm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So, we are done with the custom ADF Application, now it’s time to create our SOA Application. So create a new application, name it DemoSOA and from the templates select “SOA Application”. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIODg5NjdmNGItYTQwOC00M2YzLTgxYjYtYzQxMzkzNjAxZWRk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIODg5NjdmNGItYTQwOC00M2YzLTgxYjYtYzQxMzkzNjAxZWRk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the project name screen, you can give your project the same name as your application, that is DemoSOA. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWFlOGEyMzUtMzdhYi00ZDNkLWI0YzUtN2Q5ZGVlZGE1NGMz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWFlOGEyMzUtMzdhYi00ZDNkLWI0YzUtN2Q5ZGVlZGE1NGMz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Configure SOA settings” screen, select “Composite with BPEL Process” from the Composite Template section and click Finish.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDU3ZWZkMTgtYmI0MC00YzQ2LTlkMGMtMTgxNDE0ZDllY2U2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDU3ZWZkMTgtYmI0MC00YzQ2LTlkMGMtMTgxNDE0ZDllY2U2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create BPEL Process” window, accept all defaults and click OK.&lt;br /&gt;Create a Human Task by dragging the Human Task component form the Component Pallet onto the components swim lane. On the “Create Human Task” window, accept all defaults and click OK. Your composite application should resemble as the image below.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTNjNzliMzItZDBiMC00NTMzLTkxMzktNjcyN2RjODk1MmRm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTNjNzliMzItZDBiMC00NTMzLTkxMzktNjcyN2RjODk1MmRm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit the newly create Human Task and assign the “weblogic” user as the participant of this Human Task.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDk5NDJmZjktYWYzYS00MTM2LWI4NjktMjM2NTE0ZmI3ZjE5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDk5NDJmZjktYWYzYS00MTM2LWI4NjktMjM2NTE0ZmI3ZjE5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit the BPEL component and drag and drop a human component between the receive (receiveInput) and invoke(callbackClient) activity.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDFkNWY4MzctMDllMC00MjM5LWFhMDUtNDNmZTBiZmI1Y2Ey" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDFkNWY4MzctMDllMC00MjM5LWFhMDUtNDNmZTBiZmI1Y2Ey" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit the Human Task component that you have just dropped onto the BPEL Designer and in the “Task Definition” drop down, select “Humantask1” (it’s the human task that you have created in the composite application) and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINzg5ZTk2NGQtMTQyOS00NmY1LTljOGMtNGZkOGMyZDY0ODgy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINzg5ZTk2NGQtMTQyOS00NmY1LTljOGMtNGZkOGMyZDY0ODgy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Now it’s time to generate the human task form for the human task component. To do this, go to the composite.xml file, and double-click the human task component. From the human task editor, select Create Form &gt; Auto-Generate Task Form.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjgyNTg4YTktNmZjYi00MGE2LThkM2MtZDIxYjNjMWYzYmRi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjgyNTg4YTktNmZjYi00MGE2LThkM2MtZDIxYjNjMWYzYmRi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create Project” window, give your project a name, such as DemoHT, and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjQxMzJhZmUtMDE1ZC00YzBkLWEzZDUtYTg3YzIzMGExMzAz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjQxMzJhZmUtMDE1ZC00YzBkLWEzZDUtYTg3YzIzMGExMzAz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JDeveloper will automatically create for you the ADF Human Task Form in the project that you have specified in the previous step. Once finished, it should display you with the auto-generated form.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjk5MzVkMDctOTgwOC00YTMzLTkyMzYtMDk3YTlhZWRlZDg5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjk5MzVkMDctOTgwOC00YTMzLTkyMzYtMDk3YTlhZWRlZDg5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So, now I want to include the Demo.jsff page fragment that I have create from the custom ADF Application in my human task form. How to do this? First, we need to create a File System Connection to the location of the generated ADF JAR Library. You can do this using the Resource Palette. In the “Create File System Connection” window, give your connection a name (for example, DemoADF) and the path to the generated ADF JAR Library. Click “Test Connection” to test your connection and then OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDNhZjkzMmMtNDJmOS00MzI1LWI4MTgtZjc2MTE2M2UzYmZm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDNhZjkzMmMtNDJmOS00MzI1LWI4MTgtZjc2MTE2M2UzYmZm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From the Resource Palette, expand the IDE Connection, File System and your file system connection name (in my case it’s DemoADF) and you should see the generated ADF JAR Library (DemoADF.jar).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIODE0ZjA2ODktMGJiNi00NzM4LWJhODYtZjBiMjVjMDkxYTA1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIODE0ZjA2ODktMGJiNi00NzM4LWJhODYtZjBiMjVjMDkxYTA1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;To include and use the contents of this jar file in the human task project, make sure that you have selected from the application navigator the DemoHT project, and from the Resource Paletter, right-click the DemoADF.jar file and select from the context menu “Add to Project”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjZkMmNiNDctNzEzNi00YTIzLWIwYTEtYzExOTVkZjcxMTM2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjZkMmNiNDctNzEzNi00YTIzLWIwYTEtYzExOTVkZjcxMTM2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Confirm Add ADF Library” window, just click the Add Library button.&lt;br /&gt;Oracle provides us with an API to get the authenticated BPM user from a human task (that is from the BPM context), using the IWorkflowServiceClient, ITaskQueryService queryService and IWorkflowContext wfContext interfaces. &lt;br /&gt;So to use this API, we must create a java class with a simple method that will use this API and return the authenticated user as a string.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWM0NGJjYmYtNTA5Yy00NGM5LTg4YmQtZDY2MTk0MDZjYzBh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWM0NGJjYmYtNTA5Yy00NGM5LTg4YmQtZDY2MTk0MDZjYzBh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the newly created java class, add the following method:&lt;br&gt;&lt;i&gt;&lt;br /&gt;String userId = "";&lt;br /&gt;    try {&lt;br /&gt;           IWorkflowServiceClient wfSvcClient;&lt;br /&gt;          ITaskQueryService queryService;&lt;br /&gt;          IWorkflowContext wfContext;&lt;br /&gt;&lt;br /&gt;          String contextStr = ADFWorklistBeanUtil.getWorklistContextId();&lt;br /&gt;          wfSvcClient = WorkflowService.getWorkflowServiceClient();&lt;br /&gt;          queryService = wfSvcClient.getTaskQueryService();&lt;br /&gt;          wfContext = queryService.getWorkflowContext(contextStr);&lt;br /&gt;          userId = wfContext.getUser();&lt;br /&gt;            &lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        return userId;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;When prompted, please import the following packages:&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClient;&lt;br /&gt;import oracle.bpel.services.workflow.datacontrol.WorkflowService;&lt;br /&gt;import oracle.bpel.services.workflow.query.ITaskQueryService;&lt;br /&gt;import oracle.bpel.services.workflow.verification.IWorkflowContext;&lt;br /&gt;import oracle.bpel.services.workflow.worklist.adf.ADFWorklistBeanUtil;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTAzZDAwMGUtYmYxMS00NDc2LTlkZTQtM2E0NmFiZGRlZjk2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTAzZDAwMGUtYmYxMS00NDc2LTlkZTQtM2E0NmFiZGRlZjk2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Using this newly created java class, create a data control by right-clicking the java class and selecting from the context menu “Create Data Control”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmFmODU4NGYtZGZlZi00NDZlLTg5N2YtYzNiNzQ0OTc1YTE5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmFmODU4NGYtZGZlZi00NDZlLTg5N2YtYzNiNzQ0OTc1YTE5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Open the human task form (taskDetails1.jspx) and go the page bindings by using the “Bindings” tab. From the “Bindings and Executables” tab, click the green plus sign in the bindings section to create a new control binding. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWUyNDQzYzYtMmIzOC00ODU5LTk5OTMtY2Y5Yjg4NzVlZGNi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWUyNDQzYzYtMmIzOC00ODU5LTk5OTMtY2Y5Yjg4NzVlZGNi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Insert Item” window, ensure that “Generic Bindings” is selected in the drop down menu and select “attributteValues” from the items and click “OK”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGU1MzM5NzctNzIzMC00MjExLWFhNzAtODkyZGQxZDY5OTU3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGU1MzM5NzctNzIzMC00MjExLWFhNzAtODkyZGQxZDY5OTU3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create Attribute Binding” window, click the green plus sign to add a new data source.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTAzNzY5MGYtM2IxYS00YTk2LTlmODQtZDExOTUyMDc5MjBk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTAzNzY5MGYtM2IxYS00YTk2LTlmODQtZDExOTUyMDc5MjBk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Add Data Source” window, expand SecurityUtils, Constructors, demoht.utils.SecurityUtils and select “SecurityUtils” and click “OK”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMThmNGRhOTEtNzEwMC00OGM4LThiZjctNGJiYjk2YjgxNjg4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMThmNGRhOTEtNzEwMC00OGM4LThiZjctNGJiYjk2YjgxNjg4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Back in the “Create Attribute Binding” window, select “authenticatedUser” and click “OK”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTIwZTY1ODAtNjM4Yy00NzBlLWE2MDktMzI1ZWFiNzYzNTIx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTIwZTY1ODAtNjM4Yy00NzBlLWE2MDktMzI1ZWFiNzYzNTIx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Switch back to design view and from the Component Palette, make sure that you have selected DemoADF.jar from the drop down menu.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYThiOTY4NjktYjcwMC00MTk3LTlkOWYtYWRiYjA2Y2VjNmRi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYThiOTY4NjktYjcwMC00MTk3LTlkOWYtYWRiYjA2Y2VjNmRi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Expand the Regions section and drag and drop the DemoTF region from into the panelGroupLayout component that is included into the Contents showDetailHeader component as an ADF Region (you might find it easier to user the structure window).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTUyYTQzNWUtZmE1Mi00M2UwLTkwODUtMGZkYjA0ZTgzMmIz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTUyYTQzNWUtZmE1Mi00M2UwLTkwODUtMGZkYjA0ZTgzMmIz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Edit Task Flow Binding” window, set the value of “UserNameFromBPM” input parameter to the inputValue (if you followed my exact steps, then this would be “#{bindings.authenticatedUser.inputValue}”) of the attributeValue that we have created just above that represents the return value of the java method created earlier and click “OK”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzFhZmY1NzktODI3Yi00MTI2LTk4MjAtOWVjNjcxYzE0YTBi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzFhZmY1NzktODI3Yi00MTI2LTk4MjAtOWVjNjcxYzE0YTBi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So now, we are ready to deploy and test if the authenticated user from the BPM workspace is propagated to the custom ADF application that was included in the Human Task form as an ADF region.&lt;br /&gt;&lt;br /&gt;First, we need to deploy the DemoSOA project by right-clicking the project and selecting Deploy &gt; DemoSOA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWNiNjY2M2QtZGExOS00Y2UzLTg2NjItOTAyYjZiYjcwNWVk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWNiNjY2M2QtZGExOS00Y2UzLTg2NjItOTAyYjZiYjcwNWVk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;and then we need to deploy the human task form. Please note that you should deploy the project that contains the human task form (DemoHT) using the Application menu, Deploy &gt; DemoHT and NOT by right-clicking the project and selecting deploy.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmUyYjUxYzctYTYwMC00ZjQ3LTk2M2EtNTVhM2E1YTVkOWQ3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmUyYjUxYzctYTYwMC00ZjQ3LTk2M2EtNTVhM2E1YTVkOWQ3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Once you have successfully deployed both, DemoSOA and DemoHT projects, please go to the Oracle Enterprise Manage (http://localhost:7001/em), locate the newly deployed SOA Composite Application (DemoSOA) and create a new instance by clicking on the test button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTY1YTcxN2UtYWM0MS00OTg2LTg5YWUtYmMyMGYzZGVlNDE2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTY1YTcxN2UtYWM0MS00OTg2LTg5YWUtYmMyMGYzZGVlNDE2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Specify a value in the input field and click the “Test Web Service” button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTE2MzkzN2MtZGNiMC00MzA4LWIzYzMtMDA0NTlmZDRiM2Ix" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTE2MzkzN2MtZGNiMC00MzA4LWIzYzMtMDA0NTlmZDRiM2Ix" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;This will create a new instance of the DemoSOA composite application. If you remember, this composite consists of a BPEL and a Human Task Component. So it will initiate a bpel process and when it reaches the human task component, it will wait for a human intervention by the weblogic user.&lt;br /&gt;&lt;br /&gt;So let’s login to the BPM workspace application (http://localhost:8001/bpm/workspace)  to see all pending tasks.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDI2MTdlMzUtNWQ2ZS00YjhhLTg1OWQtYWU5OWIyMGQxYjZl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDI2MTdlMzUtNWQ2ZS00YjhhLTg1OWQtYWU5OWIyMGQxYjZl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Click on the DemoSOA task and wait for the human task form to load on the bottom half of the screen. The human task form should load and you should see the authenticated user, in this case weblogic, to get propagated from the BPM workspace to the custom ADF Application that we have developed earlier and included in the human task form as an ADF region.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzViNDY5ZTEtMTBjZC00ZGYyLWEyYjUtNmE2MTk5ZWVmZjJl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzViNDY5ZTEtMTBjZC00ZGYyLWEyYjUtNmE2MTk5ZWVmZjJl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Download: &lt;a href=”https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B62-7A9Xi4iINGY0ZGUzYzctYjk5ZC00ZjdiLTlkNDgtYjU5YmU2NWVjOWYy&amp;hl=en_US”&gt;Propagate authenticated user from BPM to ADF using BPM API and ADF Task Flow parameters&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-5035795169054404566?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/5035795169054404566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/09/propagate-authenticated-user-from-bpm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/5035795169054404566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/5035795169054404566'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/09/propagate-authenticated-user-from-bpm.html' title='Propagate authenticated user from BPM to ADF using BPM API and ADF Task Flow parameters'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-7214438729693077128</id><published>2011-08-30T17:14:00.023+03:00</published><updated>2011-09-16T12:50:39.010+03:00</updated><title type='text'>Propagate the authenticated user from BPM to ADF using Contextual Events</title><content type='html'>A common issue that we are facing in nearly all implementations involving creating custom ADF Applications with Oracle Business Process Management Workspace Task Flows is getting the authenticated user (and setting history columns such as created by, created on, etc) from the BPM workspace application to the embedded, as regions, custom ADF Applications.&lt;br /&gt;&lt;br /&gt;In normal ADF Applications, to get the authenticated user, using the “ADFContext.getCurrent().getSecurityContext().getUserName()” API will return you with the authenticated user. This is not the case if you created an ADF Application, zipped it into an ADF Library JAR File and used this ADF Application (and more specifically the different Page Flows) as ADF Regions in a Human Task Form.&lt;br /&gt;&lt;br /&gt;The above mention method does not work (ADFContext.getCurrent().getSecurityContext().getUserName()) in remote ADF BC, always returning anonymous, as it is the intermediary user between the BPM and ADF Application.&lt;br /&gt;&lt;br /&gt;Oracle provides us with an API to get the authenticated BPM user from a human task (that is from the BPM context), using the IWorkflowServiceClient, ITaskQueryService queryService and IWorkflowContext wfContext interfaces.&lt;br /&gt;&lt;br /&gt;So the question now is how to pass the username from the BPM Human Task section to the ADF region? Well, of course using Oracle ADF Contextual Events.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;So, let’s first start with creating the custom ADF application. This will be a very simple application, where I will create a simple java class with just one method. This method will have only one parameter and will return a string and will be used for handling the contextual event.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWY1MjE3YTAtODc0ZC00ZTY0LTg0MTktOWJjMDcwMGM1ZGJh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWY1MjE3YTAtODc0ZC00ZTY0LTg0MTktOWJjMDcwMGM1ZGJh" border="0" height="230" width="350"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;I just created an ADF Application, named “DemoADF” and selected “Fusion Web Application (ADF)” from the Application Templates.&lt;br /&gt;Create a new java class in the Model project, specifying Demo as the class name and create a new method as follows:&lt;br /&gt;&lt;i&gt;&lt;br /&gt; public String getAuthenticatedUserFromBPM(String username){&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbspreturn "Hello " + username; &lt;br /&gt; }&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmNkOTc3ZTktZWJkZS00MmI2LWE3YzQtYjM3ZGQ0MmFjZDY5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmNkOTc3ZTktZWJkZS00MmI2LWE3YzQtYjM3ZGQ0MmFjZDY5" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Once you created the getAuthenticatedUserFromBPM method, right-click the Demo.java class and from the context menu select “Create Data Control”. JDeveloper with automatically create for you a data control, exposing all public methods defined in the Demo.java POJO.&lt;br /&gt;Now, create an ADF Task Flow in the ViewController project. Name it DemoTF and ensure that the “Create with Page Fragments” checkbox is selected.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzIzMmU2ZWYtZDZhMS00YmU5LTgyNDQtYjUxYmEzYWNhZTcx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzIzMmU2ZWYtZDZhMS00YmU5LTgyNDQtYjUxYmEzYWNhZTcx" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From the components palette, drag and drop a view component onto the bounded task flow and name it Demo.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGYxMWJiYWUtNDlhZi00ZDU5LThiOTEtNmQ2M2Q2ZDExOGQ0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGYxMWJiYWUtNDlhZi00ZDU5LThiOTEtNmQ2M2Q2ZDExOGQ0" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Double click the Demo view and create the demo fragment, accepting all defaults.&lt;br /&gt;From the Data Controls section, expand the Demo data control and the getAuthenticatedUserFromBPM method and drag and drop the String return type on the Demo.jsff fragment as an input text with label.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWQ1MmJlYmMtYjY3Zi00MDIwLTg1MTAtNGRmOGYzOWI1ZDUx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWQ1MmJlYmMtYjY3Zi00MDIwLTg1MTAtNGRmOGYzOWI1ZDUx" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;On the “Edit Action Binding” window, just click the OK button. You can optionally change the label of the input text to something meaningful, for example “Authenticated User”. The page fragment should resemble as the image below.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIY2FlZTQzZDktZWQyNi00ZTE5LTg4MzEtYWM1ZWFiNjUyZjJj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIY2FlZTQzZDktZWQyNi00ZTE5LTg4MzEtYWM1ZWFiNjUyZjJj" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Now, we need to package this ADF Application that we have just created into an ADF Jar Library. To do this, right-click the ViewController project, select new from the context menu and in the “New Gallery” window, select “Deployment Profiles“  from the Categories and “ADF Library JAR File” from the items and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINzg3YzNlYWQtMmU0ZS00ZDFjLTkyNDItZWFmY2E3M2EwYjA3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINzg3YzNlYWQtMmU0ZS00ZDFjLTkyNDItZWFmY2E3M2EwYjA3" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create Deployment Profile” window, give your deployment profile a meaningfull name (for example, DemoADF, and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIY2ZlM2NkODYtNjFhNy00YTM5LWE5ZmQtN2E1ZjU3ZDQ5OWNi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIY2ZlM2NkODYtNjFhNy00YTM5LWE5ZmQtN2E1ZjU3ZDQ5OWNi" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Edit ADF Library JAR Deployment Profile Properties”, just click OK. The same with the “Project Properties” window, just click OK.&lt;br /&gt;To deploy your ADF Application in the ADF JAR Library, you need to right-click the ViewController project and select Deploy &amp;gt; DemoADF&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmYxZTYxMTEtN2M5Mi00MzM5LTliMzctMjdhYjExZmQ5YWYz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmYxZTYxMTEtN2M5Mi00MzM5LTliMzctMjdhYjExZmQ5YWYz" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Deploy DemoADF” window, click next and in the Summary screen, make sure to note down the location of the generated jar file (in my case, it’s C:\JDeveloper\mywork\myBlog\DemoADF\ViewController\deploy) and click Finish.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTdmNzQxM2EtOWMyNi00YWNkLWJjNjItYTU4NGM1MWMwNWZi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTdmNzQxM2EtOWMyNi00YWNkLWJjNjItYTU4NGM1MWMwNWZi" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So, we are done with the custom ADF Application, now it’s time to create our SOA Application. So create a new application, name it DemoSOA and from the templates select “SOA Application”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDIyMTI2OTAtNGUzYS00MzNhLWI1YzMtNGNmMGY0Y2Y3ZDcz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDIyMTI2OTAtNGUzYS00MzNhLWI1YzMtNGNmMGY0Y2Y3ZDcz" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the project name screen, you can give your project the same name as your application, that is DemoSOA.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzA3MjFlZmQtZGFmOS00ZjllLWE1MjMtNmYxODQxNGY0Y2Zj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzA3MjFlZmQtZGFmOS00ZjllLWE1MjMtNmYxODQxNGY0Y2Zj" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Configure SOA settings” screen, select “Composite with BPEL Process” from the Composite Template section and click Finish.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTllM2NkYzMtNTkxYy00ODkzLWJhYzUtMDQzMTk1ZmM2ZWE4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTllM2NkYzMtNTkxYy00ODkzLWJhYzUtMDQzMTk1ZmM2ZWE4" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create BPEL Process” window, accept all defaults and click OK.&lt;br /&gt;Create a Human Task by dragging the Human Task component form the Component Pallet onto the components swim lane. On the “Create Human Task” window, accept all defaults and click OK. Your composite application should resemble as the image below.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWUyOTM4NzYtZjc0Mi00OTk2LTg0ZDktNWQ4YTBhN2I4OWYw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWUyOTM4NzYtZjc0Mi00OTk2LTg0ZDktNWQ4YTBhN2I4OWYw" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit the newly create Human Task and assign the “weblogic” user as the participant of this Human Task.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGY2NmE1ODItYTI4OS00ZTcyLTllNGItZDUxMzcxZTZlNGY4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGY2NmE1ODItYTI4OS00ZTcyLTllNGItZDUxMzcxZTZlNGY4" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit the BPEL component and drag and drop a human component between the receive (receiveInput) and invoke(callbackClient) activity.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTU5N2FhZWEtYmRmYi00NjFhLTk3NmEtNDFmMWMzY2QwMzZm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTU5N2FhZWEtYmRmYi00NjFhLTk3NmEtNDFmMWMzY2QwMzZm" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit the Human Task component that you have just dropped onto the BPEL Designer and in the “Task Definition” drop down, select “Humantask1” (it’s the human task that you have created in the composite application) and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjdkM2U3NWItNWIyNS00YjU0LTk4YmMtYWZhZWYzNWU0ZTM5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjdkM2U3NWItNWIyNS00YjU0LTk4YmMtYWZhZWYzNWU0ZTM5" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Now it’s time to generate the human task form for the human task component. To do this, go to the composite.xml file, and double-click the human task component. From the human task editor, select Create Form &amp;gt; Auto-Generate Task Form.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTNhZmM3ZjMtZjdjOS00OTAxLWEwNmItY2NkY2RkMGRkNDM5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTNhZmM3ZjMtZjdjOS00OTAxLWEwNmItY2NkY2RkMGRkNDM5" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Create Project” window, give your project a name, such as DemoHT, and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjI4NDY5NDMtMDIyMi00NWFiLWFiYTAtNWYwYmVkNTlmZWFi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjI4NDY5NDMtMDIyMi00NWFiLWFiYTAtNWYwYmVkNTlmZWFi" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JDeveloper will automatically create for you the ADF Human Task Form in the project that you have specified in the previous step. Once finished, it should display you with the auto-generated form.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTZmZTI2M2EtZTFiYS00NmYwLTkyNDQtMTNhMDdjZDA0MDJh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTZmZTI2M2EtZTFiYS00NmYwLTkyNDQtMTNhMDdjZDA0MDJh" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So, now I want to include the Demo.jsff page fragment that I have create from the custom ADF Application in my human task form. How to do this? First, we need to create a File System Connection to the location of the generated ADF JAR Library. You can do this using the Resource Palette. In the “Create File System Connection” window, give your connection a name (for example, DemoADF) and the path to the generated ADF JAR Library. Click “Test Connection” to test your connection and then OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOGE5NGVmZWItYTE5MS00MGE3LWIzNzktOTc5ZjNhNDc1NTJh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOGE5NGVmZWItYTE5MS00MGE3LWIzNzktOTc5ZjNhNDc1NTJh" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From the Resource Palette, expand the IDE Connection, File System and your file system connection name (in my case it’s DemoADF) and you should see the generated ADF JAR Library (DemoADF.jar).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTBmZDFkZjQtMTNkYi00YWE4LWFmNDEtZjRlY2VlMGZiOTYy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTBmZDFkZjQtMTNkYi00YWE4LWFmNDEtZjRlY2VlMGZiOTYy" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;To include and use the contents of this jar file in the human task project, make sure that you have selected from the application navigator the DemoHT project, and from the Resource Paletter, right-click the DemoADF.jar file and select from the context menu “Add to Project”.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjhhNDdkZWQtNWMyOS00Y2M0LTkyNWMtNzA5MzRmZWQ2MTdj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjhhNDdkZWQtNWMyOS00Y2M0LTkyNWMtNzA5MzRmZWQ2MTdj" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Confirm Add ADF Library” window, just click the Add Library button.&lt;br /&gt;Open the Human Task Form (taskDetails.jspx) and from the Component Palette, make sure that you have selected DemoADF.jar from the drop down menu.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWQwZWY3ODEtMTRkNy00ZjRhLTgwOWYtMWM5MzZhNDlmZTUx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWQwZWY3ODEtMTRkNy00ZjRhLTgwOWYtMWM5MzZhNDlmZTUx" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Expand the Regions section and drag and drop the DemoTF region from into the panelGroupLayout component that is included into the Contents showDetailHeader component as an ADF Region (you might find it easier to user the structure window).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIODJmNzZkZTEtNWI2OC00NzJmLWEwNTUtYTc0M2U1Yjc1Mjgz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIODJmNzZkZTEtNWI2OC00NzJmLWEwNTUtYTc0M2U1Yjc1Mjgz" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the same panelGroupLayout component, drag and drop a button component, above the ADF region. You can optionally change the button text (in my case, I changed it to Get Authenticated User).&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDNlODk0Y2EtNDJhMS00NTkzLTg5Y2UtZWEwMjhlNzgzMGY5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDNlODk0Y2EtNDJhMS00NTkzLTg5Y2UtZWEwMjhlNzgzMGY5" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;We need to create an action for this button so that it will get the authenticated user. To do this, double click the “Get Authenticated User” button and create a new managed bean with a new method as in the image below and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzZiODA1YzUtNzFjNS00ZTEwLThjODItZjIwMjhhZTA1OTAx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzZiODA1YzUtNzFjNS00ZTEwLThjODItZjIwMjhhZTA1OTAx" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Replace the contents of the getAuthenticatedUser method with the code below:&lt;br /&gt;&lt;br /&gt;   &lt;i&gt;String userId = "";&lt;br /&gt;  &lt;br /&gt;     try {&lt;br /&gt;    &lt;br /&gt;       IWorkflowServiceClient wfSvcClient;&lt;br /&gt;       ITaskQueryService queryService;&lt;br /&gt;       IWorkflowContext wfContext;&lt;br /&gt;     &lt;br /&gt;       // Get username of User Login&lt;br /&gt;       String contextStr = ADFWorklistBeanUtil.getWorklistContextId();&lt;br /&gt;       wfSvcClient = WorkflowService.getWorkflowServiceClient();&lt;br /&gt;       queryService = wfSvcClient.getTaskQueryService();&lt;br /&gt;       wfContext = queryService.getWorkflowContext(contextStr);&lt;br /&gt;       userId = wfContext.getUser();&lt;br /&gt;&lt;br /&gt;     } catch (Exception e) {&lt;br /&gt;         e.printStackTrace();&lt;br /&gt;     }&lt;br /&gt;      &lt;br /&gt;     return userId;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;When prompted, please import the following packages:&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClient;&lt;br /&gt;import oracle.bpel.services.workflow.datacontrol.WorkflowService;&lt;br /&gt;import oracle.bpel.services.workflow.query.ITaskQueryService;&lt;br /&gt;import oracle.bpel.services.workflow.verification.IWorkflowContext;&lt;br /&gt;import oracle.bpel.services.workflow.worklist.adf.ADFWorklistBeanUtil;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTZiYmVjMDctN2QwNC00MmI2LTk5YjEtODRmZmRiNTI5N2U3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTZiYmVjMDctN2QwNC00MmI2LTk5YjEtODRmZmRiNTI5N2U3" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Using the above specified method, we can get the authenticated BPM workspace user. Please note that this method ONLY works within the BPM context, that is from a human task form. To propagate the authenticated user returned by the method to the custom ADF Application that we have included onto the human task form, we will have to use ADF Contextual Events.&lt;br /&gt;&lt;br /&gt;To do this, select the “Get Authenticated User” button and from the Property Inspector, expand the Behaviour category and click the green plus sign (Add a New Event Entry) in the Published Events section.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGExOTUyN2ItNmM5YS00OWEyLWFmYTMtY2QyYWFlNTNkNjhh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGExOTUyN2ItNmM5YS00OWEyLWFmYTMtY2QyYWFlNTNkNjhh" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Specify GetAuthenticatedUserEvent as the event name in the “Publish Contextual Event” window and select the “Pass Custom Value from” check box.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjg2ODhkOGYtNjhmMy00MmQxLTg4MDQtMDM3NDY0NmQ5Njg0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjg2ODhkOGYtNjhmMy00MmQxLTg4MDQtMDM3NDY0NmQ5Njg0" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From the drop down menu, next to the “Pass Custom Value from” check box, select “Managed Bean Method Return” and select the managed bean that you have created (DemoBean) and in the Properties drop down, the method that you have created for getting the authenticated user (authenticatedUser) and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmViZWVkMzktNjdhZC00YjMwLTg5ZjktMjZlY2ZlNTUxY2E4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmViZWVkMzktNjdhZC00YjMwLTg5ZjktMjZlY2ZlNTUxY2E4" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So now the “Get Authenticated User” button will call the managed bean method that will return the authenticated user and will create an event.&lt;br /&gt;&lt;br /&gt;We need to specify who will “listen” for these events created, that is we need to register the ADF region that we have created from the custom ADF Application as a subscriber of these events. To do this, make sure that the human task form is opened (taskDetails1.jspx) and click the bindings tab.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINzI4MGY2MTYtMzZjNS00NjRkLTk5ZDMtMWY2MzcyNmVmMzcy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINzI4MGY2MTYtMzZjNS00NjRkLTk5ZDMtMWY2MzcyNmVmMzcy" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From the bindings page, select the “Contextual Events” tab and from the “Subscribers” tab, click the green plus icon (Add a New Subscription).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGM2OWUyNjktNmYwZC00MTQyLWI4MjUtNDk2YjUzNmJkMTg4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZGM2OWUyNjktNmYwZC00MTQyLWI4MjUtNDk2YjUzNmJkMTg4" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the “Subscribe to Contextual Event” window, click the browse button next to the Event text box.&lt;br /&gt;In the “Select Contextual Event” window, select the GetAuthenticatedUserEvent event and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDhiZmJhODctOTU5NC00NTRlLTkwZjktNzljZGEyNmYwY2I3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDhiZmJhODctOTU5NC00NTRlLTkwZjktNzljZGEyNmYwY2I3" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From the Publisher drop down, select the taskDetails1PageDef.eventBinding entry and select the browser icon next to the Handler text box. From the “Select Handler” window, select the getAuthenticatedUserFromBPM handler (expand DemoTF1, DemoPageDef) and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjA0NzNhMGYtMDYxYy00NGEyLWE3ZjItMjg0MWUxOWFkYTZj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjA0NzNhMGYtMDYxYy00NGEyLWE3ZjItMjg0MWUxOWFkYTZj" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Back in the “Subscribe to Contextual Event” window, ensure that the Parameters tab is selected and click the green plus icon.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjhkN2MwOGItMzNmNC00YjFiLWFmZjAtYTZkZGFkODZkYzUy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjhkN2MwOGItMzNmNC00YjFiLWFmZjAtYTZkZGFkODZkYzUy" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;In the name, specify outcome and in the value, specify #{payLoad} and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIODQ2YTdhOTctYjJiMS00NzkxLWE4ZWUtOTlmMDFjYjVhZDVl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIODQ2YTdhOTctYjJiMS00NzkxLWE4ZWUtOTlmMDFjYjVhZDVl" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;So now, we are ready to deploy and test if the authenticated user from the BPM workspace is propagated to the custom ADF application that was included in the Human Task form as an ADF region.&lt;br /&gt;&lt;br /&gt;First, we need to deploy the DemoSOA project by right-clicking the project and selecting Deploy &amp;gt; DemoSOA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINWY0NDRhOWEtNGRkNi00OTQxLWFhNjMtODY4OTVlMWYxZjFm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINWY0NDRhOWEtNGRkNi00OTQxLWFhNjMtODY4OTVlMWYxZjFm" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;and then we need to deploy the human task form. Please note that you should deploy the project that contains the human task form (DemoHT) using the Application menu, Deploy &amp;gt; DemoHT and NOT by right-clicking the project and selecting deploy.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINzFiNTBhMTEtY2U5Ni00YmE0LWE4NTEtOGJhMjQyMGY4ZjY1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINzFiNTBhMTEtY2U5Ni00YmE0LWE4NTEtOGJhMjQyMGY4ZjY1" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Once you have successfully deployed both, DemoSOA and DemoHT projects, please go to the Oracle Enterprise Manage (http://localhost:7001/em), locate the newly deployed SOA Composite Application (DemoSOA) and create a new instance by clicking on the test button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDdhMjJjOTItZDY4Ni00ZjUxLTk4YzQtMzE4ZmIyYzExYjNj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDdhMjJjOTItZDY4Ni00ZjUxLTk4YzQtMzE4ZmIyYzExYjNj" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Specify a value in the input field and click the “Test Web Service” button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTRhOWJlYTAtNjY2Ny00YTc4LTk3YjAtOGQwNjY1MmNhZTcy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTRhOWJlYTAtNjY2Ny00YTc4LTk3YjAtOGQwNjY1MmNhZTcy" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;This will create a new instance of the DemoSOA composite application. If you remember, this composite consists of a BPEL and a Human Task Component. So it will initiate a bpel process and when it reaches the human task component, it will wait for a human intervention by the weblogic user.&lt;br /&gt;&lt;br /&gt;So let’s login to the BPM workspace application (http://localhost:8001/bpm/workspace)  to see all pending tasks.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTc5MjY5M2ItMWQxYy00YWFjLTlmNTYtNmNhMmQ4ZTcwNDk3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTc5MjY5M2ItMWQxYy00YWFjLTlmNTYtNmNhMmQ4ZTcwNDk3" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Click on the DemoSOA task and wait for the human task form to load on the bottom half of the screen.&lt;br /&gt;&lt;br /&gt;Click the “Get Authenticated User” button and, voila, you should see the authenticated user, in this case weblogic, to get propagated from the BPM workspace to the custom ADF Application that we have developed earlier and included in the human task form as an ADF region.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWQ0OTEzNDUtZDQ4MS00MWFiLWE2NmYtMGUxNjI3MTg1ZWFi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWQ0OTEzNDUtZDQ4MS00MWFiLWE2NmYtMGUxNjI3MTg1ZWFi" border="0" height="230" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Download: &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B62-7A9Xi4iIOWQyN2M0OWQtODA5OC00NzYyLWFkYzktN2JkMDg5MzdjZGI2&amp;hl=en_US"&gt;Propagate the authenticated user from BPM to ADF using Contextual Events&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-7214438729693077128?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/7214438729693077128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/08/propagate-authenticated-user-from-bpm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/7214438729693077128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/7214438729693077128'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/08/propagate-authenticated-user-from-bpm.html' title='Propagate the authenticated user from BPM to ADF using Contextual Events'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-6808201087426750837</id><published>2011-06-17T14:08:00.003+03:00</published><updated>2011-06-17T14:12:43.403+03:00</updated><title type='text'>ORABPEL-30017: Initialization Error</title><content type='html'>Product: Oracle SOA/BPM&lt;br /&gt;Version: 11.1.1.4&lt;br /&gt;OS: Windows 7&lt;br /&gt;&lt;br /&gt;I deployed successfully to the SOA Server, however when I open BPM I get an initialization error.&lt;br /&gt;&lt;br /&gt;To fix this error, go to your database, login as XX_SOAINFRA(where XX is the prefix that you specified during the installation of the SOAINFRA schema using the RCU utility) and run the following SQL: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;select processId, processName, domainName, compositeName, revision, scaLabel, compositeDN, label, processType, &lt;br /&gt;targetNamespace, status, organizationalUnitId, subType from BPM_CUBE_PROCESS. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and update the status to -1 for all entries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-6808201087426750837?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/6808201087426750837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/06/orabpel-30017-initialization-error.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6808201087426750837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6808201087426750837'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/06/orabpel-30017-initialization-error.html' title='ORABPEL-30017: Initialization Error'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-5164471839844825485</id><published>2011-03-30T12:08:00.006+03:00</published><updated>2011-03-30T12:15:36.881+03:00</updated><title type='text'>JDeveloper 11g - ADF Workshop for Developers: Video &amp; Photo Content Part 2</title><content type='html'>Finally I managed to find some time and upload some video and photo content from an event that Oracle Cyprus conducted back in October.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDI4ZjJjNmUtZDc5Ni00NGM5LThhYzEtN2Q4NTI4OGJiYzA1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDI4ZjJjNmUtZDc5Ni00NGM5LThhYzEtN2Q4NTI4OGJiYzA1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/t18C3t42-cc" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/FUDnMddHb48" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/Hg35Bp1lOFQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/AiLEHVlJiNQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-5164471839844825485?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/5164471839844825485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/03/jdeveloper-11g-adf-workshop-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/5164471839844825485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/5164471839844825485'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/03/jdeveloper-11g-adf-workshop-for.html' title='JDeveloper 11g - ADF Workshop for Developers: Video &amp; Photo Content Part 2'/><author><name>Antonis Antoniou</name><uri>http://www.blogger.com/profile/03533581039133833814</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://img.youtube.com/vi/t18C3t42-cc/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-199142760018516495</id><published>2011-03-01T10:00:00.002+02:00</published><updated>2011-03-01T10:01:32.266+02:00</updated><title type='text'>WSM-06102 The policy referenced by URI "policy name" could not be retrieved.</title><content type='html'>javax.xml.ws.WebServiceException: javax.xml.rpc.JAXRPCException: oracle.wsm.common.sdk.WSMException: WSM-06102 &lt;br /&gt;The policy referenced by URI "&lt;i&gt;policy name&lt;/i&gt;" could not be retrieved.  &lt;br /&gt;&lt;br /&gt;If you get a Web Services Management error about missing policies, then  most probably you haven't included the "Oracle WSM Policy Manager" product during the creation of your WebLogic domain.&lt;br /&gt;&lt;br /&gt;To solve this, just extend your domain using the Configuration Wizard and include add the "Oracle WSM Policy Manager" product to your domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-199142760018516495?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/199142760018516495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/03/wsm-06102-policy-referenced-by-uri.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/199142760018516495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/199142760018516495'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/03/wsm-06102-policy-referenced-by-uri.html' title='WSM-06102 The policy referenced by URI &quot;&lt;i&gt;policy name&lt;/i&gt;&quot; could not be retrieved.'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-3756076675745219475</id><published>2011-02-02T13:30:00.006+02:00</published><updated>2011-09-16T13:06:50.993+03:00</updated><title type='text'>Web Services Interoperability between Oracle WebLogic Server 11g and Microsoft.NET WCF 4.0</title><content type='html'>Recently I was asked to demonstrate the interoperability in a real life scenario between Oracle WebLogic Server 11g and Microsoft.NET Windows Communication Foundation 4.0 using secure web services. &lt;br /&gt;&lt;br /&gt;After a bit of research, I have found &lt;a href="http://www.oracle.com/technetwork/articles/soa/oracle-msft-interoperate-183511.html"&gt;this&lt;/a&gt; very helpful article by Juan Carlos.&lt;br /&gt;&lt;br /&gt;I will try to extend the above article and provide full step by step instructions on how to create a secure web service, deploy it on your integrated WebLogic Server and use Microsoft.NET WCF 4.0 and C# to consume it.&lt;br /&gt;&lt;br /&gt;So let's start with developing the web service.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;1. In the Applications Navigator, click New Application. Give your application a name (for example HelloWorldApp) and select Generic Application from the application templates. Click next.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWRkNDM3MDctYWQ0Ny00ZTEyLWFhNjctOWVkZDhiOTE3NTFj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWRkNDM3MDctYWQ0Ny00ZTEyLWFhNjctOWVkZDhiOTE3NTFj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;2. Specify a project name (for example HelloWorldPrj) and click finish.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmM2MTVhMGUtMGMyYy00NjBkLWEzNjMtODdkZThkZWNkN2Rk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmM2MTVhMGUtMGMyYy00NjBkLWEzNjMtODdkZThkZWNkN2Rk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;3. Create a new Java class in the newly created project by specifying a class name (HelloWorld), a package name (demo) and uncheck "Constructors from Superclass" and "Implement Abstract Methods" and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzcwYTUwNDUtOWI1OS00NTczLWE5ZWEtNzRjZjcxNWZlZGI1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzcwYTUwNDUtOWI1OS00NTczLWE5ZWEtNzRjZjcxNWZlZGI1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;4. Copy and paste the following code below in your HelloWorld class.&lt;br /&gt;&lt;br /&gt;public String sayHello(String name){&lt;br /&gt;return "Hello " + name;    &lt;br /&gt;}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINWIwN2M3YzQtZjVjOC00YjM3LWEzMWEtZGU3NzAwZDAyN2U2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINWIwN2M3YzQtZjVjOC00YjM3LWEzMWEtZGU3NzAwZDAyN2U2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;5. Once you have done this, click save all and right-click the HelloWorld.java class. From the menu, select "Create Web Service ...".&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmZkNzdhMGQtMzRkNy00N2E2LTk5ZGEtNzY5NWIwMWY0ZGEz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmZkNzdhMGQtMzRkNy00N2E2LTk5ZGEtNzY5NWIwMWY0ZGEz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;6. Select "Java EE 1.5, with support for JAX-WS Annotations" for the deployment platform and click next.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2IxMmFhNDItN2ViNi00Y2NkLWI2Y2MtMWQ3MDYzOWZlOTBh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2IxMmFhNDItN2ViNi00Y2NkLWI2Y2MtMWQ3MDYzOWZlOTBh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;7. In the "Generation Options" step leave the defaults and click next.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzlmN2E5NTAtNGEzYy00ODcwLTk4MWUtMDFlMjg3NDlkZDA1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzlmN2E5NTAtNGEzYy00ODcwLTk4MWUtMDFlMjg3NDlkZDA1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;8. In step 4 of the wizard, select SOAP 1.2 Binding and click next.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTcxMTA0MzAtNTkzYi00ZjdiLWIyZjMtZjk0MGQ4ODY0MTkw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTcxMTA0MzAtNTkzYi00ZjdiLWIyZjMtZjk0MGQ4ODY0MTkw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;9. In steps 5 and 6 click next. In step 7, "Configure Policies", select "OWSM Policies" and "oracle/wss_username_token_service_policy" check box in the security policies and click finish.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTA1N2YyOGUtZDMwYS00MWYxLWE2NTktMjdjNGJkZDc5YTYz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTA1N2YyOGUtZDMwYS00MWYxLWE2NTktMjdjNGJkZDc5YTYz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;10. Right-click the HelloWorld.java class and choose run. By doing so, the integrated WebLogic Server will start and the HelloWorld web service will be deployed to the server. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTc1ZTk2MzAtNTBjYS00ZjRmLWIxNzktZDMyY2Q0ODZiMzM3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTc1ZTk2MzAtNTBjYS00ZjRmLWIxNzktZDMyY2Q0ODZiMzM3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;11. If you have followed my naming suggestions for the project and class name, you should see in the log window of the WebLogic Server a target url,  http://localhost:7101/HelloWorldApp-HelloWorldPrj-context-root/HelloWorldSoap12. This is the actual web service url and JDeveloper provides you with a web service test client utility. Click on the link to test the web service.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjUzZWQ4NTktZTcxNy00Yjg1LWE1MjktNmIwZGVmZTNmY2U0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjUzZWQ4NTktZTcxNy00Yjg1LWE1MjktNmIwZGVmZTNmY2U0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;12. In the HTTP Analyzer window, specify an input value. Make sure that you expand SOAP Headers, WS-Security:Header and check the include check box. In the username and password specify weblogic and weblogic1 respectively. If you do not include the security header, then you will get "InvalidSecurity : error in processing the WS-Security security header". Click Send Request.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2NhNDllOTQtYjlhYS00MzEzLTlhZTEtOTJhMDQ1ZDQ3MWVj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2NhNDllOTQtYjlhYS00MzEzLTlhZTEtOTJhMDQ1ZDQ3MWVj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;13. You should see the reply back from the web service that we have developed and deployed on our WebLogic Server.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINmEyNzQyN2ItYzRhZi00MTcxLWEyMDEtYTE2ZTA1MzBiMjhi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINmEyNzQyN2ItYzRhZi00MTcxLWEyMDEtYTE2ZTA1MzBiMjhi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;14. Before proceeding with creating a client to consume the web service, please copy the wsdl url (http://localhost:7101/HelloWorldApp-HelloWorldPrj-context-root/HelloWorldSoap12HttpPort?WSDL), as we will need it to create the proxy class from Visual Studio.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINmMzZmQ3M2YtYWY2NC00ZGY5LTg5NTItZWFlNjM4MmJmNWJi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINmMzZmQ3M2YtYWY2NC00ZGY5LTg5NTItZWFlNjM4MmJmNWJi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;15. For creating the proxy class from our wsdl file, we will beusing the ServiceModel Metadata Utitlity Tool, called scvutil.exe.The ServiceModel Metadata Utility tool is used to generate service model code from metadata documents and metadata documents from service model code. So navigate to "C:\Program Files\Microsoft SDKs\Windows" and you should see one or more version folders. Open the latest folder (in my case i only have one, v7.0A) and then bin (the complete path is "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin") and copy the path.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTQyODZlOWUtMTA2YS00NDEzLTg5MWMtNWNkOTI1Nzc3YmZm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTQyODZlOWUtMTA2YS00NDEzLTg5MWMtNWNkOTI1Nzc3YmZm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;16. Right-click "Computer" and select "Properties". Click "Advanced System Settings" and select the "Advanced" tab. Then click "Environment variables".&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWJmZDQ2Y2MtMjEyNi00MWY2LTljZDEtMzQ3Njc2Mjk5Njg1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWJmZDQ2Y2MtMjEyNi00MWY2LTljZDEtMzQ3Njc2Mjk5Njg1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;17. Under "System variables", select the "Path" variable. Go to the end of the variable value and after including a semicolon (;), paste the ServiceModel Metadata Utility tool full path (C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINGJhODc1OTEtZTA0Mi00ODcwLWI0ODktZWY0MTJmNzBkMjky" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINGJhODc1OTEtZTA0Mi00ODcwLWI0ODktZWY0MTJmNzBkMjky" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;18. Click "OK" on the "Edit System Variable", "Environment Variables" and "System Properties" to save and dismiss all three windows. Open a command prompt and navigate to your desired location (in my case I have created a folder called demo on my desktop). Write the following command, "svcutil &lt;wsdl_url&gt;, to create the proxy class from the wsdl file. Please note to replace the &lt;wsdl_url&gt; with your wsdl url location. In my case it is "http://localhost:7101/HelloWorldApp-HelloWorldPrj-context-root/HelloWorldSoap12HttpPort?WSDL". If you run this command as it is, it will create a C# proxy class for the web service specified in the wsdl and a configuration file. if you want to generate the class in another language, svcutil provides you with a parameter called "language" where you can specify the language code to be generated (for example, you can append after the url location /language:VB to generate the class in visual basic). &lt;br /&gt;&lt;/wsdl_url&gt;&lt;/wsdl_url&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDZlMWEwNDUtMTBlOC00ZDljLTg3ZmQtMTU0YWE5NDlmMjQ" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDZlMWEwNDUtMTBlOC00ZDljLTg3ZmQtMTU0YWE5NDlmMjQ1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;19. The svcutil utility will generate two files, HelloWorldService.cs which is the C# proxy class and the output.config file, which is the configuration file. If you see warnings about policy assertions not being imported, don't worry, we will handle the security headers later.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjgwMmI2MDItNTNmZS00ZWQyLWJhMTAtYTlhZWE5ZmI0Nzc5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjgwMmI2MDItNTNmZS00ZWQyLWJhMTAtYTlhZWE5ZmI0Nzc5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;20. Open Microsoft Visual Studio and create a new project.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINmFjNWY5ZmEtNGE0NC00ZDhhLWJjNDctZjgzNWQzODQ1NTQ0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINmFjNWY5ZmEtNGE0NC00ZDhhLWJjNDctZjgzNWQzODQ1NTQ0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;21. From the Installed Templates, expand Visual C# and select Windows.Select Console Application, give your project a name (for example, HelloWorldVS) and click Ok.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjIzZDMyODEtOTdiMy00N2FjLTg3MDUtNTJiYjdlYWFiNDdk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjIzZDMyODEtOTdiMy00N2FjLTg3MDUtNTJiYjdlYWFiNDdk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;22. Before proceeding and importing the two files generated (HelloWorldService.cs and output.config), we need to add to our project references to two assemblies for our solution to work. So right-click References and click "Add Reference".&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGQ5MmQzYmEtNmMwMy00NDJhLThkMzMtNzRhYWNhYzM4NjQw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGQ5MmQzYmEtNmMwMy00NDJhLThkMzMtNzRhYWNhYzM4NjQw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;23. From the "Add Reference" window, select the .NET tab and select "System.Runtime.Serialization" and "System.Service.Model" and click OK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2M1NTRlNGQtZWRhYy00YWJlLWI2OTctODY5OWRkNmZiM2Rk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIM2M1NTRlNGQtZWRhYy00YWJlLWI2OTctODY5OWRkNmZiM2Rk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;24. Next, right-click your project name (HelloWorldVS) and select Add -&amp;gt; Existing Item from the menu.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTAwOThjZWUtNDRkZi00MTJmLTg5YjQtOTA5MTUzYWI4MGVm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTAwOThjZWUtNDRkZi00MTJmLTg5YjQtOTA5MTUzYWI4MGVm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;25. Navigate to the folder where your proxy and configuration file is (generated by svcutil) and make sure that the file filter is set to "All files (*.*)" so that both files (HelloWorldService.cs and output.config) are visible. Select both files and click "Add".&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTBiYmZkMzUtN2U1Mi00YmQ3LTg4YzYtZjFlZjJiOWI4YzA4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTBiYmZkMzUtN2U1Mi00YmQ3LTg4YzYtZjFlZjJiOWI4YzA4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;26. You should see the two files now in your project. Open the Program.cs file and in the main method, copy and paste the following code:&lt;br /&gt;&lt;br /&gt;HelloWorldClient client = new HelloWorldClient();&lt;br /&gt;String response = client.sayHello("Antonis Antoniou");&lt;br /&gt;Console.WriteLine(response);&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTM3NjE1ZWUtOWM2ZC00MjgzLWI1YTQtNTgxMDJkYzNiNDRi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTM3NjE1ZWUtOWM2ZC00MjgzLWI1YTQtNTgxMDJkYzNiNDRi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;27. If you attempt to run the application (F5), you should see "Could not find default endpoint element that references contract 'HelloWorld' in the ServiceModel client configuration section.". This is because it is missing an application configuration file. Although we have imported the configuration file generated by svcutil, it is not recognized.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzA1NTIzMzAtYzBhYS00NDJmLWI2NjMtOWQyZWEyYjZjMTE3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzA1NTIzMzAtYzBhYS00NDJmLWI2NjMtOWQyZWEyYjZjMTE3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;28. A simple trick to overcome this issue is to rename the output.config file to app.config. So if you rename the configuraiton file to app.config and run the application, the above error should disappear. However, a new error arises, "The CustomBinding on the ServiceEndpoint with contract 'HelloWorld' lacks a TransportBindingElement.  Every binding must have at least one binding element that derives from TransportBindingElement.". &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTg3MjRiZTctODE4MS00M2Y4LTkwMDMtZGNkZmExMDczYzM4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTg3MjRiZTctODE4MS00M2Y4LTkwMDMtZGNkZmExMDczYzM4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;29. What this basically means is that because in our configuration file, a custom binding is specified, we need to define a transport protocol (for example, http, https). To do so, open the app.config file and just after the closing textMessageEncoding element, add the following:&lt;br /&gt;&lt;httptransport&gt;&lt;/httptransport&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTUxNjJiY2QtZjJiNS00NWVmLWJlNzItZDUwZTA1NDQzMDJl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTUxNjJiY2QtZjJiNS00NWVmLWJlNzItZDUwZTA1NDQzMDJl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;30. If you run the application again, the TransportBindingElement error should be resolved. However now we have a new error,  "InvalidSecurity : error in processing the WS-Security security header". As the error indicates, a security header is expected by our HelloWorld web service and we have not provided one.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTdjMTFiZDUtZWNiZC00MTY3LTg1Y2YtZDM2Mjc1NjFkZjk2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTdjMTFiZDUtZWNiZC00MTY3LTg1Y2YtZDM2Mjc1NjFkZjk2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;31. The easiest way to provide this security header along with the username and password required to run the web service is again though the app.config configuration file. So open the app.config file and within the endpoint element add the security headers xml tags as shown in the image below.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINWQzMzczZTMtOTM3My00YzlkLTk2MDUtNjc4ODMwYjgzNGEw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINWQzMzczZTMtOTM3My00YzlkLTk2MDUtNjc4ODMwYjgzNGEw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;32. Run the application again (Ctrl + F5). You should see the return statement from the HelloWorld web service&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIODA0NTliNTUtNjZlYy00YTA2LTlmNTctNDc3NGQ5ZWFmOTk0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIODA0NTliNTUtNjZlYy00YTA2LTlmNTctNDc3NGQ5ZWFmOTk0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Download: &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B62-7A9Xi4iIODgxNjg0YzktMGQwMi00OWNkLTllZWMtOGM1MzRjYTlmYjhi&amp;hl=en_US"&gt;JDeveloper Application&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Download: &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B62-7A9Xi4iINzRmZjljYTEtZTdkNi00ZGQ0LTlhMjMtOTNjNTcxNGJlZGE4&amp;hl=en_US"&gt;Visual Studio Application&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-3756076675745219475?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/3756076675745219475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/02/web-services-interoperability-between.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/3756076675745219475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/3756076675745219475'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/02/web-services-interoperability-between.html' title='Web Services Interoperability between Oracle WebLogic Server 11g and Microsoft.NET WCF 4.0'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-4006581823854364527</id><published>2011-01-31T13:29:00.000+02:00</published><updated>2011-01-31T13:29:13.449+02:00</updated><title type='text'>JDeveloper 11g - ADF Workshop for Developers: Video &amp; Photo Content</title><content type='html'>Following a recent workshop conducted in Cyprus, I have uploaded some video and photo content from the event.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/SLHj3Vf12kw" title="YouTube video player" type="text/html" width="460"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-4006581823854364527?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/4006581823854364527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/01/jdeveloper-11g-adf-workshop-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/4006581823854364527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/4006581823854364527'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2011/01/jdeveloper-11g-adf-workshop-for.html' title='JDeveloper 11g - ADF Workshop for Developers: Video &amp; Photo Content'/><author><name>Antonis Antoniou</name><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://img.youtube.com/vi/SLHj3Vf12kw/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-6429396961051611178</id><published>2010-12-01T11:04:00.005+02:00</published><updated>2011-03-24T12:07:04.548+02:00</updated><title type='text'>JDeveloper Fine-Tuning</title><content type='html'>I had a lot of requests on how to fine-tune JDeveloper so I have decided to upload some tips on how to improve the performance of your JDeveloper.&lt;br /&gt;&lt;br /&gt;All JDeveloper configurations settings are store in the jdev.conf configuration file which is located in the C:\&amp;lt;&lt;i&gt;middleware_home&lt;/i&gt;&amp;gt;\jdeveloper\jdev\bin directory. There are several configuration options that you can change to fine-tune your JDeveloper. Please note that all of them are clearly commented.&lt;br /&gt;&lt;br /&gt;A specific request was that JDeveloper was quite slow in deploying and running an ADF Web Application. What i would suggest is to alter the maximum and minimum  heap size the Java             virtual machine can address. In my case I am using JDeveloper 11g 11.1.1.3.0 with the default installed jdk (C:\&amp;lt;&lt;i&gt;middleware_home&lt;/i&gt;&amp;gt;\jdk160_18). If you start your integrated weblogic server, you should see that the default minimum heap size (-Xmx) is 256m and the default maximum heap size (-Xmx) is 512m. The difference between the two values is the virtual memory. I would recommend that you increase these values to overcome the performance issues that you are facing.&lt;br /&gt;&lt;br /&gt;Furthermore, Oracle provides you with many documents related to java performance and can be located &lt;a href="http://www.oracle.com/technetwork/java/performance-138178.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-6429396961051611178?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/6429396961051611178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/12/jdeveloper-fine-tuning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6429396961051611178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6429396961051611178'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/12/jdeveloper-fine-tuning.html' title='JDeveloper Fine-Tuning'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-6396004052485511875</id><published>2010-11-23T16:20:00.003+02:00</published><updated>2011-03-24T20:54:17.273+02:00</updated><title type='text'>Integrating Web Services into your ADF Application Part 2</title><content type='html'>Sorry for the late post but I was constantly travelling and just found some time to finish my second part of integrating web services into your ADF application.&lt;br /&gt;&lt;br /&gt;In this demo I have tried to integrate the reporting capabilities that Oracle BI Publisher offers with Oracle ADF through the use of web services.&lt;br /&gt;&lt;br /&gt;More specifically, I have used a web service proxy to connect to the PublicReportService BI Publisher web service. Based on the selected employee (rendered using an ADF table), the appropriate employee id is passed to the runReport method of PublicReportService web service. This in turn runs the employee report which creates a pdf report and presents the generated report to the end user.&lt;br /&gt;&lt;br /&gt;I have uploaded a complete step-by-step tutorial on how to achieve the above mentioned functionality along with the source code of my demo (&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTcyZDk0Y2ItMThlZi00MDVlLWI5OWEtZDkwNjA4Mzc3NjMw&amp;export=download&amp;hl=en"&gt;ADFBIPublisher&lt;/a&gt;).&lt;table&gt;&lt;tr&gt;&lt;td&gt;This tutorial shows you how you can consume an existing web service from your ADF Web Application using a web service proxy. More specifically, how to consume a BI Publisher web service, called PublicReportService, to run a report from your ADF Web Application.&lt;br&gt;&lt;br&gt;For the purpose of this tutorial, I am using Oracle JDeveloper 11g Version 11.1.1.3.0, Oracle Database 11g Standard Edition Version 11.2.0.1.0, Oracle BI Publisher Version 10.1.3.4.1 and Oracle BI Publisher Desktop Version 10.1.3.4.1. All mentioned software can be downloaded from &lt;a href="http://www.oracle.com/technology/index.html"&gt;Oracle Technology Network&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Please note that this tutorial assumes that you have installed Oracle Database 11g Standard Edition  with at least the HR sample schema, Oracle BI Publisher Version 10.1.3.4.1 and Oracle BI Publisher Desktop Version 10.1.3.4.1.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Create a Report using BI Publisher&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1. Navigate to the Oracle BI Publisher page (http:&lt;i&gt;//&lt;hostname&gt;:&lt;port&gt;/ &lt;/i&gt;xmlpserver/) and sign in.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWI0MDRmOTYtMjM1My00ZDhhLTg3ZTItZDU0NDJhNTgyNDgw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWI0MDRmOTYtMjM1My00ZDhhLTg3ZTItZDU0NDJhNTgyNDgw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. Select the &lt;b&gt;Admin&lt;/b&gt; tab to access the Administration area.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjhjMzBhMGEtN2EwOS00NmE0LWJlZDUtZDMzMjgwMDdlYzQz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjhjMzBhMGEtN2EwOS00NmE0LWJlZDUtZDMzMjgwMDdlYzQz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. Under Data Sources, click the JDBC Connection&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTVkZDNiZjEtNGY1ZS00NGE4LTk4MjAtMTc4YWQ4NmRmNGUw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTVkZDNiZjEtNGY1ZS00NGE4LTk4MjAtMTc4YWQ4NmRmNGUw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4. Click the Add Data Source button to create a new data source connection to the HR sample Schema. Specify &lt;b&gt;HRDataSource&lt;/b&gt; in the Data Source Name, in the Driver Type select &lt;b&gt;Oracle 11g&lt;/b&gt; and in the Database Driver Class ensure that &lt;b&gt;oracle.jdbc.OracleDriver&lt;/b&gt; is defined. In the connection string, specify the host, port and sid of your installed database (eg. &lt;b&gt;jdbc:oracle:thin:@localhost:1521:orcl&lt;/b&gt;). Specify the username and password for the HR schema and click &lt;b&gt;Test Connection&lt;/b&gt;. Once you get a successful connection confirmation, click &lt;b&gt;Apply&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWQ3MWNjMGEtMzNjZS00MTZlLWFhMjktNzIyMTFmYjZiNzg4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWQ3MWNjMGEtMzNjZS00MTZlLWFhMjktNzIyMTFmYjZiNzg4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5. Click the &lt;b&gt;Reports&lt;/b&gt; tab and from the Reports page, click the &lt;b&gt;Shared Folders&lt;/b&gt; link.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDhmZjlmYjMtMjU0YS00OTM0LTlkOWItNTgyNzhkNjQyZjQy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDhmZjlmYjMtMjU0YS00OTM0LTlkOWItNTgyNzhkNjQyZjQy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6. In the “Folder and Report Tasks” pane, select &lt;b&gt;Create a new folder&lt;/b&gt;, assign the name &lt;b&gt;Demo&lt;/b&gt; to the folder and click &lt;b&gt;Create&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzdlZTFhYjYtNzNiOC00NWRiLTkwODQtOGEyNGM4Mjc5N2U1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzdlZTFhYjYtNzNiOC00NWRiLTkwODQtOGEyNGM4Mjc5N2U1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7. Click the newly created folder &lt;b&gt;Demo&lt;/b&gt; and from the “Folder and Report Tasks” pane click &lt;b&gt;Create a new report&lt;/b&gt;. In the “Enter Report Name” text box, enter &lt;b&gt;Employee&lt;/b&gt; and click &lt;b&gt;Create&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDhhNWFhNzktMWU3Yy00NDc0LTgxMmYtNzc2ODU1NzdmMWY0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDhhNWFhNzktMWU3Yy00NDc0LTgxMmYtNzc2ODU1NzdmMWY0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8. From the newly create report “Employee” that has been created click the &lt;b&gt;Edit&lt;/b&gt; link to edit the report.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTQ0MDZiMGQtYjdiNS00NjcyLTk0Y2ItZDkzYTk3ZjQ2N2M1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTQ0MDZiMGQtYjdiNS00NjcyLTk0Y2ItZDkzYTk3ZjQ2N2M1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9. The first step is to create a data model for our new report. So click the &lt;b&gt;Data Model&lt;/b&gt; menu option under the “Report” tree structure and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjdlNDE0ZWQtZjFhYi00NTRjLWEyYjUtN2QyZTMyYmE4ZjFl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjdlNDE0ZWQtZjFhYi00NTRjLWEyYjUtN2QyZTMyYmE4ZjFl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10. Under “General Settings”, specify the name to be &lt;b&gt;Employee DataSet&lt;/b&gt; and ensure that the “Type” is set to be SQL Query. Under the “Details”section, specify the data source to be the &lt;b&gt;HRDataSource&lt;/b&gt; that you have created a few steps before. In the SQL Query, click the &lt;b&gt;Query Builder&lt;/b&gt; to declaratively specify your SQL query.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjM4MjdkOTQtNTIyZi00MjhkLTkxY2YtNTk0NDMxYjBiMGMx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjM4MjdkOTQtNTIyZi00MjhkLTkxY2YtNTk0NDMxYjBiMGMx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11. From the Query Builder window, click the &lt;b&gt;Employees&lt;/b&gt; table and it will bring it to the main centre area.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWMwZWY5YzQtZGUxMi00ZTlhLWFjMmEtMjZkNWE1MzY3NjBh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWMwZWY5YzQtZGUxMi00ZTlhLWFjMmEtMjZkNWE1MzY3NjBh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12. We will be needing the &lt;b&gt;JOBS&lt;/b&gt; table, as our main table EMPLOYEES has an external reference JOB_ID to the JOBS table (we want to display the actual job name and not an id), so click the &lt;b&gt;JOBS&lt;/b&gt; table, &lt;b&gt;EMPLOYEES&lt;/b&gt; tables (again) and the &lt;b&gt;DEPARTMENTS&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTY0ZGJkZmUtOWI2Ni00Yzg1LWI5NDMtYTZjZTk0YjQxOWY3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTY0ZGJkZmUtOWI2Ni00Yzg1LWI5NDMtYTZjZTk0YjQxOWY3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13. From the EMPLOYEES table, select &lt;b&gt;all&lt;/b&gt; the columns &lt;b&gt;except&lt;/b&gt; from the JOB_ID, MANAGER_ID and DEPARTMENT_ID. From the JOBS table select the &lt;b&gt;JOB_TITLE&lt;/b&gt; column, from the EMPLOYEES_1 table select &lt;b&gt;FIRST_NAME&lt;/b&gt; and &lt;b&gt;LAST_NAME&lt;/b&gt; and from the DEPARTMENTS table select &lt;b&gt;DEPARTMENT_NAME&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjQxZGQwMTQtZjNjNC00OGI5LTk1NzYtMWJlM2U3MTE5MDI3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjQxZGQwMTQtZjNjNC00OGI5LTk1NzYtMWJlM2U3MTE5MDI3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14. Now it is time to define the external references that the EMPLOYEE table has with the other three tables. From the Employees table, to the right of the &lt;b&gt;JOB_ID&lt;/b&gt; column, single click on the blank cell next to “A”. Do the same thing with the &lt;b&gt;JOB_ID&lt;/b&gt; column in the JOBS table. You should see the relationship being created.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzdjNDhhM2QtMzU3Zi00NzE2LWI1YzktY2EwMWNjZTZjZmQ0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzdjNDhhM2QtMzU3Zi00NzE2LWI1YzktY2EwMWNjZTZjZmQ0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15. Do the same thing for the &lt;b&gt;MANAGER_ID&lt;/b&gt; from the &lt;b&gt;EMPLOYEES&lt;/b&gt; table with the &lt;b&gt;MANAGER_ID&lt;/b&gt; from the &lt;b&gt;EMPLOYEES_1&lt;/b&gt; table, and the same with &lt;b&gt;DEPARTMENT_ID&lt;/b&gt; from the &lt;b&gt;EMPLOYEES&lt;/b&gt; table with the &lt;b&gt;DEPARTMENT_ID&lt;/b&gt; from the &lt;b&gt;DEPARTMENTS&lt;/b&gt; table. Once finished, click &lt;b&gt;Save&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWE1YmIyMmItY2YwZi00NzIxLTkzZGEtZGJkN2E0ZWMzZWNh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWE1YmIyMmItY2YwZi00NzIxLTkzZGEtZGJkN2E0ZWMzZWNh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16. You should see now in the SQL Query input box the query being populate as follows:&lt;br&gt;&lt;br /&gt;select  EMPLOYEES.EMPLOYEE_ID as EMPLOYEE_ID,&lt;br /&gt;EMPLOYEES.FIRST_NAME as FIRST_NAME,&lt;br /&gt;  EMPLOYEES.LAST_NAME as LAST_NAME,&lt;br /&gt;  EMPLOYEES.EMAIL as EMAIL,&lt;br /&gt;  EMPLOYEES.PHONE_NUMBER as PHONE_NUMBER,&lt;br /&gt;  EMPLOYEES.HIRE_DATE as HIRE_DATE,&lt;br /&gt;  EMPLOYEES.SALARY as SALARY,&lt;br /&gt;  EMPLOYEES.COMMISSION_PCT as COMMISSION_PCT,&lt;br /&gt;  JOBS.JOB_TITLE as JOB_TITLE,&lt;br /&gt;  EMPLOYEES_1.FIRST_NAME as FIRST_NAME,&lt;br /&gt;  EMPLOYEES_1.LAST_NAME as LAST_NAME,&lt;br /&gt;  DEPARTMENTS.DEPARTMENT_NAME as DEPARTMENT_NAME &lt;br /&gt; from  HR.DEPARTMENTS DEPARTMENTS,&lt;br /&gt;  HR.EMPLOYEES EMPLOYEES_1,&lt;br /&gt;  HR.JOBS JOBS,&lt;br /&gt;  HR.EMPLOYEES EMPLOYEES &lt;br /&gt; where   EMPLOYEES.JOB_ID=JOBS.JOB_ID&lt;br /&gt; and  EMPLOYEES.MANAGER_ID=EMPLOYEES_1.EMPLOYEE_ID&lt;br /&gt; and  EMPLOYEES.DEPARTMENT_ID=DEPARTMENTS.DEPARTMENT_ID&lt;br&gt;&lt;br /&gt;Please make the following change to the manager first name and manager last name columns, as the data come from the same table and we have the same column names as with employee first name and last name. The change is highlighted in bold:&lt;br&gt;&lt;br /&gt;select  EMPLOYEES.EMPLOYEE_ID as EMPLOYEE_ID,&lt;br /&gt;  EMPLOYEES.FIRST_NAME as FIRST_NAME,&lt;br /&gt;  EMPLOYEES.LAST_NAME as LAST_NAME,&lt;br /&gt;  EMPLOYEES.EMAIL as EMAIL,&lt;br /&gt;  EMPLOYEES.PHONE_NUMBER as PHONE_NUMBER,&lt;br /&gt;  EMPLOYEES.HIRE_DATE as HIRE_DATE,&lt;br /&gt;  EMPLOYEES.SALARY as SALARY,&lt;br /&gt;  EMPLOYEES.COMMISSION_PCT as COMMISSION_PCT,&lt;br /&gt;  JOBS.JOB_TITLE as JOB_TITLE,&lt;br /&gt;  EMPLOYEES_1.FIRST_NAME as &lt;b&gt;MANAGER_FIRST_NAME&lt;/b&gt;,&lt;br /&gt;  EMPLOYEES_1.LAST_NAME as &lt;b&gt;MANAGER_LAST_NAME&lt;/b&gt;,&lt;br /&gt;  DEPARTMENTS.DEPARTMENT_NAME as DEPARTMENT_NAME &lt;br /&gt; from  HR.DEPARTMENTS DEPARTMENTS,&lt;br /&gt;  HR.EMPLOYEES EMPLOYEES_1,&lt;br /&gt;  HR.JOBS JOBS,&lt;br /&gt;  HR.EMPLOYEES EMPLOYEES &lt;br /&gt; where   EMPLOYEES.JOB_ID=JOBS.JOB_ID&lt;br /&gt; and  EMPLOYEES.MANAGER_ID=EMPLOYEES_1.EMPLOYEE_ID&lt;br /&gt; and  EMPLOYEES.DEPARTMENT_ID=DEPARTMENTS.DEPARTMENT_ID&lt;br&gt;&lt;br /&gt;Before saving our work, please note that we have to manually input a where clause to limit the number of records retrieved by the SQL query to just a single employee record. Please append at the end of the SQL Query the following command:&lt;br&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;“and EMPLOYEES.EMPLOYEE_ID = :pEmployeeId”&lt;/b&gt;&lt;/i&gt;&lt;br&gt;&lt;br /&gt;Click &lt;b&gt;Save&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjBjNDZjZDMtM2ViOC00N2VkLWJkNzctMzU2Yzk5ODA4OWVj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjBjNDZjZDMtM2ViOC00N2VkLWJkNzctMzU2Yzk5ODA4OWVj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;17. The next thing is to define the parameter  pEmployeeId that we have inserted in our SQL Query, so click on the &lt;b&gt;Parameters&lt;/b&gt; link and then &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDYxMjhhOGMtN2MwOC00MTRiLWIzYTQtMDFlMjlkOTYxZWQw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDYxMjhhOGMtN2MwOC00MTRiLWIzYTQtMDFlMjlkOTYxZWQw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;18. Under “General Settings”, specify &lt;b&gt;pEmployeeId&lt;/b&gt; in the Identifier field. In the “Text Setting” area, specify &lt;b&gt;Employee Id&lt;/b&gt; in the Identifier field and click Save.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDE3M2QyZDMtOGUwNy00NTFkLTljZWYtMjY2ZDY5MDJkY2Iw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDE3M2QyZDMtOGUwNy00NTFkLTljZWYtMjY2ZDY5MDJkY2Iw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;19. Now we are ready to test our report. To test it, click the &lt;b&gt;View&lt;/b&gt; link.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDM2MThiMGEtM2U2MC00YTE2LThlNmItZDdkOTEyNDhhN2Q2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDM2MThiMGEtM2U2MC00YTE2LThlNmItZDdkOTEyNDhhN2Q2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;20. In the Employee Id enter the value &lt;b&gt;200&lt;/b&gt;. On the left hand side of the View button there is a drop down menu that if you expand you will notice that only &lt;b&gt;Data&lt;/b&gt; is available. Because we did not specify a template yet, the only available output option is Data, which is basically xml. We will need this xml data to construct our template, so click &lt;b&gt;View&lt;/b&gt; and once the data have been generated, click the &lt;b&gt;Export&lt;/b&gt; button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzE3MGJiMjQtOTM0OC00MjcwLTgzZmYtNDlhM2RkNmY3ZTY1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzE3MGJiMjQtOTM0OC00MjcwLTgzZmYtNDlhM2RkNmY3ZTY1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;21. Save the xml data locally (for example on your desktop) and then open Microsoft Office to design the template. Please note that again, I am assuming that you have installed Oracle BI Publisher Desktop Version 10.1.3.4.1 which attaches some BI add-ons in Microsoft Office products. So open Microsoft Office and design your preferred layout for your Employee Report. I have designed a simple report, with the Oracle log and date and page number on the header field, a title and a table to hold my employee details.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2RiOTdiM2EtNTQ0NC00YWZjLWIyYmEtMDM0MTU1MmMyZGNi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2RiOTdiM2EtNTQ0NC00YWZjLWIyYmEtMDM0MTU1MmMyZGNi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;22. The next thing to do is to load the xml data that we have downloaded from running our report to Microsoft Word. So click on the &lt;b&gt;Add-Ins&lt;/b&gt; ribbon tab, &lt;b&gt;Data&lt;/b&gt; and &lt;b&gt;Load XML Data&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINzFkMjAwODgtNGNlMS00ODRmLWFjMzgtODk3NWY4ZWJkNjMw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINzFkMjAwODgtNGNlMS00ODRmLWFjMzgtODk3NWY4ZWJkNjMw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;23. Select your &lt;b&gt;Employee.xml&lt;/b&gt; and click &lt;b&gt;Open&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTI5M2E2MjItMjQ5Ni00ODA2LTlkNzgtMDg4MmMwYWU3OTU0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTI5M2E2MjItMjQ5Ni00ODA2LTlkNzgtMDg4MmMwYWU3OTU0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;24. Click &lt;b&gt;OK&lt;/b&gt; to dismiss the “Data Loaded Successfully” window. Place your cursor to the empty table cell next to the Employee Id and select from the menu &lt;b&gt;Insert and Field&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOGNhZTY2MjMtNjI0ZS00ZjNjLTg0NDktMTE1OTZlYjkzODBm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOGNhZTY2MjMtNjI0ZS00ZjNjLTg0NDktMTE1OTZlYjkzODBm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;25. As you can notice, the field browser window contains all the fields specified in the SQL query that we have defined in our report using BI Publisher. So select &lt;b&gt;Employee Id&lt;/b&gt; and click &lt;b&gt;Insert&lt;/b&gt;. The EMPLOYEE_ID has been added next to the Employee Id cell.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjhlOTJjYmUtYzFjNi00ZjllLTkzM2EtMGM0YWEwYjBiM2Vi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjhlOTJjYmUtYzFjNi00ZjllLTkzM2EtMGM0YWEwYjBiM2Vi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;26. Perform the same thing, but each time inserting the appropriate field to the report. Please note that in our field browser we have FirstName and LastName, however in our report we have Name. So to concatenate first name and last name, just insert the &lt;b&gt;FirstName&lt;/b&gt;, hit &lt;b&gt;the space bar&lt;/b&gt; once and insert the &lt;b&gt;LastName&lt;/b&gt; field. Your report should look as follows:&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzUwMDc4ZGUtYTNkOC00NWNlLWIzMDYtY2NiOTkzNTAzNjk0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzUwMDc4ZGUtYTNkOC00NWNlLWIzMDYtY2NiOTkzNTAzNjk0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;27. Although our SQL query will return only one record, the field browser assumes that it may return more than one records. So for our template to work, we need to specify a loop, just in case more than one record is returned. To achieve this place your cursor between the “Employee Report” title and the table, and double click the Row element from the field browser. You should see the ROW element inserted.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjJhOGJiOGUtOGYwYS00YWZlLWJmNTUtNTk4ODliMGE0ZmFj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjJhOGJiOGUtOGYwYS00YWZlLWJmNTUtNTk4ODliMGE0ZmFj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;28. Close the field browser, place your cursor at the beginning of the ROW element, and select from the menu &lt;b&gt;Oracle BI Publisher&lt;/b&gt;, &lt;b&gt;Insert&lt;/b&gt; and &lt;b&gt;Repeating Group&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWJiNGM0OTgtOTVkNi00ZGNmLTlmOWMtNjc1ZWI4MjM5NjEy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWJiNGM0OTgtOTVkNi00ZGNmLTlmOWMtNjc1ZWI4MjM5NjEy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;29. On the BI Publisher Properties window, click &lt;b&gt;OK&lt;/b&gt;. You will notice that it has created a &lt;b&gt;for-each&lt;/b&gt; element and an &lt;b&gt;end&lt;/b&gt; element between your &lt;b&gt;ROW&lt;/b&gt; element.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWMzY2U5NTUtOWZkNC00YmQ0LWJlNzctMGFjNzVhZjUxMzAy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWMzY2U5NTUtOWZkNC00YmQ0LWJlNzctMGFjNzVhZjUxMzAy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;30. Select the &lt;b&gt;end&lt;/b&gt; element and move it to the end of the table.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWY3NWNhMDEtMjBiMi00YWI5LWI0ZDgtMjY3ODlhM2M2ZmVk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWY3NWNhMDEtMjBiMi00YWI5LWI0ZDgtMjY3ODlhM2M2ZmVk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;31. Save the template as a Rich Text Template and name it &lt;b&gt;Employees&lt;/b&gt;. You can now close the word file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDI4ODcwYWYtZjMyNS00NjYyLWE4MzctMmM0M2JlOWFhNzcy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDI4ODcwYWYtZjMyNS00NjYyLWE4MzctMmM0M2JlOWFhNzcy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;32. Access the Oracle BI Publisher application and edit your Employee report under the Demo folder that we have created and click the &lt;b&gt;Layout&lt;/b&gt; menu.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDY4YTg1ZjktMzhmYS00YTBmLWIyOTAtOWM4YTYwNWE0NGIw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDY4YTg1ZjktMzhmYS00YTBmLWIyOTAtOWM4YTYwNWE0NGIw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;33. Under the “Manage Template Files” click the &lt;b&gt;Browse&lt;/b&gt; button and browse to the &lt;b&gt;Employees.rtf&lt;/b&gt; template that we have just created, click &lt;b&gt;Open&lt;/b&gt; and then &lt;b&gt;Upload&lt;/b&gt;. You should see the Employees.rtf file uploaded.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINGM0MzhmMjEtMTc4Mi00ZjNkLWEzYTUtMjgwNjc0MzEyZWQw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINGM0MzhmMjEtMTc4Mi00ZjNkLWEzYTUtMjgwNjc0MzEyZWQw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;34. Having the Layouts menu option selected, click the &lt;b&gt;New&lt;/b&gt; button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjAxMDJiNDctZjNiNS00MTA5LTgzMzQtMzVkZDExZTE2N2Zl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjAxMDJiNDctZjNiNS00MTA5LTgzMzQtMzVkZDExZTE2N2Zl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;35. In the name, specify &lt;b&gt;Employee Template&lt;/b&gt; and ensure that the &lt;b&gt;Employees.rtf&lt;/b&gt; template is selected in the Template drop down. In the Output Format, make sure that &lt;b&gt;All Formats&lt;/b&gt; radio option is selected and click &lt;b&gt;Save&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINGQyMWZhM2ItYzNiZi00OWZiLWE4Y2UtMWY2NGUxZjM1NTVh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINGQyMWZhM2ItYzNiZi00OWZiLWE4Y2UtMWY2NGUxZjM1NTVh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;36. Click the &lt;b&gt;View&lt;/b&gt; link once the report has been saved to test our final report. In the Employee Id input field, enter &lt;b&gt;200&lt;/b&gt;. Next to the Employee Template, select from the drop down menu PDF and then click &lt;b&gt;View&lt;/b&gt;. Your report should be rendered in PDF format and display the details for employee Jennifer Whalen.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDU0Yjg3MWEtYjExZC00YTUxLTg5MjctNmMwMjc3NjA1N2Zi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDU0Yjg3MWEtYjExZC00YTUxLTg5MjctNmMwMjc3NjA1N2Zi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Consume the Report from ADF&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1. Open JDeveloper and create a new Application.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTY3MmRmOTMtZWQ0My00OTc3LTlkZWQtMzAxMTIwMzQ1NDFh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTY3MmRmOTMtZWQ0My00OTc3LTlkZWQtMzAxMTIwMzQ1NDFh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. In the Create Application dialog box, specify the Application Name to be ADFBIPublisher, in the Application Package Prefix field set the value to be &lt;b&gt;demo&lt;/b&gt; and in the Application Templates choose the &lt;b&gt;Fusion Web Application (ADF)&lt;/b&gt; and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINWIzMmEzYzAtNmY2OC00NWNhLTg3YmEtYWVlNDU0ODEzNjZl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINWIzMmEzYzAtNmY2OC00NWNhLTg3YmEtYWVlNDU0ODEzNjZl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. Close the ADFBIPublisher Overview window as we will not be using it. In the Application Navigator you'll see two new projects now, one called &lt;b&gt;Model&lt;/b&gt; and the other called &lt;b&gt;ViewController&lt;/b&gt;. Right click the model project and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGYzMDc2YzUtZWVjNS00NTU5LWI3OGQtYWE5ZmMxMDhiYTA0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGYzMDc2YzUtZWVjNS00NTU5LWI3OGQtYWE5ZmMxMDhiYTA0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4. Under the &lt;b&gt;Business Tier&lt;/b&gt; category, select &lt;b&gt;ADF Business Components&lt;/b&gt; and then from the items select &lt;b&gt;Business Components from Tables&lt;/b&gt; and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzk3NzkxNmEtMzAzMC00NTI4LThjODctODc0ZjgwMGFjZTg0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzk3NzkxNmEtMzAzMC00NTI4LThjODctODc0ZjgwMGFjZTg0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5. In the “Initialize Business Components Project”, click on the green add sign &lt;b&gt;Create a new database connection&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmE2NWVmNWMtNjk2NC00YWVmLWEzNmUtNzc0Yjk0N2NhODcx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmE2NWVmNWMtNjk2NC00YWVmLWEzNmUtNzc0Yjk0N2NhODcx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6. In the “Create Database Connection” window, specify your database connection details to connect to your HR schema. In the Connection Name, specify &lt;b&gt;HRConnection&lt;/b&gt;, in the Username field &lt;b&gt;HR&lt;/b&gt;, in the password your HR schema password and ensure that the “Save Password” check box is &lt;b&gt;checked&lt;/b&gt;. In the Driver, select &lt;b&gt;thin&lt;/b&gt;, and specify the &lt;b&gt;host name&lt;/b&gt; where your datanase resides, the &lt;b&gt;SID&lt;/b&gt; (in my case it is XE) and the &lt;b&gt;port number&lt;/b&gt; (in my case it is 1521). Click &lt;b&gt;Test Connection&lt;/b&gt; and if successful, click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjZjMzRjYTUtNmQ3MS00Mjk3LWIyOTMtOTMyODhjZjZmMWYy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjZjMzRjYTUtNmQ3MS00Mjk3LWIyOTMtOTMyODhjZjZmMWYy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7. The “Initialize Business Components Project” window is now populated with the new connection name that we have created. Leave the default SQL Flavor (Oracle) and Type Map (Oracle) and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTQzNmIwNDAtYTc3NS00MDExLTk3NmItNmMxNzE1YTYxZmZj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTQzNmIwNDAtYTc3NS00MDExLTk3NmItNmMxNzE1YTYxZmZj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8. The “Create Business Components from Tables” wizard starts, with Step 1 being defining your entity objects. In the package, specify &lt;b&gt;demo.model.entities&lt;/b&gt;, in the schema make sure that &lt;b&gt;HR&lt;/b&gt; is selected and click &lt;b&gt;Query&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWY3YTMzNjMtZGZiMC00YmYzLWIyYmEtNjRlZmFmYTU1YWE4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWY3YTMzNjMtZGZiMC00YmYzLWIyYmEtNjRlZmFmYTU1YWE4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9. The query retrieved all available tables and views from our HR schema. We will be working with the Employees tables, so select &lt;b&gt;Employees&lt;/b&gt; from the available pane and shuttle it to the &lt;b&gt;selected&lt;/b&gt; pane. In the Entity Name, change the default name from Employees to &lt;b&gt;EmployeesEO&lt;/b&gt; and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTEzNGIyN2YtOGZmZC00MjQ0LWE1YmQtNjcwZmU5NjZmN2Qx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTEzNGIyN2YtOGZmZC00MjQ0LWE1YmQtNjcwZmU5NjZmN2Qx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10. On Step 2 of the wizard, “Updatable View Objects”, specify in the package name &lt;b&gt;demo.model.views&lt;/b&gt; and shuttle from the available pane the EmployeesEO to the &lt;b&gt;selected&lt;/b&gt; pane. Change the default object name to &lt;b&gt;EmployeesVO&lt;/b&gt; and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjZkNzc0MGItNmM3NC00ZTg0LTk1OTUtYWU3MjhmNzkxM2Vl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjZkNzc0MGItNmM3NC00ZTg0LTk1OTUtYWU3MjhmNzkxM2Vl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11. On the  “Read-Only View Objects” step click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjAyOWU4NTEtMTIwMC00OTVlLTllNWYtYTA1YzgxMjUyYjc1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjAyOWU4NTEtMTIwMC00OTVlLTllNWYtYTA1YzgxMjUyYjc1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12. In the “Application Module” step, ensure that the &lt;b&gt;Application Module&lt;/b&gt; is &lt;b&gt;checked&lt;/b&gt;. In the package name, specify &lt;b&gt;demo.model.module&lt;/b&gt;, leave the default name (&lt;b&gt;AppModule&lt;/b&gt;) and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGRiYTllMjMtZTBmNy00ZDljLTg5MTItZTI1YjdmYjc1ZmM4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGRiYTllMjMtZTBmNy00ZDljLTg5MTItZTI1YjdmYjc1ZmM4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13. We have set up our model, now it is time to design our interface. So &lt;b&gt;right-click&lt;/b&gt; the &lt;b&gt;ViewController&lt;/b&gt; project and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmE1ZTQ3MTgtYWUxNy00NWQzLWE1ODItMjkxM2QyYjQ5ZjAy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmE1ZTQ3MTgtYWUxNy00NWQzLWE1ODItMjkxM2QyYjQ5ZjAy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14. Expand the &lt;b&gt;Web Services&lt;/b&gt; category, select &lt;b&gt;JSF&lt;/b&gt; and from the items select &lt;b&gt;JSF Page&lt;/b&gt;. Click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDQ1ZGI0NjMtZTU2Yy00ZTM5LTllZTQtZTFjMzE0MDYwMGYz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDQ1ZGI0NjMtZTU2Yy00ZTM5LTllZTQtZTFjMzE0MDYwMGYz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15. In the “Create JSF Page” window, specify the file name to be &lt;b&gt;Employees.jspx&lt;/b&gt;, leave the default directory (C:\JDeveloper\mywork\ADFBIPublisher\ViewController\public_html) and ensure that the &lt;b&gt;Create as XML Document (*.jspx)&lt;/b&gt; check box is &lt;b&gt;checked&lt;/b&gt;. In the &lt;b&gt;Initial Page Layout and Content&lt;/b&gt; select &lt;b&gt;Page Template&lt;/b&gt; and from the drop down menu select &lt;b&gt;Oracle Dynamic Tabs Shell&lt;/b&gt;. Expand the &lt;b&gt;Page Implementation&lt;/b&gt; section and ensure that &lt;b&gt;Do Not Automatically Expose UI Components in a Managed Bean&lt;/b&gt; is selected and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjgyNzhkOTgtMTk3Mi00MzQ3LWFlNzktYjM3ZTJmODdjMTIw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjgyNzhkOTgtMTk3Mi00MzQ3LWFlNzktYjM3ZTJmODdjMTIw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16. The &lt;b&gt;Employees.jspx&lt;/b&gt; page should be displayed. If not expand your ViewController project, locate your Employees.jspx page and double click it to open it. Ensure that the Employees.jspx page is in &lt;b&gt;design view&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDQ0ZTBjYzctZGRlNS00ZjVkLWFhMDgtOTk3YTk2ZGMzNjRl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDQ0ZTBjYzctZGRlNS00ZjVkLWFhMDgtOTk3YTk2ZGMzNjRl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;17. There are two ways of working with the UI. The first one is by dragging and dropping items on the actual page and the second way is by using the Structure window. I will be using the second way. So, to ensure that everyone has their structure window enabled select from the menu &lt;b&gt;View&lt;/b&gt; and then &lt;b&gt;Structure&lt;/b&gt; (alternatively, click &lt;b&gt;Ctrl+Shift-S&lt;/b&gt;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzgxZGRiMzctZDA0MS00ZmRjLWIxODctYTU0NTY0NDgwYTg1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzgxZGRiMzctZDA0MS00ZmRjLWIxODctYTU0NTY0NDgwYTg1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;18. The Structure window should appear in the left lower corner of your JDeveloper. In case the Structure window is empty, just &lt;b&gt;click anywhere&lt;/b&gt; inside the &lt;b&gt;Employees.jspx&lt;/b&gt; page. Expand &lt;b&gt;f:view, af:document, af:form, af:pageTemplate&lt;/b&gt; and &lt;b&gt;/oracle/ui/pattern/dynamicShell/dynamicTabShell.jspx faces&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINGQwN2JlZDMtYmVlNy00Y2JjLTk0NjYtZTQ5MTJmMWY2MTUz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINGQwN2JlZDMtYmVlNy00Y2JjLTk0NjYtZTQ5MTJmMWY2MTUz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;19. From the &lt;b&gt;Component Palette&lt;/b&gt;, ensure that &lt;b&gt;ADF Faces&lt;/b&gt; is selected and under the &lt;b&gt;Layout section&lt;/b&gt;, select &lt;b&gt;Panel Splitter&lt;/b&gt; and drag it onto the &lt;b&gt;welcome&lt;/b&gt; facet.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTlkMmY5NTMtN2FkNy00YjU1LTkwMWMtZWI1MThmOTM4M2E5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTlkMmY5NTMtN2FkNy00YjU1LTkwMWMtZWI1MThmOTM4M2E5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;20. Expand &lt;b&gt;af:panelSplitter, panel Splitter&lt;/b&gt; facets and change the &lt;b&gt;Orientation&lt;/b&gt; of the panel splitter (using the &lt;b&gt;property inspector&lt;/b&gt;) from horizontal to &lt;b&gt;vertical&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjk0ODU3NjYtNjk2Yy00ODQyLWI0Y2UtOWMyYzM5MGVkZWZj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjk0ODU3NjYtNjk2Yy00ODQyLWI0Y2UtOWMyYzM5MGVkZWZj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;21. From the &lt;b&gt;Layout&lt;/b&gt; section of the &lt;b&gt;ADF Faces&lt;/b&gt;, drag &lt;b&gt;Panel Collection&lt;/b&gt; onto the &lt;b&gt;first&lt;/b&gt; facet of the panel splitter and a &lt;b&gt;Panel Tabbed&lt;/b&gt; onto the &lt;b&gt;second&lt;/b&gt; facet of the panel splitter.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDdmOGQ2MjMtZGFkMS00MWQ5LWJiNDgtYjM1ZWZkNTcyYjNh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDdmOGQ2MjMtZGFkMS00MWQ5LWJiNDgtYjM1ZWZkNTcyYjNh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;22. From the &lt;b&gt;second&lt;/b&gt; facet of the panel splitter, expand &lt;b&gt;af:panelTabbed&lt;/b&gt; and click on the &lt;b&gt;af:showDetailItem – showDetailItem 1&lt;/b&gt; and change the &lt;b&gt;text&lt;/b&gt; to &lt;b&gt;Employee Details&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjY3ZjllMTktMzM2MS00OTYzLWE2M2MtZGUxNjhjNjU1NmE3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjY3ZjllMTktMzM2MS00OTYzLWE2M2MtZGUxNjhjNjU1NmE3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;23. Expand the &lt;b&gt;Data Controls&lt;/b&gt; and under &lt;b&gt;AppModuleDataControl&lt;/b&gt;, select the &lt;b&gt;EmployeesVO1&lt;/b&gt; view and drag it over the &lt;b&gt;af:panelCollection – pc1&lt;/b&gt; component and select &lt;b&gt;Table, ADF Read-only Table ...&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjdhZWFmYmMtOTViNi00YjU3LTg0MjctM2I0Y2QwNDUxNGNl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjdhZWFmYmMtOTViNi00YjU3LTg0MjctM2I0Y2QwNDUxNGNl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;24. In the “Edit Table Columns” window, select &lt;b&gt;Row Selection, Sorting&lt;/b&gt; and &lt;b&gt;Filtering&lt;/b&gt; and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWFmODBhZDgtMjhmZi00OTIzLTg2MTAtMGU3MDI2ZDM3OTQ0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWFmODBhZDgtMjhmZi00OTIzLTg2MTAtMGU3MDI2ZDM3OTQ0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;25. Drag the &lt;b&gt;EmployeesVO1&lt;/b&gt; view object onto the &lt;b&gt;af:showDetailItem – Employee Details&lt;/b&gt; component (under the panelTabbed component inside the second facet) and select &lt;b&gt;Form, ADF Form ...&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmMzNzU5NWQtYzZmMS00ZWZmLWE5YzQtZmU1NmU3MDI5ZTZj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmMzNzU5NWQtYzZmMS00ZWZmLWE5YzQtZmU1NmU3MDI5ZTZj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;26. On the “Edit Form Fields” just click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWRjZTAwZGQtOWQ1Ny00MTBhLWFjMWMtZjM5ODIwOWQyZjlk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWRjZTAwZGQtOWQ1Ny00MTBhLWFjMWMtZjM5ODIwOWQyZjlk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;27. Let’s run the application to see how our Employees.jspx page looks like and what data are being rendered. To run the page, just &lt;b&gt;right click&lt;/b&gt; the &lt;b&gt;Employees.jspx&lt;/b&gt; page and select &lt;b&gt;Run&lt;/b&gt;. This will start the Integrated WebLogic Server, Deploy the application and render it on your default browser.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDNiYWJlZGQtNDU0ZS00NzRiLTkwZWUtMDNkZmJhMDc2MmEz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDNiYWJlZGQtNDU0ZS00NzRiLTkwZWUtMDNkZmJhMDc2MmEz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;28. We can see that the Employees.jspx page is divided in two sections. The first section showing a table with all employees and the second section, below the table, the employee details of the selected record above (for example, Steve King). Try clicking on another record from the record, for example Alexander Hunold. The form does not display the details for the selected record. This is because we have not specified that section (basically the form) to listen to any changes in the table component.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINWFhMDMxN2YtMjk1MS00NmVmLWI3OWMtOTUwMDk3ZTViMjJj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINWFhMDMxN2YtMjk1MS00NmVmLWI3OWMtOTUwMDk3ZTViMjJj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;29. So to make the form element reflect changes made from the table component, select the &lt;b&gt;af:panelFormLayout&lt;/b&gt; under &lt;b&gt;the af:showDetailItem – Employee Details&lt;/b&gt; component and using the property inspector select &lt;b&gt;Edit&lt;/b&gt; next to the &lt;b&gt;PartialTriggers&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjA1ODFlZmMtNGEwZi00ZjJkLTg2OTEtNGM5NWIwOTA3ZDQ5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjA1ODFlZmMtNGEwZi00ZjJkLTg2OTEtNGM5NWIwOTA3ZDQ5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;30. In the Edit Property of the PartialTriggers window, expand facet (welcome), panelSplitter – ps, facet (first), panelCollection* - pc1 and select &lt;b&gt;table* - t1&lt;/b&gt; and click &lt;b&gt;Add to selected&lt;/b&gt;. You should see the table* - t1 to the selected pane. Click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWNmZTMxOTQtOGYzZS00YWNhLWFhNzctYzlkYTE1NTZmMzA1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWNmZTMxOTQtOGYzZS00YWNhLWFhNzctYzlkYTE1NTZmMzA1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;31. If you right click the page and choose &lt;b&gt;Run&lt;/b&gt; you can see that the detail form reflects the details of the above selected master record.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmJiYWIyNmItNWJiMy00YTUxLTg2OWYtZGRhNGQ0ZGNmZjVm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmJiYWIyNmItNWJiMy00YTUxLTg2OWYtZGRhNGQ0ZGNmZjVm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;32. You can change the default branding title (Navigation Shell) to something more meanigfull. To achieve this, click the &lt;b&gt;af:pageTemplate&lt;/b&gt; tag under the af:form and from the Property Inspector, under the Other section, just change the &lt;b&gt;brandingTitle&lt;/b&gt; property from Navigation Shell to &lt;b&gt;ADF/BI Integration&lt;/b&gt;. If you run the page once more, you should see the new title being displayed.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjg5ZWE0NDAtNDI2Yy00YzJjLWExNjMtZGU0OTg2NDM4MmQw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjg5ZWE0NDAtNDI2Yy00YzJjLWExNjMtZGU0OTg2NDM4MmQw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;33. The next thing is to create a menu that will give the option to the user to run the report that we have created using BI Publisher. So in the first facet under the panel splitter, expand the panel collection and panel collection facets. Right click the menus facet and select &lt;b&gt;Insert inside menus&lt;/b&gt; and choose &lt;b&gt;Menu&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjczZDBmN2EtYzVkOS00Zjk0LWFlOTEtNWU5OGJiZTVhMmM5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjczZDBmN2EtYzVkOS00Zjk0LWFlOTEtNWU5OGJiZTVhMmM5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;34. Having the af:menu – menu 1 item selected, from the property inspector change the text from  menu 1 to &lt;b&gt;File&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmQ2Y2VlNzQtOWY3Yi00YTExLTlmMTQtNjY4YTAwZTY2OTU2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmQ2Y2VlNzQtOWY3Yi00YTExLTlmMTQtNjY4YTAwZTY2OTU2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;35. Right click the &lt;b&gt;af:menu – File&lt;/b&gt; item and select &lt;b&gt;Insert inside af:menu – File Menu Item&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmE5MDZkNzYtOWU3YS00MmMxLTlhNzgtYWFkZjNhNmRjODgw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMmE5MDZkNzYtOWU3YS00MmMxLTlhNzgtYWFkZjNhNmRjODgw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;36. Select the af:commandMenuItem – commandMenuItem1 from the structure window, and from the property inspector change the text from commandMenuItem 1 to &lt;b&gt;Run Employee Report&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINWQyODUxNjEtNjZkMy00Mjg1LWJiOGYtNmQ1M2U0ODRlZmRk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINWQyODUxNjEtNjZkMy00Mjg1LWJiOGYtNmQ1M2U0ODRlZmRk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;37. From the component palette, select &lt;b&gt;ADF Faces&lt;/b&gt; and from the &lt;b&gt;Operations&lt;/b&gt; section drag a &lt;b&gt;File Download Action Listener&lt;/b&gt; onto the &lt;b&gt;af:commandMenuItem – Run Employee Report&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGNhMzQ4NzItNGIwNy00Njc3LWI5NTEtMjNmM2RkY2Q0MzQy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGNhMzQ4NzItNGIwNy00Njc3LWI5NTEtMjNmM2RkY2Q0MzQy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;38. Select the &lt;b&gt;af:fileDownloadActionListener&lt;/b&gt; from the structure window and using the property inspector, specify the filename to be &lt;b&gt;Employee.pdf&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzc3NDIwNWQtMjJlNC00MmE0LWIxZWYtNmNjNmIzNmJjNTJm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzc3NDIwNWQtMjJlNC00MmE0LWIxZWYtNmNjNmIzNmJjNTJm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;39. Next to the method property, click the arrow and select &lt;b&gt;Edit&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmY2YTZlZTQtYTU2My00MzU1LTlhOTgtMDMzZGRhNmQxMzcy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmY2YTZlZTQtYTU2My00MzU1LTlhOTgtMDMzZGRhNmQxMzcy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;40. From the Edit Property window, click &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWZkNGVhNTItNTYzMy00MzI3LWE0ZTUtNjgyMTRlMGFkMzY2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMWZkNGVhNTItNTYzMy00MzI3LWE0ZTUtNjgyMTRlMGFkMzY2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;41. In the Create Managed Bean, specify &lt;b&gt;EmployeesBean&lt;/b&gt; as the Bean Name, &lt;b&gt;Employees&lt;/b&gt; as the Class Name, &lt;b&gt;demo.view.beans&lt;/b&gt; in the package and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDAxZDZkMTItZjMyZi00NTY3LTlkZDgtZTNkZTQ2NDkzYjli" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDAxZDZkMTItZjMyZi00NTY3LTlkZDgtZTNkZTQ2NDkzYjli" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;42. From the Edit Property, click &lt;b&gt;New&lt;/b&gt; next to the Method drop down to create a new method.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWRkNTIxYTgtNGM4YS00OGJiLWI3ZjMtNGE2MDUyM2FkNTI5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWRkNTIxYTgtNGM4YS00OGJiLWI3ZjMtNGE2MDUyM2FkNTI5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;43. In the Create Method dialog, specify &lt;b&gt;runReport&lt;/b&gt; as the method name and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzNmMDYwMGQtNGIzOS00MDVhLTlhZTAtMjIyMDEwMjcyMjdm" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzNmMDYwMGQtNGIzOS00MDVhLTlhZTAtMjIyMDEwMjcyMjdm" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;44. Click &lt;b&gt;OK&lt;/b&gt; in the Edit Property window.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGNkOTI0ZjItZmUzMi00NmFlLWE4MGUtYjkxMzdjOGJkNmI2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGNkOTI0ZjItZmUzMi00NmFlLWE4MGUtYjkxMzdjOGJkNmI2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;45. BI Publisher exposes several of its operations as web services. To see what operations are exposed as web services, open a browser to go to your BI Publisher server home page and append to the url &lt;b&gt;/services&lt;/b&gt;   (http://&lt;hostname&gt;:&lt;port&gt;/xmlpserver/services). Some of the services are XMLPService, AdminService, PublicProvisiongService etc.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTgzYTAxM2EtYjI3MS00ZGE2LTljZmQtOGFlYmY4MDRmZjcz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTgzYTAxM2EtYjI3MS00ZGE2LTljZmQtOGFlYmY4MDRmZjcz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;46. Scroll down and locate the service &lt;b&gt;PublicReportService&lt;/b&gt; and click on the &lt;b&gt;wsdl&lt;/b&gt; link.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWM1OWMzZTAtZjJhZS00ZDVjLWIxMGQtZWVhYjFhZTAyOTBi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWM1OWMzZTAtZjJhZS00ZDVjLWIxMGQtZWVhYjFhZTAyOTBi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;47. You should see the PublicReportService &lt;b&gt;wsdl&lt;/b&gt; file. &lt;b&gt;Copy&lt;/b&gt; the url location as we will use it in the following steps.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzc0MmI5MmUtMmRjZC00YjVkLTg2ODctNjk3Y2ViNDYwZGE2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzc0MmI5MmUtMmRjZC00YjVkLTg2ODctNjk3Y2ViNDYwZGE2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;48. Back in JDeveloper, create a new project by selecting &lt;b&gt;File, New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTRiY2Q2MGUtNDdjMy00YWEyLWJhZjctY2Q0M2UyNDA0OTg1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTRiY2Q2MGUtNDdjMy00YWEyLWJhZjctY2Q0M2UyNDA0OTg1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;49. From the &lt;b&gt;General&lt;/b&gt; categories, select &lt;b&gt;Projects&lt;/b&gt; and from the items select &lt;b&gt;Generic Project&lt;/b&gt; and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTVkMGQyMzYtNTM3Ni00MWRiLThmYzUtN2U4MzdmNDE5Yzhk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTVkMGQyMzYtNTM3Ni00MWRiLThmYzUtN2U4MzdmNDE5Yzhk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;50. In the Create Generic Project window specify &lt;b&gt;WebServiceProxy&lt;/b&gt; as the project name and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWY2OTVlMTMtYTk5OC00Y2I1LTg3MzAtM2ZmOTc1NTJjZWJi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWY2OTVlMTMtYTk5OC00Y2I1LTg3MzAtM2ZmOTc1NTJjZWJi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;51. Right click the newly created project WebServiceProxy and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWEzNDM0MDUtMzgxZC00YjEyLWJjZmYtYTkzYjU0NDJiZGFk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWEzNDM0MDUtMzgxZC00YjEyLWJjZmYtYTkzYjU0NDJiZGFk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;52. From the &lt;b&gt;Business Tier&lt;/b&gt; category select &lt;b&gt;Web Services&lt;/b&gt; and from the items select &lt;b&gt;Web Service Proxy&lt;/b&gt; and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTBhZDlmY2UtZTJhZC00MzFmLThhOTgtYTc5ZDA4NmE4ZDA3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYTBhZDlmY2UtZTJhZC00MzFmLThhOTgtYTc5ZDA4NmE4ZDA3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;53. In step 1 (&lt;b&gt;Create Web Service Proxy&lt;/b&gt;) click &lt;b&gt;Next&lt;/b&gt; and in step 2 of the wizard (&lt;b&gt;Select Client Style&lt;/b&gt;) select &lt;b&gt;JAX-WS Style&lt;/b&gt; and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIODU4NWEzNjYtNGEyMy00MTZhLTgyYjgtNTY1MTA4ZmYwZjEw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIODU4NWEzNjYtNGEyMy00MTZhLTgyYjgtNTY1MTA4ZmYwZjEw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;54. In step 3 (&lt;b&gt;Select Web Service Description&lt;/b&gt;), in the WSDL Document URL input field, paste the url of the PublicReportService wsdl location that you have copied (http://&lt;hostname&gt;:&lt;port&gt;/xmlpserver/services/PublicReportService?wsdl) and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTM0MmE1YzEtZDAyNC00NGZlLWFkYzEtYjRiZjkzZmZiZDM3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTM0MmE1YzEtZDAyNC00NGZlLWFkYzEtYjRiZjkzZmZiZDM3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;55. In step 4 (&lt;b&gt;Specify Default Mapping Options&lt;/b&gt;), specify &lt;b&gt;demo&lt;/b&gt; as the package name and &lt;b&gt;demo.types&lt;/b&gt; as the root package for generated types and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzc0MDcxMTktMDhiYi00YWMxLTk4OWUtNzZkMWIxNGNiYjQ1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzc0MDcxMTktMDhiYi00YWMxLTk4OWUtNzZkMWIxNGNiYjQ1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;56. As you can see, the wizard has created all java classes necessary to run the specified web service (PublicReportService). We will use these classes from our ViewController project. To actually have access to these generated classes from our ViewController project, we need to define the project dependencies from our ViewController project. So right click the &lt;b&gt;ViewController&lt;/b&gt; project and select &lt;b&gt;Project Properties&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWYxZjM2YjctYjA1NC00NDAyLWI1YmMtMjdlODUzY2Y0NzUx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWYxZjM2YjctYjA1NC00NDAyLWI1YmMtMjdlODUzY2Y0NzUx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;57. Select &lt;b&gt;Dependencies&lt;/b&gt; and click on the pencil &lt;b&gt;Edit Dependencies&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTQ4NDVjMTUtZThmZS00MWFlLWJlNjYtOTJmNGUwZjcyMDkw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTQ4NDVjMTUtZThmZS00MWFlLWJlNjYtOTJmNGUwZjcyMDkw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;58. Expand &lt;b&gt;WebServiceProxy.jsp&lt;/b&gt; and select the &lt;b&gt;Build Output&lt;/b&gt; check box and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDgxNDRlZjgtNTAyOS00OTQzLWEwNTAtMTQzNTNiYWE4NjIw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDgxNDRlZjgtNTAyOS00OTQzLWEwNTAtMTQzNTNiYWE4NjIw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;59. In the Project properties click &lt;b&gt;OK&lt;/b&gt;. Open the Employees bean that we have auto-created to insert the actual logic of the runReport method. Expand &lt;b&gt;ViewController, Application Sources, demo.view.beans&lt;/b&gt; and &lt;b&gt;double-click&lt;/b&gt; in the &lt;b&gt;Employees.java&lt;/b&gt; file to open it.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2VmZGIzYTYtNzcwMi00N2RhLWIyOTItZmU4M2JhMTIyZTQz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2VmZGIzYTYtNzcwMi00N2RhLWIyOTItZmU4M2JhMTIyZTQz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;60. In the runReport method, insert the following code:&lt;br&gt;&lt;br /&gt;&lt;i&gt;BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();&lt;br /&gt;DCIteratorBinding iterator = (DCIteratorBinding)bindings.get("EmployeesVO1Iterator ");&lt;br /&gt;Row row = iterator.getCurrentRow();&lt;br /&gt;String employeeId = row.getAttribute("EmployeeId").toString();&lt;br /&gt;        &lt;br /&gt;PublicReportServiceService publicReportServiceService = new PublicReportServiceService();&lt;br /&gt;PublicReportService publicReportService = publicReportServiceService.getPublicReportService();&lt;br /&gt;                &lt;br /&gt;ReportRequest reportRequest = new ReportRequest();&lt;br /&gt;reportRequest.setAttributeFormat("pdf");&lt;br /&gt;reportRequest.setAttributeLocale("en-US");&lt;br /&gt;reportRequest.setAttributeTemplate("Simple");&lt;br /&gt;reportRequest.setReportAbsolutePath("/Demo/Employee/Employee.xdo");&lt;br /&gt;ArrayOfParamNameValue pNameValue = new ArrayOfParamNameValue();&lt;br /&gt;ParamNameValue nameValue= new ParamNameValue();&lt;br /&gt;nameValue.setName("pEmployeeId");&lt;br /&gt;ArrayOfString aos = new ArrayOfString();&lt;br /&gt;aos.getItem().add(employeeId);&lt;br /&gt;nameValue.setValues(aos);&lt;br /&gt;pNameValue.getItem().add(nameValue);&lt;br /&gt;reportRequest.setParameterNameValues(pNameValue);&lt;br /&gt;        &lt;br /&gt;try {&lt;br /&gt;     ReportResponse response = new ReportResponse();&lt;br /&gt;     response = publicReportService.runReport(reportRequest, "Administrator", "manager1");&lt;br /&gt;     outputStream.write(response.getReportBytes());        &lt;br /&gt;} catch (Exception e) {&lt;br /&gt;     e.printStackTrace();&lt;br /&gt;}&lt;/i&gt;&lt;br&gt;&lt;br /&gt;What this code does is that based on the Employee View Iterator, gets the selected row and based on the selected row, obtains the value of the Employee Id. It then calls the PublicReportService web service and requests to run a specific report (Employees report), assigning the employee id parameter. The web services responds back to the caller with the bytes of the actual report that we in turn pass to the outputStream object of the fileDownloadActionListener so that the file can be displayed to the users.&lt;br&gt;&lt;br /&gt;Please note that when prompted import the following classes:&lt;br&gt;&lt;br /&gt;import demo.PublicReportService;&lt;br /&gt;import demo.PublicReportServiceService;&lt;br /&gt;import demo.types.ArrayOfParamNameValue;&lt;br /&gt;import demo.types.ArrayOfString;&lt;br /&gt;import demo.types.ParamNameValue;&lt;br /&gt;import demo.types.ReportRequest;&lt;br /&gt;import demo.types.ReportResponse;&lt;br /&gt;import oracle.adf.model.BindingContext;&lt;br /&gt;import oracle.adf.model.binding.DCIteratorBinding;&lt;br /&gt;import oracle.binding.BindingContainer;&lt;br /&gt;import oracle.jbo.Row;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjdlYjRkZWItMzM3NC00NTQ2LThhZDgtNmQ0MTk0MmEyZGNk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjdlYjRkZWItMzM3NC00NTQ2LThhZDgtNmQ0MTk0MmEyZGNk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;61. Right click &lt;b&gt;Employees.jspx&lt;/b&gt; and choose &lt;b&gt;Run&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmExMWIwYzUtMTkxYi00Mjc2LWFjNzctYzllNDg2Yzk3ZmM5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmExMWIwYzUtMTkxYi00Mjc2LWFjNzctYzllNDg2Yzk3ZmM5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;62. You should see the new menu (&lt;b&gt;File&lt;/b&gt;) that we have created being displayed next to the &lt;b&gt;View&lt;/b&gt; menu.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIY2VhMWU1NDUtNDQzYy00N2EyLWJlZGYtNjZjZjcyNzU5Zjli" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIY2VhMWU1NDUtNDQzYy00N2EyLWJlZGYtNjZjZjcyNzU5Zjli" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;63. Select an employee, for example EmployeeId &lt;b&gt;102 (Lex De Haan)&lt;/b&gt; and from the new menu that we have created select &lt;b&gt;File, Run Employee Report&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmY5ODUwMjYtMzExOC00ZTEyLWIxNjgtOTg0ZGViMGJiMjIz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmY5ODUwMjYtMzExOC00ZTEyLWIxNjgtOTg0ZGViMGJiMjIz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;64. You should be presented with the Employees.pdf file, presenting all employee details of the selected employee.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINGI3MzkxYzYtNGM1NC00N2I1LWEwZmUtNmFlYTJhOGQxZjAx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINGI3MzkxYzYtNGM1NC00N2I1LWEwZmUtNmFlYTJhOGQxZjAx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-6396004052485511875?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/6396004052485511875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/11/integrating-web-services-into-your-adf_23.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6396004052485511875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6396004052485511875'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/11/integrating-web-services-into-your-adf_23.html' title='Integrating Web Services into your ADF Application Part 2'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-2138379159153677475</id><published>2010-11-02T15:34:00.022+02:00</published><updated>2011-03-24T14:30:17.980+02:00</updated><title type='text'>Integrating Web Services into your ADF Application Part 1</title><content type='html'>As promised, I am uploading the presentation slides (&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjJhMWYxODctNmNmYy00Yjk0LWIwODktZTU0ZjIxNzI3OGE4&amp;export=download&amp;hl=en"&gt;Oracle ADF 11g Enhanced Capabilities &amp; Features&lt;/a&gt;) along with a complete step-by-step tutorial on how to integrate Web Services into your ADF Application using a Web Service Data Control along with the source code of my demo (&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINmJmZDU2MWMtZGI1OS00MjczLTgwYTctZGU1NmYxYzc5NzQx&amp;export=download&amp;hl=en"&gt;JavaWebService&lt;/a&gt; &amp; &lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2JmZjE1ZmItMGVhOS00YjhkLWJjMzctYmRkNTkyYTJiYjM5&amp;export=download&amp;hl=en"&gt;ADFHelloWorldJava&lt;/a&gt;).&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Create a Java Class and Expose it as a Web Service&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1. In the Applications Navigator, click New Application. Another option is to use the File-&gt;New... menu option to create a new application.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGJjNWQ3OWItMTYwNC00ZjUzLWEzNGYtMTczMzAzNTZhZTEy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMGJjNWQ3OWItMTYwNC00ZjUzLWEzNGYtMTczMzAzNTZhZTEy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. In the Create Application dialog box, specify the Application Name to be &lt;b&gt;JavaWebService&lt;/b&gt;. Notice that the directory changes to match the new name. You can change the C:\JDeveloper\mywork part of the path to create your files in another location.&lt;br&gt;&lt;br&gt;In the Application Package Prefix field set the value to be &lt;b&gt;demo&lt;/b&gt;. In the Application Templates choose the &lt;b&gt;Generic Application&lt;/b&gt; and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINzQ3ZGU5NGMtNWFjZC00M2RhLTk4MWYtMjI4MGUzN2YzYzU3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINzQ3ZGU5NGMtNWFjZC00M2RhLTk4MWYtMjI4MGUzN2YzYzU3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. In step 2 of the Create Application Wizard, specify the Project Name to be &lt;b&gt;HelloWorld&lt;/b&gt; and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmNkYWZmNmQtMzA5OC00MTczLWFkZDktMDdkNTJiNzRiYmVl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYmNkYWZmNmQtMzA5OC00MTczLWFkZDktMDdkNTJiNzRiYmVl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4. Right click the HelloWorld project and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzgxZjI1YmQtMDBjMC00ZTY2LTg1YTItZjFiNzMxNDhkM2U3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzgxZjI1YmQtMDBjMC00ZTY2LTg1YTItZjFiNzMxNDhkM2U3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5. Under the &lt;b&gt;General&lt;/b&gt; category, select &lt;b&gt;Java Class&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINDBhMzNlZTEtN2JkYS00ZTM1LWFiNmQtMGQ2ZGUyNTVmMGI5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINDBhMzNlZTEtN2JkYS00ZTM1LWFiNmQtMGQ2ZGUyNTVmMGI5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6. In the Create Java Class , specify the Name to be &lt;b&gt;HelloWorld&lt;/b&gt; and uncheck the “Constructors from Superclass” and “Implement Abstract Methods” options and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDU2OTBlNGMtNjA5Ni00NzMxLTg2NmItZTRjNWQ0ZDQ1NWRi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDU2OTBlNGMtNjA5Ni00NzMxLTg2NmItZTRjNWQ0ZDQ1NWRi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7. In the HelloWorld.java class, copy and paste the following code:&lt;br /&gt; &lt;i&gt;&lt;br /&gt; public String sayHello(String firstname, String lastname){&lt;br /&gt;        return "Hello " + firstname + " " + lastname;   &lt;br /&gt; } &lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWM4YTVmM2EtM2I2OC00MjgxLTkwMDUtYzM5ZGZkYTk3NDYw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWM4YTVmM2EtM2I2OC00MjgxLTkwMDUtYzM5ZGZkYTk3NDYw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8. Right click the HelloWorld.java class and select &lt;b&gt;Create Web Service&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTRiMGQ2NzktOTUyZC00OTNjLWI3YTgtNGRjMDQwZDIxZmI4" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTRiMGQ2NzktOTUyZC00OTNjLWI3YTgtNGRjMDQwZDIxZmI4" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9. This initiates the Create Java Web Service Wizard. In the Select Deployment Platform, leave the default platform selected (Java EE 1.5 with support for JAX-WS Annotations) and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWRiMTVhOGEtYjM1Ny00OTI0LWJkNmYtZWI4ZWU1ZGYxOGZi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYWRiMTVhOGEtYjM1Ny00OTI0LWJkNmYtZWI4ZWU1ZGYxOGZi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10. In the Generation Option, leave the defaults and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzJhMGE5ZjItNTUxZC00OWQ1LTk1MGEtM2U5M2Q3Y2I3M2I2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMzJhMGE5ZjItNTUxZC00OWQ1LTk1MGEtM2U5M2Q3Y2I3M2I2" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11. In the Message Format, select SOAP Bindings 1.2 and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTAwMzRjMWQtYzk0MS00YTJjLWI1NWUtZTc3ODVlMDA3MWNh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOTAwMzRjMWQtYzk0MS00YTJjLWI1NWUtZTc3ODVlMDA3MWNh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12. In the Methods, make sure that the sayHelo method is selected and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOGMwYWY3YzctYjM5ZS00OGFjLTgwNTQtNzE0OWYxYWEyODgw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOGMwYWY3YzctYjM5ZS00OGFjLTgwNTQtNzE0OWYxYWEyODgw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13. If you open HelloWorld.java, you will notice that the wizard appended some annotations to the class to expose it as a Web Service. Right click HelloWorld.java and choose &lt;b&gt;Run&lt;/b&gt; to deploy it to the Integrated WebLogic Server.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTc5YWVkY2ItYTI2NC00NDYzLThkMDYtYWQ3MzkxOThmOGY0" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTc5YWVkY2ItYTI2NC00NDYzLThkMDYtYWQ3MzkxOThmOGY0" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14. Once deployed, you will notice in the WebLogic console a Target URL. This is the url of the deployed HellWorld Web Service. JDeveloper provides you with a Web Service Test Client, so if you click on the url, it will open the test client, allowing you to test the web service.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmFmNzMxNzMtYTE3Ni00MjkzLWI2ZjAtNmY0NzAzODBkYzgz" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZmFmNzMxNzMtYTE3Ni00MjkzLWI2ZjAtNmY0NzAzODBkYzgz" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15. If you enter your name and surname and click Send Request, the web service should respond with a message “Hello &lt;i&gt;name surname&lt;/i&gt;”, where name is the name that you have specified and surname is the surname that you have specified in the web service call.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjBlYmZiNDUtNjIxMS00MWE2LThkOTItYzk1ZGU3M2Q4OGU5" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYjBlYmZiNDUtNjIxMS00MWE2LThkOTItYzk1ZGU3M2Q4OGU5" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16. Before proceeding to the next step and creating our Fusion ADF Web Application that will consume this web service that we have just created, please make sure that you have copied the target url of the deployed web service as this will be needed in the next steps.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjg2NDA4YTItZmQzMy00ZGFiLThkMmItMjgyODhhMmQ4YTBj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMjg2NDA4YTItZmQzMy00ZGFiLThkMmItMjgyODhhMmQ4YTBj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br&gt;&lt;b&gt;Create an ADF Fusion Application and a Web Service Data Control to Consume the HelloWorld Web Service&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1. In the Applications Navigator, click &lt;b&gt;New Application&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTgzYjM4NjYtZjIwZS00NGJjLThmOTQtMjhjMjJhZDZjYmI3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTgzYjM4NjYtZjIwZS00NGJjLThmOTQtMjhjMjJhZDZjYmI3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2. In the Create Application dialog box, specify the Application Name to be ADFHelloWorldJava. Notice that the directory changes to match the new name. You can change the C:\JDeveloper\mywork part of the path to create your files in another location. &lt;br /&gt;&lt;br /&gt;In the Application Package Prefix field set the value to be &lt;b&gt;demo&lt;/b&gt;. In the Application Templates choose the &lt;b&gt;Fusion Web Application (ADF)&lt;/b&gt; and click &lt;b&gt;Finish&lt;/b&gt;.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTE3MmFjYjEtMjE0NC00M2ZiLWE4NmQtZjZmZWRiYTAyYmZl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMTE3MmFjYjEtMjE0NC00M2ZiLWE4NmQtZjZmZWRiYTAyYmZl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3. In the Application Navigator you'll see two new projects now, one called &lt;b&gt;Model&lt;/b&gt; and the other called &lt;b&gt;ViewController&lt;/b&gt;. Right click the model project and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2IzY2M5MTMtYTk1Ni00YTE1LWIyNDctOTk3NmYyMWFmNTYw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2IzY2M5MTMtYTk1Ni00YTE1LWIyNDctOTk3NmYyMWFmNTYw" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4. Under the &lt;b&gt;Business Tier&lt;/b&gt; category, select &lt;b&gt;Web Services&lt;/b&gt; and then from the items select &lt;b&gt;Web Service Data Control&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTM5M2YxMGUtZTYxOC00M2FhLTk4YTctYWIxYTc5MzM3MmEy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTM5M2YxMGUtZTYxOC00M2FhLTk4YTctYWIxYTc5MzM3MmEy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5. In the Create Web Service Data Control Wizard, specify the name for the Data Control to be &lt;b&gt;HelloWorld&lt;/b&gt; and the URL to be the url that you have copied before. Please note that at the end of the url, you need to append &lt;b&gt;?wsdl&lt;/b&gt; to specify the WSDL file of the Web Service, and click &lt;b&gt;Next&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjlhYTY0NTMtNWNkMS00OTk1LTkzNzUtMGFiNTg3ZGE3NmYx" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjlhYTY0NTMtNWNkMS00OTk1LTkzNzUtMGFiNTg3ZGE3NmYx" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6. In the Data Control Operations, shuttle the HelloWorldService to the selected pane and click &lt;b&gt;Finish&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDRjZmQ4MWItMjVmMy00ZmI3LWExNzItMThiOTNiMmQ3ZWE3" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIMDRjZmQ4MWItMjVmMy00ZmI3LWExNzItMThiOTNiMmQ3ZWE3" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7. Right click the ViewController project and select &lt;b&gt;New&lt;/b&gt;.&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTYyNmY3ODEtMDdlNS00YWJiLWJhYTUtZmVlY2Y3ZDZkODcy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZTYyNmY3ODEtMDdlNS00YWJiLWJhYTUtZmVlY2Y3ZDZkODcy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8. Under the &lt;b&gt;Web Tier&lt;/b&gt; category, select &lt;b&gt;JSF&lt;/b&gt; and then from the items select &lt;b&gt;JSF Page&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjg3MDJhZDUtN2QyOS00MGZlLTg2YzUtODg0ZjBmYjNmZWRj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZjg3MDJhZDUtN2QyOS00MGZlLTg2YzUtODg0ZjBmYjNmZWRj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9. In the Create JSF page, specify the File Name to be &lt;b&gt;HelloWorld.jspx&lt;/b&gt; and make sure that the “Create as XML Document(*.jspx)” option is checked. Under Initial Page Layout and Content select Blank Page and click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2MwZTU4ZjMtMTgxNi00MzcwLTlkYzQtZjllZjBlYjA4ZTNl" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIN2MwZTU4ZjMtMTgxNi00MzcwLTlkYzQtZjllZjBlYjA4ZTNl" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10. Expand the Data Control section and drag the sayHello method onto the HelloWorld.jspx page as an ADF Parameter Form.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINjAwZTg3NmEtYzY0MS00ZTlkLThhMDUtY2QzODY3NjI2ZDMy" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINjAwZTg3NmEtYzY0MS00ZTlkLThhMDUtY2QzODY3NjI2ZDMy" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11. On the Edit Form Fields, just click &lt;b&gt;OK&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDE4Y2VmNGUtZTA4Ny00MTAzLThhMjgtOTJmY2FiYTY0Yzdj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZDE4Y2VmNGUtZTA4Ny00MTAzLThhMjgtOTJmY2FiYTY0Yzdj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12. As you can see, ADF automatically created an ADF form based on the method’s input parameters and included a submit button to call the web service. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzMxMzc3YTctNGE0Yi00YWE2LWE5MzktN2IwYWY5MTkzZmNh" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzMxMzc3YTctNGE0Yi00YWE2LWE5MzktN2IwYWY5MTkzZmNh" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13. The HelloWorld Web Service returns a String. To display the output of the web service, just drag the String output from the Data Control below the sayHello button as an ADF Output Text.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWQwYmVkYmYtMmEwMy00ZTdhLTgxNjgtODAzNjMyZGJkMDdk" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIZWQwYmVkYmYtMmEwMy00ZTdhLTgxNjgtODAzNjMyZGJkMDdk" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14. Right click the page and choose &lt;b&gt;Run&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iINTQ5MzIzOTAtYjk1OC00NTU2LTgzNWItYjM5YzQ0Nzk2YWE1" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iINTQ5MzIzOTAtYjk1OC00NTU2LTgzNWItYjM5YzQ0Nzk2YWE1" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15. Provide a value for sayHello_arg0 (Firstname) and a value for sayHello_arg1 (Lastname) and click the &lt;b&gt;sayHello&lt;/b&gt; button.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWNhMTFkZjQtZGQzYS00MDEzLThmMzAtMTUwMTc1OWExZjBi" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIOWNhMTFkZjQtZGQzYS00MDEzLThmMzAtMTUwMTc1OWExZjBi" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16. The HelloWorld Web Service is called and returns a message “Hello &lt;i&gt;name surname&lt;/i&gt;”, where name is the name that you have specified and surname is the surname that you have specified in the web service call.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzUxNzVkMTUtYzIyMS00M2I2LTk5NmQtMTUzODc2OWJhMjVj" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="https://docs.google.com/uc?id=0B62-7A9Xi4iIYzUxNzVkMTUtYzIyMS00M2I2LTk5NmQtMTUzODc2OWJhMjVj" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;I will be publishing "Integrating Web Services into your ADF Application Part 2" which will include calling a Web Service programmatically using a web service data control in the next couple of days, followed by a tutorial on how to secure your ADF Application using ADF Security.&lt;br&gt;&lt;br&gt;Engjoy!&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-2138379159153677475?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/2138379159153677475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/11/integrating-web-services-into-your-adf.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/2138379159153677475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/2138379159153677475'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/11/integrating-web-services-into-your-adf.html' title='Integrating Web Services into your ADF Application Part 1'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-6559109212109698691</id><published>2010-10-27T21:11:00.000+03:00</published><updated>2010-10-27T21:11:13.762+03:00</updated><title type='text'>Oracle ADF Enhanced Capabilities &amp; Features</title><content type='html'>Following a recent workshop that I have conducted with Oracle Cyprus, "JDeveloper 11g - ADF Workshop for Developers" , I presented some enhanced capabilities and features of ADF. More specifically, how do you enable ADF Security and how do you integrate web services into your ADF Application. &lt;br /&gt;&lt;br /&gt;I will be uploading the presentation along with all the demos by the end of next week, so please visit the blog again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-6559109212109698691?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/6559109212109698691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/10/oracle-adf-enhanced-capabilities.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6559109212109698691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/6559109212109698691'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/10/oracle-adf-enhanced-capabilities.html' title='Oracle ADF Enhanced Capabilities &amp; Features'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-1670207447229083045</id><published>2010-05-04T15:22:00.001+03:00</published><updated>2011-02-01T20:52:39.954+02:00</updated><title type='text'>BEA-101371:  Error deploying to IntegratedWebLogicServe</title><content type='html'>When running a .jspx page from JDeveloper11g i get the following errors:&lt;br /&gt;&lt;br /&gt;BEA-101371, There was a failure when processing annotations for application C:\Documents and Settings\user\Application Data\JDeveloper\system11.1.1.2.36.55.36\o.j2ee\MyApp\ModelWebApp.war. Please make sure that the annotations are valid. The error is org.apache.myfaces.trinidad.webapp.ResourceServlet&lt;br /&gt;Caused By: java.lang.ClassNotFoundException: org.apache.myfaces.trinidad.webapp.ResourceServlet&lt;br /&gt;at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:296)&lt;br /&gt;at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:269)&lt;br /&gt;at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:56)&lt;br /&gt;at java.lang.ClassLoader.loadClass(ClassLoader.java:307)&lt;br /&gt;at java.lang.ClassLoader.loadClass(ClassLoader.java:252)&lt;br /&gt;Truncated. see log file for complete stacktrace&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The reason of this behaviour is that there is an application deployed on the integrated server that is miss configured. &lt;br /&gt;&lt;br /&gt;One approach to solving this issue is to undeploye the miss-configured application. This can be done using the preonfigured application Server connection from JDeveloper (IntegratedWLSConnection). Expand the IntegratedWLSConnection Application Server Connection (View menu, Application Server Navigator), locate the application, right click the application and choose undeploy.&lt;br /&gt;&lt;br /&gt;The second approach is to recreate you system11.1.1.2.XX.XX.XX. One easy way to do this is first close JDeveloper. Then right click My Computer, choose properties, and select the advanced tab. Click on Environment Variables and under the user variables, create a new variable called JDEV_USER_HOME. In the value field, specify the path where you want your system11.1.1.2.XX.XX.XX system folder to be created. When you start JDeveloper, it will prompt you if you would like to migrate from another version. Choose No.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-1670207447229083045?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/1670207447229083045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/05/3-bea-101371-error-deploying-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/1670207447229083045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/1670207447229083045'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/05/3-bea-101371-error-deploying-to.html' title='BEA-101371:  Error deploying to IntegratedWebLogicServe'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-8242531950640540248</id><published>2010-04-09T13:56:00.001+03:00</published><updated>2011-02-01T20:53:12.394+02:00</updated><title type='text'>FTP Adapter As A Service Component</title><content type='html'>The following tutorial illustrates the usage of the file adapter as a service component.&lt;br /&gt;&lt;br /&gt;1. In the Applications Navigator, click New Application. Another option is to use the File-&gt;New... menu option to create a new application.&lt;br /&gt;&lt;br /&gt;2. In the Create Application dialog box, specify an Application Name (FtpAdapterAsServiceComponentApp).&lt;br /&gt;&lt;br /&gt;3. Leave the Application Package Prefix field empty. In the Application Templates choose the SOA Application and click Next.&lt;br /&gt;&lt;br /&gt;4. In the Project Name field enter a project name (FtpAdapterAsServiceComponentProj). In the Composite Template select Empty Composite and click Finish.&lt;br /&gt;&lt;br /&gt;5. From the Component Palette select the FTP Adapter Service Adapter and drag it on the Exposed Services&lt;br /&gt;&lt;br /&gt;6. On the Welcome to the Adapter Configuration Wizard, click Next.&lt;br /&gt;&lt;br /&gt;7. On the Service Name screen, specify a service name (ReadFileService).&lt;br /&gt;&lt;br /&gt;8. On the Adapter Interface, select the Define from operation and schema (specify later) radio button for the Interface option and click Next.&lt;br /&gt;&lt;br /&gt;9. On the FTP Server Connection, specify the jndi connection name (I will create it later) as eis/Ftp/MyDemoFtpAdapter.&lt;br /&gt;&lt;br /&gt;10. On the Operation screen, leave the File Type as Ascii, and select the Get File Operation Type option and click Next.&lt;br /&gt;&lt;br /&gt;11. On the File Directories screen, specify a directory for the Incoming Files (/home/oracle/in). If you would like to archive the processed files, then specify an archive location (/home/oracle/archive) and click Next.&lt;br /&gt;&lt;br /&gt;12. On the File Filtering screen, specify any name patterns that you would like to filter (*.xml) and click Next.&lt;br /&gt;&lt;br /&gt;13. On the File Polling screen, specify the polling frequency (10 seconds) and the minimum file age (5 seconds) and click Next.&lt;br /&gt;&lt;br /&gt;14. On the Messages screen, specify the schema of your files. For this tutorial, I am using an xml schema (&lt;a href="http://217.27.51.243/aantoniou.nsf/e438e0ea033a1649c225760e00313f20/$FILE/note.xsd"&gt;note.xsd&lt;/a&gt;) and xml file (&lt;a href="http://217.27.51.243/aantoniou.nsf/e438e0ea033a1649c225760e00313f20/$FILE/note.xml"&gt;note.xml&lt;/a&gt;) from w3schools. So click the flash light next to the URL text box to browse to the note.xsd. Because I did not import the schema file in my project, click on the Import Schema File ... and browse to the note.xsd. Select the option Copy to Project and click OK.&lt;br /&gt;&lt;br /&gt;15. On the Localize Files window just click OK.&lt;br /&gt;&lt;br /&gt;16. Now on the Type Chooser, expand Project Schema Files, note.xsd and select the node element and click OK.&lt;br /&gt;&lt;br /&gt;17. You should see now on the Messages screen the URL field is populated with the xsd/note.xsd value and the Schema Element set to note (this is our root element). Click Next and then Finish.&lt;br /&gt;&lt;br /&gt;18. On the composite.xml you should see now the ReadFileService on the Exposed Services swim lane.&lt;br /&gt;&lt;br /&gt;19. From the Component Palette drag a BPEL Process Service Component on the Components swim lane.&lt;br /&gt;&lt;br /&gt;20. On the Create BPEL Process window, specify a name (BPELProcess1), a template (Synchronous BPEL Process). Deselect the option Expose as a SOAP Service and click OK.&lt;br /&gt;&lt;br /&gt;21. From the Component Palette, drag a Mediator Service Component on the Components swim lane.&lt;br /&gt;&lt;br /&gt;22. On the Mediator Component window, specify a name (Mediator1) and from the Template select Define Interface later and click OK.&lt;br /&gt;&lt;br /&gt;23. From the composite.xml, drag a wire from the ReadFileService to the Mediator.&lt;br /&gt;&lt;br /&gt;24. From the composite.xml, drag a wire from the Mediator to the BPELProcess1.&lt;br /&gt;&lt;br /&gt;25. Double click the BPELProcess1 to open it with the BPEL editor. &lt;br /&gt;&lt;br /&gt;26. Drag an Assign BPEL Activity between the receiveInput and replyOutput activities. &lt;br /&gt;&lt;br /&gt;27. Create a Copy Operation assigning the input variable to the output variable and click OK.&lt;br /&gt;&lt;br /&gt;28. From the composite.xml, double click the Mediator1 to open the Mediator1.mplan file.&lt;br /&gt;&lt;br /&gt;29. Click on the Select an existing mapper file or create a new one option next to the Transform Using.&lt;br /&gt;&lt;br /&gt;30. On the Request Transformation Map, select the Create New Mapper File and click OK.&lt;br /&gt;&lt;br /&gt;31. From the mapper file (note_To_process.xsl), map one of the note elements (from) to the input element of BPELProcess1.&lt;br /&gt;&lt;br /&gt;32. Click save and on the Save Warning click Save All&lt;br /&gt;&lt;br /&gt;33. Before deploying the composite, you must create the Outbound Connection Pool for the ftp adapter that we have created. So go to your weblogic console (http://domain:port/console and login as weblogic.&lt;br /&gt;&lt;br /&gt;34. Click Deployments from the domain structure and from the deploments table, select FtpAdapter.&lt;br /&gt;&lt;br /&gt;35. Select the Configurations tab and in the Outbound Connection Pool Configuration Table click New.&lt;br /&gt;&lt;br /&gt;36. On the Outbound Connection Groups, select javax.resource.cci.ConnectionFactory and click Next.&lt;br /&gt;&lt;br /&gt;37. Specify a JNDI Name (for example, eis/Ftp/MyDemoFtpAdapter) and click Finish.&lt;br /&gt;&lt;br /&gt;38. Click the Security tab (next to Configuration) and click New in the Credential Mappings table.&lt;br /&gt;&lt;br /&gt;39. Select your Outbound Connection Pool (eis/Ftp/MyDemoFtpAdapter) and click Next.&lt;br /&gt;&lt;br /&gt;40. On the WebLogic Server User screen, select the Configured User Name radion button and in the WebLogic Server User Name input field, enter your weblogic username (weblogic) and click Next.&lt;br /&gt;&lt;br /&gt;41. On the EIS User Name and Password screen, enter your operating system user and password that you want to connect using FTP (please note that I am using Oracle Red Hat Linux 5 with vsftpd. I am not connecting using the root user but another user that i have created named oracle). Click Finish.&lt;br /&gt;&lt;br /&gt;42. Deploy your project to your soa domain.&lt;br /&gt;&lt;br /&gt;43. Place the note.xml in your input directory. The file adapter will pick it up, initiate the BPEL Process, copying the from element value to the BPEL’s input variable. The BPEL process will then copy the input variable to the output variable and reply back with the value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-8242531950640540248?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/8242531950640540248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/04/ftp-adapter-as-service-component.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/8242531950640540248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/8242531950640540248'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/04/ftp-adapter-as-service-component.html' title='FTP Adapter As A Service Component'/><author><name>Antonis Antoniou</name><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></entry><entry><id>tag:blogger.com,1999:blog-7474806092396192473.post-7391925428391721011</id><published>2010-02-04T13:03:00.003+02:00</published><updated>2011-09-16T13:02:33.061+03:00</updated><title type='text'>File Adapter As A Service Component</title><content type='html'>The following tutorial illustrates the usage of the file adapter as a service component.&lt;br /&gt;&lt;br /&gt;1. In the Applications Navigator, click New Application. Another option is to use the File-&gt;New... menu option to create a new application.&lt;br /&gt;&lt;br /&gt;2. In the Create Application dialog box, specify an Application Name (FileAdapterAsServiceComponentApp).&lt;br /&gt;&lt;br /&gt;3. Leave the Application Package Prefix field empty. In the Application Templates choose the SOA Application and click Next.&lt;br /&gt;&lt;br /&gt;4. In the Project Name field enter a project name (FileAdapterAsServiceComponentProj). In the Composite Template select Empty Composite and click Finish.&lt;br /&gt;&lt;br /&gt;5. From the Component Palette select the File Adapter Service Adapter and drag it on the Exposed Services&lt;br /&gt;&lt;br /&gt;6. On the Welcome to the Adapter Configuration Wizard, click Next.&lt;br /&gt;&lt;br /&gt;7. On the Service Name screen, specify a service name (ReadFileService).&lt;br /&gt;&lt;br /&gt;8. On the Adapter Interface, select the Define from operation and schema (specify later) radio button for the Interface option and click Next.&lt;br /&gt;&lt;br /&gt;9. On the Operation screen, select the Read File Operation Type option and click Next.&lt;br /&gt;&lt;br /&gt;10. On the File Directories screen, specify a directory for the Incoming Files (/home/oracle/tmp/in). If you would like to archive the processed files, then specify an archive location (/home/oracle/tmp/archive) and click Next.&lt;br /&gt;&lt;br /&gt;11. On the File Filtering screen, specify any name patterns that you would like to filter (*.xml) and click Next.&lt;br /&gt;&lt;br /&gt;12. On the File Polling screen, specify the polling frequency (10 seconds) and the minimum file age (5 seconds) and click Next.&lt;br /&gt;&lt;br /&gt;13. On the Messages screen, specify the schema of your files. For this tutorial, I am using an xml schema (&lt;a href="http://217.27.51.243/aantoniou.nsf/e438e0ea033a1649c225760e00313f20/$FILE/note.xsd"&gt;note.xsd&lt;/a&gt;) and xml file (&lt;a href="http://217.27.51.243/aantoniou.nsf/e438e0ea033a1649c225760e00313f20/$FILE/note.xml"&gt;note.xml&lt;/a&gt;) from w3schools. So click the flash light next to the URL text box to browse to the note.xsd. Because I did not import the schema file in my project, click on the Import Schema File ... and browse to the note.xsd. Select the option Copy to Project and click OK.&lt;br /&gt;&lt;br /&gt;14. On the Localize Files window just click OK.&lt;br /&gt;&lt;br /&gt;15. Now on the Type Chooser, expand Project Schema Files, note.xsd and select the node element and click OK.&lt;br /&gt;&lt;br /&gt;16. You should see now on the Messages screen the URL field is populated with the xsd/note.xsd value and the Schema Element set to note (this is our root element). Click Next and then Finish.&lt;br /&gt;&lt;br /&gt;17. On the composite.xml you should see now the ReadFileService on the Exposed Services swim lane.&lt;br /&gt;&lt;br /&gt;18. From the Component Palette drag a BPEL Process Service Component on the Components swim lane.&lt;br /&gt;&lt;br /&gt;19. On the Create BPEL Process window, specify a name (BPELProcess1), a template (Synchronous BPEL Process). Deselect the option Expose as a SOAP Service and click OK.&lt;br /&gt;&lt;br /&gt;20. From the Component Palette, drag a Mediator Service Component on the Components swim lane.&lt;br /&gt;&lt;br /&gt;21. On the Mediator Component window, specify a name (Mediator1) and from the Template select Define Interface later and click OK.&lt;br /&gt;&lt;br /&gt;22. From the composite.xml, drag a wire from the ReadFileService to the Mediator.&lt;br /&gt;&lt;br /&gt;23. From the composite.xml, drag a wire from the Mediator to the BPELProcess1.&lt;br /&gt;&lt;br /&gt;24. Double click the BPELProcess1 to open it with the BPEL editor. &lt;br /&gt;&lt;br /&gt;25. Drag an Assign BPEL Activity between the receiveInput and replyOutput activities. &lt;br /&gt;&lt;br /&gt;26. Create a Copy Operation assigning the input variable to the output variable and click OK.&lt;br /&gt;&lt;br /&gt;27. From the composite.xml, double click the Mediator1 to open the Mediator1.mplan file.&lt;br /&gt;&lt;br /&gt;28. Click on the Select an existing mapper file or create a new one option next to the Transform Using.&lt;br /&gt;&lt;br /&gt;29. On the Request Transformation Map, select the Create New Mapper File and click OK.&lt;br /&gt;&lt;br /&gt;30. From the mapper file (note_To_process.xsl), map one of the note elements (from) to the input element of BPELProcess1.&lt;br /&gt;&lt;br /&gt;31. Click save and on the Save Warning click Save All&lt;br /&gt;&lt;br /&gt;32. Deploy your project to your soa domain.&lt;br /&gt;&lt;br /&gt;33. Place the note.xml in your input directory. The file adapter will pick it up, initiate the BPEL Process, copying the from element value to the BPEL’s input variable. The BPEL process will then copy the input variable to the output variable and reply back with the value.&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B62-7A9Xi4iIODJkNDMyY2ItOTgzZS00ZTIyLTgzNzAtNTg2ZjlkNzEyNTBk&amp;hl=en_US"&gt;File Adapter as a Service Component&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7474806092396192473-7391925428391721011?l=antonis-antoniou.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antonis-antoniou.blogspot.com/feeds/7391925428391721011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/02/1-file-adapter-as-service-component.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/7391925428391721011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7474806092396192473/posts/default/7391925428391721011'/><link rel='alternate' type='text/html' href='http://antonis-antoniou.blogspot.com/2010/02/1-file-adapter-as-service-component.html' title='File Adapter As A Service Component'/><author><name>Antonis Antoniou</name><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></entry></feed>
