{"id":981,"date":"2015-07-09T13:31:01","date_gmt":"2015-07-09T12:31:01","guid":{"rendered":"http:\/\/patrick4pitss.wordpress.com\/?p=212"},"modified":"2017-12-20T15:17:34","modified_gmt":"2017-12-20T14:17:34","slug":"from-forms-legacy-systems-to-soa-suite-12c-and-maf","status":"publish","type":"post","link":"https:\/\/pitss.org\/de\/from-forms-legacy-systems-to-soa-suite-12c-and-maf\/","title":{"rendered":"From Forms Legacy systems to SOA Suite 12c and MAF"},"content":{"rendered":"<h2 style=\"text-align: left;\">Introduction<\/h2>\n<p style=\"text-align: left;\">In modern application development it is propagated to use webservices and even use certain tools like the Oracle SOA Suite or Oracle Service Bus to manage and orchestrate webservices in a central environment or to enable service abstraction. But many Oracle Forms developers find it hard to use these methods in their application and other applications to reuse the existing business logic by deploying a webservice. But since there is a significant raise in mobile enablement, also legacy systems like Oracle Forms applications should benefit from generating webservices.<\/p>\n<p style=\"text-align: center;\">\u201cApplication infrastructure and middleware<br \/>\nprojects are becoming the cornerstone of the<br \/>\ndigital business.\u201d<\/p>\n<p style=\"text-align: center;\"><strong>Fabrizio Biscotti<br \/>\n<\/strong>Gartner Research, 2014<\/p>\n<p>The main problem that Oracle Forms developers face when you ask them to implement SOA into their applications or build webservices based on logic on source code from Forms, is the fact that SOA is a paradigm \u2013 it\u2019s not a technology or a product \u2013 it is a concept. And it is different from the concepts on which legacy systems base on.<\/p>\n<p>Also do Oracle Forms applications tend to be monoliths, where it is hard and time consuming to identify the business logic and move this logic to the database and build a webservice on top. A second problem is often to first identify code, that really is a key process in a application, meaning which is used heavily and for which it would make sense to build a webservice.<\/p>\n<p>The Oracle SOA Suite and especially the Service Bus enables Developers to publish, manage &amp; orchestrate webservices. Keywords here are mobile &amp; cloud enablement \u2013 but also it is easier to switch technlogies when using webservices, especially in the SOA Suite. Oracle Forms is able to consume webservices. So if we have a way to record the business logic that is used much often in our Oracle Forms application, convert it to a webservice and deploy it on the Service Bus we would be able to consume this logic in other technologies. This is where <a href=\"https:\/\/pitss.org\/de\/produkte\/pitss-con\/\">PITSS.CON<\/a> comes into play. With the use of a database repository, where it is possible to load the whole Forms Application into, analyze it and record certain processes into a backlog called user stories, PITSS.CON is able to transform logic from Forms into the database and make it accessible for the Oracle SOA Suite. So those two products harmonise very well together.<a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/orders1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-228\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/orders1.png?w=640&amp;h=349\" alt=\"orders\" width=\"640\" height=\"349\" \/><\/a><\/p>\n<p>In this article I would like to show you, how to do so. As a example I took \u201corders.fmb\u201d demo. You can see the runtime screen above. Basically this form displays orders and the corresponding customers when clicking on \u201ccustomer information\u201d. I would like to extract this logic from the fmb.<\/p>\n<h2>Recording of User Stories<\/h2>\n<p>As part of the solution PITSS.CON was used to identify the business logic by injecting an <a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-214 size-large\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image1.png?w=640&amp;h=283\" alt=\"image1\" width=\"640\" height=\"283\" \/><\/a>Oracle Forms application with a logging mechanism called \u201cuser stories\u201d. But before that we did several steps within the tool to get rid of the unused &amp; redundant code \u2013 because we don\u2019t want to generate a webservice for code that is not in use anymore or redundant. While PITSS.CON is a repository based application, it is possible to easily identify redundant code through the comparison of program units. Dead code can be found when searching for program-units that are not called by any Trigger. After we have done that, it is much easier to concentrate on the \u201cused code\u201d. But how is it possible to identify code, that is used in applications and central to them? PLSQL-injection is the keyword here. With PITSS.CON we can easily inject all triggers and program-units of an application.<a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image4.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-223 aligncenter\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image4.png?w=416&amp;h=126\" alt=\"image4\" width=\"416\" height=\"126\" \/><\/a> The injection is basically a logging mechanism which writes the callings in a application into a logging table. Afterwards this log table is evaluated by PITSS.CON. So we get a connection between the development tool PITSS.CON<a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-222 size-large\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image3.png?w=640&amp;h=37\" alt=\"image3\" width=\"640\" height=\"37\" \/><\/a> and the processes that the application users utilise the most in the application. We enable the users to record their daily work processes.<\/p>\n<h2>Business Logic to database<\/h2>\n<p><a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image5.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-224 alignleft\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image5.png?w=404&amp;h=268\" alt=\"image5\" width=\"404\" height=\"268\" \/><\/a>With these information we are able to manipulate the application. So we have the whole application loaded into the repository and we know exactly which objects are used \u2013 so we create this process as a subset of our application and move the logic to where we want \u2013 either another technology or the database. In this example<br \/>\nwe moved the logic to the database. This can be done with the PITSS.CON module \u201cBusiness Logic to DB\u201d. Here it\u2019s possible to select a program-unit or trigger and calculate the dependencies that occur, when moving an object to the database. Also a complete flow can be moved. PITSS.CON gives certain information on how easy it is to move the process to the database. If In our case we want to transfer a whole flow to the database \u2013 we check the metrics and click on \u201ctransfer objects to DB\u201d. <a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image6.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-215 aligncenter\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image6.png?w=446&amp;h=346\" alt=\"image6\" width=\"446\" height=\"346\" \/><\/a>We will then be asked in which package we would like to add the procedures and PITSS.CON will automatically build a package with the given procedures \u2013 also it will insert the necessary parameters from form variables or objects so that the procedures will work correctly. After this step we will get the following source code, so that we can create the package on the application database.<\/p>\n<h2>Create SOA Application<\/h2>\n<p>Now we can build a webservice on top of this package. For that I used the ability of the Oracle SOA Suite and built a Webservice based on the newly created db-package with an adapter. An db-adapter in the SOA Suite is a basically a webservice, which is wizard based and gives us an easy access to the database package. On the picture below, you can see the outcome of the new created db-adapter on the right side: getCustomerID is a SOA Suite adapter, which is based on the database package that was created earlier with PITSS.CON.<br \/>\n<a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-216 size-large\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image7.png?w=640&amp;h=105\" alt=\"image7\" width=\"640\" height=\"105\" \/><\/a><\/p>\n<p>I just added a mediator component to create a value mapping and the SOA Suite created a webservice (SOAPService) which can be consumed by another technology. Here the Oracle Mobile Application Framework (MAF) was used to use the webservice from the SOA Suite. After that, the SOA application was deployed on a Oracle Weblogic Server.<\/p>\n<h2>Consume webservice in MAF<\/h2>\n<p>So basically the process of getting Customer information was recorded with PITSS.CON from the good old Forms module \u201cOrders.fmb\u201d, moved to the database and a webservice adapter was created via the SOA Suite. With the help of a Mediator component we achieved a value mapping and finally we\u2019ve built a mobile application on top of the SOA application. So here is our simple mobile application, which gives us customer information on our mobile device:<\/p>\n<p><a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image9.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-218 aligncenter\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image9.png?w=224&amp;h=400\" alt=\"image9\" width=\"224\" height=\"400\" \/><\/a><a href=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image8.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-217 aligncenter\" src=\"https:\/\/patrick4pitss.files.wordpress.com\/2015\/07\/image8.png?w=225&amp;h=400\" alt=\"image8\" width=\"225\" height=\"400\" \/><\/a>So now we got the logic in the database. Whenever we want to change something on the logic we just have to change the db-package. We could also implement the webservice into our Forms application. But that is a topic for another blog article.<\/p>\n<p><a href=\"http:\/\/feeds.wordpress.com\/1.0\/gocomments\/patrick4pitss.wordpress.com\/212\/\" rel=\"nofollow\"><img decoding=\"async\" src=\"http:\/\/feeds.wordpress.com\/1.0\/comments\/patrick4pitss.wordpress.com\/212\/\" alt=\"\" border=\"0\" \/><\/a> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pixel.wp.com\/b.gif?host=patrick4pitss.wordpress.com&amp;blog=33916245&amp;post=212&amp;subd=patrick4pitss&amp;ref=&amp;feed=1\" alt=\"\" width=\"1\" height=\"1\" border=\"0\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In modern application development it is propagated to use webservices and even use certain tools like the Oracle SOA Suite or Oracle Service Bus to manage and orchestrate webservices in a central environment or to enable service abstraction. But &hellip; <a href=\"https:\/\/patrick4pitss.wordpress.com\/2015\/07\/09\/from-forms-legacy-systems-to-soa-suite-12c-and-maf\/\">Continue reading <span>&rarr;<\/span><\/a><img loading=\"lazy\" decoding=\"async\" alt=\"\" border=\"0\" src=\"https:\/\/pixel.wp.com\/b.gif?host=patrick4pitss.wordpress.com&amp;blog=33916245&amp;post=212&amp;subd=patrick4pitss&amp;ref=&amp;feed=1\" width=\"1\" height=\"1\" \/><\/p>\n","protected":false},"author":47,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[150,97,151,100,145,83,98,111,102,101,81,152,92],"tags":[123,125],"class_list":["post-981","post","type-post","status-publish","format-standard","hentry","category-backlog","category-forms_reports","category-forms-modernization","category-general","category-maf","category-oracle","category-oracle-forms","category-oracle-forms2adf-migration","category-oracle-fusion-middleware","category-pitss-con","category-tech-blog","category-user-stories","category-webservice","tag-soa","tag-soa-suite"],"_links":{"self":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts\/981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/comments?post=981"}],"version-history":[{"count":3,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":18549,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts\/981\/revisions\/18549"}],"wp:attachment":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/media?parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/categories?post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/tags?post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}