CenterPoint Energy
Transcription
CenterPoint Energy
CenterPoint Energy – Creating and exposing web services over multiple media James Gilpin Technology Architect/CenterPoint Energy CenterPoint Energy, Inc. CenterPoint Energy operates in five primary businesses: electric transmission and distribution, natural gas distribution, interstate natural gas pipelines, field services, and competitive natural gas sales and services After a successful re-hosting of Natural/Adabas applications from the mainframe in August 2009, CenterPoint Energy has been extending the modernization of these applications by exposing them as web services to clients such as mobile, laptop, desktop and other APIs. Exposure of the business logic is through a combination of EntireX, Web Services Stack, and wM ESB. The strategy for exposing these services and the discussion regarding the implementation is the focus of this presentation. 27 June 2011 | ProcessWorld 2011 | 2 Mobile Strategy In April, 2011, CenterPoint Energy started developing a Mobile Strategy. As part of that strategy a number of standards were published and teams are to adhere to those standards. The strategy was targeted to mobile devices, but we found that it can be extended to several media types. Whether desktop, mobile, B2B, many of these same concepts are applicable. 27 June 2011 | ProcessWorld 2011 | 3 Software AG product areas involved 27 June 2011 | ProcessWorld 2011 | 4 Agenda Discuss our strategy The client interface Client interface talking to web service Web service and business logic Other interfaces to same business logic Other options – Event Replication (database level) 27 June 2011 | ProcessWorld 2011 | 5 The Flow FTP HTTP SMTP FAX Event Replication Users wM IS EntireX NATURAL Developers SPOD and NaturalONE 27 June 2011 | ProcessWorld 2011 | 6 Strategy 27 June 2011 | ProcessWorld 2011 | 7 Native vs. Web based applications It will be necessary to evaluate the choice of application design tools, user interfaces, and a variety of items that are dependent on the application's intended target platform. This first decision will drive the rest of the mobile strategy and is therefore the most important. 27 June 2011 | ProcessWorld 2011 | 8 http://www.computerworld.com/s/article/9217296/Shock_Windows_8_optimized_for_desktop_tablets?taxonomyId=15 27 June 2011 | ProcessWorld 2011 | 9 Web Based Applications A more prudent choice would be the more universally accepted web based application. By leveraging the growing momentum of HTML5, CSS3, JavaScript, and AJAX, a web-based application can achieve platform independence by gaining access to a device's functionality and then mimicking the behavior of a native application. Designing web applications to take advantage of web browsers instead of specific devices increases the longevity of the application and thereby reducing the overall costs of the typical project. There are several other advantages to this approach, including the ability to use the same web application on multiple devices with minor tests for the type of browser the client has chosen to use. Appendix A and B 27 June 2011 | ProcessWorld 2011 | 10 The Client Interface 27 June 2011 | ProcessWorld 2011 | 11 27 June 2011 | ProcessWorld 2011 | 12 Mobile Web Browsers Safari The Apple Safari browser is HTML5 compliant, available for other platforms, and stable. Testing the web application from a variety of platforms is a plus for this browser. Blackberry Bolt RIM has changed their basic browser several times over the last 10 years. The most recent incantation is called ‘Bolt’. It supports HTML5, Flash, and a variety of options not previously available. Google Android A powerful web browser, but requires the Android operating system to function. Skyfire Skyfire supports several types of mobile devices, including Android, iPhone, and Windows Mobile. 27 June 2011 | ProcessWorld 2011 | 13 User Interface Keep the interface simple Screen size and ability to provide input data are the two most critical areas. To make it easier for the user to navigate through the web application, use a common set of menu buttons (home, logoff, etc.) on each page. Buttons common to each screen should be located in the same place. For example,’ home’ or ‘main menu’ should be located in the top left hand corner. The ‘logoff’ button should be located in the top right hand corner. 27 June 2011 | ProcessWorld 2011 | 14 Data Entry To make it easier for the end user to enter required data, set the tab index to flow the data input in the order the user would expect to be normal. For example, tabindex=1, for user id; taxindex=2 for passwords; etc. 27 June 2011 | ProcessWorld 2011 | 15 Data crowding Data crowding the screen does NOT enhance the usability of an application. In many cases, it serves to distract the user. Limit the number input fields and columns of table information. Font size should be large enough to comfortable read. Avoid the common mistake of reducing the font size to fit more information as this leads to clutter. Appendix C 27 June 2011 | ProcessWorld 2011 | 16 Client interface talking to the web service 27 June 2011 | ProcessWorld 2011 | 17 Calling the Web Service Execute these calls on the server, NOT the client machine Security Versioning How? Java Server Pages – WSDL2Java Based on Apache AXIS2 Generates an object that provides you with simple set and get methods .NET 4.0 .NET SDK, create a proxy to consume the web service wsdl.exe 27 June 2011 | ProcessWorld 2011 | 18 Using JAVA? WSDL2Java, part of Axis2 implementation 27 June 2011 | ProcessWorld 2011 | 19 Generated files 27 June 2011 | ProcessWorld 2011 | 20 //reading in the serviceshost file for the connection Validate DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("http://localhost:8080/prototype/services.xml"); NodeList nl = doc.getElementsByTagName("serviceshost"); Reading an XML file via the web String serviceshost = nl.item(0).getFirstChild().getNodeValue(); boolean validUser = false; boolean validPW = false; boolean oktocont=true; CVALIDATResponse Cresponse = null; if (request.getParameter("internetid") == null) { oktocont=false; validUser=false; } Pick up the user id and password if (request.getParameter("internetpw") == null && (oktocont)) { oktocont=false; validPW=false; } 27 June 2011 | ProcessWorld 2011 | 21 Validate if (oktocont) { try { CVALIDATStub stub = new CVALIDATStub(serviceshost + "/CVALIDAT"); Set target host and service CVALIDATDocument.CVALIDAT CVALIDATrequest = CVALIDATDocument.CVALIDAT.Factory.newInstance(); CVALIDATrequest.setINTERNETID(request.getParameter("internetid").toUpperCase()); CVALIDATrequest.setINTERNETPW(request.getParameter("internetpw").toUpperCase()); CVALIDATDocument CVALIDATrequestDoc = CVALIDATDocument.Factory.newInstance(); CVALIDATrequestDoc.setCVALIDAT(CVALIDATrequest); CVALIDATResponseDocument CVALIDATresponseDoc = stub.cVALIDAT(CVALIDATrequestDoc); Cresponse = CVALIDATresponseDoc.getCVALIDATResponse(); Make the call to the web service session.setAttribute("cvalidat", Cresponse); if (request.getParameter("cmpy") == null) { session.setAttribute("cmpy",53); } else { session.setAttribute("cmpy",Integer.parseInt(request.getParameter("cmpy"))); } } Appendix D and E 27 June 2011 | ProcessWorld 2011 | 22 Web Service and Business Logic 27 June 2011 | ProcessWorld 2011 | 23 Turning Business Logic into a Web Service Business Logic COBOL, Natural, ETC. How? EntireX RPC Servers webMethods Integration Server Flow Service Adapters 27 June 2011 | ProcessWorld 2011 | 24 WSStack EntireX Web Services Stack Implementation of Axis2 Copy wsstack.war to servlet engine (ie. Tomcat) Generate WSDL and AAR files from IDL Publish Axis2 Archive files to wsstack http://localhost:8080/wsstack/sagdeployer 27 June 2011 | ProcessWorld 2011 | 25 wM Integration Server Adapter Services for Natural NaturalONE Generate wM IS Connection from IDL file Generate WSD Appendix F and G 27 June 2011 | ProcessWorld 2011 | 26 Other Interfaces 27 June 2011 | ProcessWorld 2011 | 27 Other Interfaces wM Integration Server FTP/S – built in ftp wmisaddress cd namespacedir/folder/subfolder/service put yourfile.xml get resultfile.xml SMTP – via external SMTP server mailto: [email protected] Subject: mywork:Service Use body or attach xml file HTTP/S – built in http://server:port/invoke/folder.subfolder/service File Polling Be sure to define the ports and allow traffic via the appropriate firewalls 27 June 2011 | ProcessWorld 2011 | 28 Other Options 27 June 2011 | ProcessWorld 2011 | 29 Data Replication ADABAS SQL Gateway Direct access to the ADABAS files ADABAS Event Replicator Data warehouse built for adhoc queries, read only access Performs initial state copy of entire file Copies updates and deletes to SQL Server 27 June 2011 | ProcessWorld 2011 | 30 Data Mapping – Replication Table File Common design used to store states, countries, area codes, zip codes, etc. Infrequent changes Built on record type and null suppression Map subsets of data to individual SQL tables Based on key criteria tb_city_name > ‘ ‘ Descriptor to ADABAS file, only picks up those records with a city name Be careful of ‘field abuse’ Verify counts after the initial load and after file changes 27 June 2011 | ProcessWorld 2011 | 31 Data Dictionary Manager 27 June 2011 | ProcessWorld 2011 | 32 Event Replicator 27 June 2011 | ProcessWorld 2011 | 33 Don’t Forget to Visit the Solutions Hall! 27 June 2011 | ProcessWorld 2011 | 34 Thank you! Appendix A The Client(s) - Show many choices, so little time 27 June 2011 | ProcessWorld 2011 | 36 What are we talking about? FTP HTTP SMTP Users Developers 27 June 2011 | ProcessWorld 2011 | 37 Set your target! – Creating a Strategy CenterPoint Energy Majority of our users have mobile devices today IBM had first device in 1992, called the Simon Pager, Phone, Fax Machine, and PDA Sold in 1994 for $899, in 15 states and 190 cities. Blackberry, 1999 Four (4) operating systems currently dominate the market Symbian OS (Ericson) RIM OS (Blackberry) Andriod (Google) iOS (Apple) 27 June 2011 | ProcessWorld 2011 | 38 Set your target! – Creating a Strategy Worldwide sales recorded in 2010 and 2009 Trending toward Andriod and iOS http://www.canalys.com/pr/2011/r2011013.html http://www.gartner.com/it/page.jsp?id=1543014 27 June 2011 | ProcessWorld 2011 | 39 Native vs. Web based applications It will be necessary to evaluate the choice of application design tools, user interfaces, and a variety of items that are dependent on the application's intended target platform. This first decision will drive the rest of the mobile strategy and is therefore the most important. 27 June 2011 | ProcessWorld 2011 | 40 Native Applications Designers targeting a specific set of devices will most likely choose to use the design tools and templates provided by the vendor of those devices. Apple, Google, and Microsoft have all provided development tools specific to their device platform and operating systems. In the case of Apple, the vendor has also developed a unique download approach that requires Apple to approve the application for use by users of the vendor’s devices. This can be seen a restriction due to the methodology chosen by the vendor to safeguard their operating system from hackers and fraudulent applications. Google and Microsoft are not as restrictive, but do have a certain set of requirements regarding development tools and interface design restrictions. 27 June 2011 | ProcessWorld 2011 | 41 Native Applications Native applications are written to install on a mobile device and then, as required, connect to gather data and business rules from remote servers. This type of installation leads to upgrade requirements, synchronization of data and business rules, and higher support costs. The advantage of these types of applications is the use of the device user interface and graphics. In the case of the iPhone (Apple) the vendor provides a template design that gives the application the look and feel of all the other applications installed on the device. 27 June 2011 | ProcessWorld 2011 | 42 Native Applications Creating native applications involves keeping a code base for each mobile device. This leads to duplication of effort, multiple versions of the same application, and multiple testing phases. It is strongly recommended that the development of native applications be avoided. 27 June 2011 | ProcessWorld 2011 | 43 http://www.computerworld.com/s/article/9217296/Shock_Windows_8_optimized_for_desktop_tablets?taxonomyId=15 27 June 2011 | ProcessWorld 2011 | 44 Web Based Applications A more prudent choice would be the more universally accepted web based application. By leveraging the growing momentum of HTML5, CSS3, JavaScript, and AJAX, a web-based application can achieve platform independence by gaining access to a device's functionality and then mimicking the behavior of a native application. Designing web applications to take advantage of web browsers instead of specific devices increases the longevity of the application and thereby reducing the overall costs of the typical project. There are several other advantages to this approach, including the ability to use the same web application on multiple devices with minor tests for the type of browser the client has chosen to use. 27 June 2011 | ProcessWorld 2011 | 45 Appendix B What do these terms mean? 27 June 2011 | ProcessWorld 2011 | 46 Languages HTML5 HTML is the language that provides the structure and content for the World Wide Web. HTML5 has been in the development stage for a number of years. Several software vendors are conforming the ‘Working Draft’ specifications and the W3C (World Wide Web Consortium) is expected to issue ‘Last Call’ in May, 2011; with a final recommendation slated for 2014. HTML5 provides an enhanced set of tags such as <canvas>, <video>, <audio>, <nav>, <section>, <article>, and <header>. Previous versions of HTML required the use of ‘id=’ and div tags to support this same functionality. It is recommended that ALL output be created using the HTML5 standards. 27 June 2011 | ProcessWorld 2011 | 47 Languages CSS3 – Cascading Style Sheets Instead of defining all features in a single, large specification like CSS2, CSS3 is divided into several separate documents called "modules". Each module adds new capability or extends features defined in CSS2, over preserving backward compatibility. Work on CSS level 3 started around the time of publication of the original CSS2 Recommendation. The earliest CSS3 drafts were published in June 1999. Due to the modularization, different modules have different stability and are in different status. As of March 2011, there are over 40 CSS modules published from the CSS Working Group. Some modules such as Selectors, Namespaces, Color and Media Queries are considered stable and are either in Candidate Recommendation or Proposed Recommendation status. Once CSS 2.1 is finalized and published as Recommendation, they are likely to go to Recommendation as well. http://en.wikipedia.org/wiki/CSS3#CSS_3 27 June 2011 | ProcessWorld 2011 | 48 Languages Javascript Because JavaScript code can run locally in a user's browser (rather than on a remote server), the browser can respond to user actions quickly, making an application more responsive. Furthermore, JavaScript code can detect user actions which HTML alone cannot, such as individual keystrokes. Applications such as Gmail take advantage of this: much of the user-interface logic is written in JavaScript, and JavaScript dispatches requests for information (such as the content of an e-mail message) to the server. The wider trend of Ajax programming similarly exploits this strength. http://en.wikipedia.org/wiki/Javascript 27 June 2011 | ProcessWorld 2011 | 49 Languages AJAX AJAX (an acronym for Asynchronous JavaScript and XML) is a group of interrelated web development methods used on the client-side to create interactive web applications. With Ajax, web applications can send data to, and retrieve data from, a server asynchronously (in the background) without interfering with the display and behavior of the existing page. Data is usually retrieved using the XMLHttpRequest object. Despite the name, the use of XML is not needed (JSON – JavaScript Object Notation is often used instead), and the requests need not be asynchronous. 27 June 2011 | ProcessWorld 2011 | 50 Appendix C Design Considerations 27 June 2011 | ProcessWorld 2011 | 51 Mobile Web Browsers Safari The Apple Safari browser is HTML5 compliant, available for other platforms, and stable. Testing the web application from a variety of platforms is a plus for this browser. Blackberry Bolt RIM has changed their basic browser several times over the last 10 years. The most recent incantation is called ‘Bolt’. It supports HTML5, Flash, and a variety of options not previously available. Google Android A powerful web browser, but requires the Android operating system to function. Skyfire Skyfire supports several types of mobile devices, including Android, iPhone, and Windows Mobile. 27 June 2011 | ProcessWorld 2011 | 52 Mobile Web Browsers Internet Explorer Mobile Microsoft has integrated the Bing search engine into the latest version of their IE Mobile browser. It also supports HTML5, gesture touch commands, and can display web sites in both ‘mobile’ and ‘desktop’ mode. Opera Mobile Opera Mobile is installed on a variety of smart phones, including HTC, Nokia, Sony Ericsson, Samsung, and Motorola. Current implementations do not document support for HTML5. 27 June 2011 | ProcessWorld 2011 | 53 User Interface Design Considerations Easily accessible and user friendly are the key phrases to remember when designing any web site. Designing web sites to be accessible by mobile devices presents a set of unique challenges to the site development team. 27 June 2011 | ProcessWorld 2011 | 54 User Interface Keep the interface simple Screen size and ability to provide input data are the two most critical areas. To make it easier for the user to navigate through the web application, use a common set of menu buttons (home, logoff, etc.) on each page. Buttons common to each screen should be located in the same place. For example,’ home’ or ‘main menu’ should be located in the top left hand corner. The ‘logoff’ button should be located in the top right hand corner. 27 June 2011 | ProcessWorld 2011 | 55 User Interface <header> <nav> <ul> <li><a href="menu.jsp">Menu</a></li> <% if (session.getAttribute("cvalidat") != null) { %> <li><a href="pointconfirmations.jsp">Point Confs</a></li> <li><a href="querynoms.jsp">Noms</a></li> <li><a href="logoff.jsp">Logoff</a></li> <% } %> </ul> </nav> </header> #nav { margin-left:auto; padding-top:8px;} #nav ul {list-style:none;} #nav li {display:inline;} #nav a, #navigation a:visited, #navigation a:active {display:block; float:left; background:url(images/menu2.jpg) repeat-x; height:19px; padding:5px 15px 0 15px; margin-right:5px; color:#000; text-decoration:none; border:solid 1px #999;} #nav a:hover {background:url(images/menu1.jpg) repeat-x; color:#fff; border: solid 1px #09c;} #nav .active a {background:url(images/menu1.jpg) repeat-x; color:#fff; border: solid 1px #09c;} 27 June 2011 | ProcessWorld 2011 | 56 Data Entry To make it easier for the end user to enter required data, set the tab index to flow the data input in the order the user would expect to be normal. For example, tabindex=1, for user id; taxindex=2 for passwords; etc. 27 June 2011 | ProcessWorld 2011 | 57 Simplify the design Data crowding the screen does NOT enhance the usability of an application. In many cases, it serves to distract the user. Limit the number input fields and columns of table information. Font size should be large enough to comfortable read. Avoid the common mistake of reducing the font size to fit more information as this leads to clutter. 27 June 2011 | ProcessWorld 2011 | 58 User Interface 27 June 2011 | ProcessWorld 2011 | 59 Bandwidth The amount of data downloaded for an individual page can dramatically affect the performance of the web site. Images, embedded scripts, and data used for form elements should be minimized. Remember, your users may be paying $$$$ for bandwidth… Graphics should be kept to a minimum and those used should be tested for bandwidth considerations. This may mean reducing the quality of an image to lessen the impact on the speed and data download constraints of the current mobile broadband networks. 27 June 2011 | ProcessWorld 2011 | 60 Storage Options Cookies Included in http request Unencrypted Limited to about 4kb of data 27 June 2011 | ProcessWorld 2011 | 61 Storage Options HTML5 Storage Stores named key/value pairs locally, within the client web browser Supported in IE8.0+, FIREFOX3.5+, SAFARI4.0+, CHROME4.0+, OPERA10.5+, IPHONE2.0+ ANDROID2.0+ Implemented natively within browser, so available even when thirdparty browser plugins are not Includes storage types: localStorage and sessionStorage Useful for storing small amounts of data, but less useful for storing large amounts of structured data Limited to 5 MB of data storage Stores data as strings Error message that will be thrown if exceeded: “QUOTA_EXCEEDED_ERR” Web developer cannot request more storage space, however, some browsers (like Opera) allow the user to control the data storage size 27 June 2011 | ProcessWorld 2011 | 62 Testing Options MobiOne Full development and testing suite 27 June 2011 | ProcessWorld 2011 | 63 Testing Options http://ipadpeek.com 27 June 2011 | ProcessWorld 2011 | 64 Appendix D Web Interfaces to the client 27 June 2011 | ProcessWorld 2011 | 65 What are we talking about? FTP HTTP SMTP Users Developers 27 June 2011 | ProcessWorld 2011 | 66 Client Application 27 June 2011 | ProcessWorld 2011 | 67 Client Application - Login 27 June 2011 | ProcessWorld 2011 | 68 <form method=post action=validate.jsp> Login <table> <tr> <td align=right>ID:</td> <td align=left><input type=text name=internetid tabindex=1 value=""></td> <td align=right> <select name="cmpy" size="1" id="cmpy" tabindex=4> <% String cmpy = request.getParameter("cmpy"); if ((cmpy == null) || (cmpy.equals("53"))) { JSP code, executes on server %> <option selected value="53">CEGT</option> <option value="60">MRT</option> <% } else { %> <option selected value="53">CEGT</option> <option value="60">MRT</option> <% } %> </select> </td> </tr> <tr> <td align=right>Password:</td> <td align=left><input type=password name=internetpw tabindex=2 value=""></td> <td align=right><input type=submit value="Login" tabindex=3></p></td> </tr> </table> </form> 27 June 2011 | ProcessWorld 2011 | 69 //reading in the serviceshost file for the connection Validate DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("http://localhost:8080/prototype/services.xml"); NodeList nl = doc.getElementsByTagName("serviceshost"); Reading an XML file via the web String serviceshost = nl.item(0).getFirstChild().getNodeValue(); boolean validUser = false; boolean validPW = false; boolean oktocont=true; CVALIDATResponse Cresponse = null; if (request.getParameter("internetid") == null) { oktocont=false; validUser=false; } Pick up the user id and password if (request.getParameter("internetpw") == null && (oktocont)) { oktocont=false; validPW=false; } 27 June 2011 | ProcessWorld 2011 | 70 Validate if (oktocont) { try { CVALIDATStub stub = new CVALIDATStub(serviceshost + "/CVALIDAT"); Set target host and service CVALIDATDocument.CVALIDAT CVALIDATrequest = CVALIDATDocument.CVALIDAT.Factory.newInstance(); CVALIDATrequest.setINTERNETID(request.getParameter("internetid").toUpperCase()); CVALIDATrequest.setINTERNETPW(request.getParameter("internetpw").toUpperCase()); CVALIDATDocument CVALIDATrequestDoc = CVALIDATDocument.Factory.newInstance(); CVALIDATrequestDoc.setCVALIDAT(CVALIDATrequest); CVALIDATResponseDocument CVALIDATresponseDoc = stub.cVALIDAT(CVALIDATrequestDoc); Cresponse = CVALIDATresponseDoc.getCVALIDATResponse(); Make the call to the web service session.setAttribute("cvalidat", Cresponse); if (request.getParameter("cmpy") == null) { session.setAttribute("cmpy",53); } else { session.setAttribute("cmpy",Integer.parseInt(request.getParameter("cmpy"))); } } 27 June 2011 | ProcessWorld 2011 | 71 Validate catch(Exception e) { if (request.getParameter("trace") != null) { e.printStackTrace(); } So, it went terribly wrong %> <img src=images/error.png alt="Error occured"><b>An occured, please accept out apologies.</b><% if (request.getParameter("debug") != null) { out.print("<pre>"); e.printStackTrace(new java.io.PrintWriter(out)); out.print("</pre>"); } } } if (Cresponse != null) { if (Cresponse.getRACFID() == "") { response.sendRedirect("login.jsp?loginmsg=User ID and/or Password not matched"); } else { response.sendRedirect("menu.jsp"); It worked, move on to ‘menu.jsp’ } } else { response.sendRedirect("login.jsp?loginmsg=The system is currently unavailable"); } %> 27 June 2011 | ProcessWorld 2011 | 72 Client Application 27 June 2011 | ProcessWorld 2011 | 73 Data Crowding 27 June 2011 | ProcessWorld 2011 | 74 Data Crowding 27 June 2011 | ProcessWorld 2011 | 75 Error Handling 27 June 2011 | ProcessWorld 2011 | 76 Error Handling 27 June 2011 | ProcessWorld 2011 | 77 Appendix E Creating the client side – WSDL2java 27 June 2011 | ProcessWorld 2011 | 78 The Flow FTP HTTP SMTP Users Developers 27 June 2011 | ProcessWorld 2011 | 79 Using JAVA? WSDL2Java, part of Axis2 implementation 27 June 2011 | ProcessWorld 2011 | 80 WSDL2Java: the stub 27 June 2011 | ProcessWorld 2011 | 81 Generating the stub 27 June 2011 | ProcessWorld 2011 | 82 Generated files 27 June 2011 | ProcessWorld 2011 | 83 Combine the generated code into a single jar file 27 June 2011 | ProcessWorld 2011 | 84 Place this in the path (lib?) of your client application 27 June 2011 | ProcessWorld 2011 | 85 More info: http://today.java.net/pub/a/2006/06/22/axis-2-generated-client-code.html 27 June 2011 | ProcessWorld 2011 | 86 Appendix F NaturalONE - maintaining Natural and Web Services 27 June 2011 | ProcessWorld 2011 | 87 The Flow FTP HTTP SMTP Users Developers 27 June 2011 | ProcessWorld 2011 | 88 What is NaturalONE? 27 June 2011 | ProcessWorld 2011 | 89 NaturalONE Single IDE with multiple perspectives 27 June 2011 | ProcessWorld 2011 | 90 27 June 2011 | ProcessWorld 2011 | 91 27 June 2011 | ProcessWorld 2011 | 92 27 June 2011 | ProcessWorld 2011 | 93 27 June 2011 | ProcessWorld 2011 | 94 27 June 2011 | ProcessWorld 2011 | 95 27 June 2011 | ProcessWorld 2011 | 96 27 June 2011 | ProcessWorld 2011 | 97 27 June 2011 | ProcessWorld 2011 | 98 27 June 2011 | ProcessWorld 2011 | 99 27 June 2011 | ProcessWorld 2011 | 100 27 June 2011 | ProcessWorld 2011 | 101 Appendix G Generating the IDL and publishing the Web Service 27 June 2011 | ProcessWorld 2011 | 102 Open the target Natural subprogram in the editor 27 June 2011 | ProcessWorld 2011 | 103 Right click on the subprogram in the project listing 27 June 2011 | ProcessWorld 2011 | 104 And select „Extract IDL“ 27 June 2011 | ProcessWorld 2011 | 105 The IDL will be presented in the editor window 27 June 2011 | ProcessWorld 2011 | 106 Right click on the IDL and choose properties to set the Broker ID, etc. 27 June 2011 | ProcessWorld 2011 | 107 Switch to the EntireX perspective 27 June 2011 | ProcessWorld 2011 | 108 Right click the IDL object and select Generate Web Service 27 June 2011 | ProcessWorld 2011 | 109 Select the object(s) to deploy 27 June 2011 | ProcessWorld 2011 | 110 Select your target WSStack implementation WSStack? EntireX WSStack, implementation of Axis2 used to publish web services. Easy to use, testing, etc. 27 June 2011 | ProcessWorld 2011 | 111 aar, wsdl, xmm? Axis Archive - contains these compressed/archive files (.aar) EntireX TSTLIB.xmm xml-init.xml META-INF MANIFEST.MF services.xml TSTLIB.wsdl 27 June 2011 | ProcessWorld 2011 | 112 File Structure; Tomcat directories 27 June 2011 | ProcessWorld 2011 | 113 How do you know if was deployed? - WSDL 27 June 2011 | ProcessWorld 2011 | 114 Once deployed, test your XML 27 June 2011 | ProcessWorld 2011 | 115 Testing the web service 27 June 2011 | ProcessWorld 2011 | 116 Create a sample XML/SOAP document 27 June 2011 | ProcessWorld 2011 | 117 Set the appropriate input values 27 June 2011 | ProcessWorld 2011 | 118 Set the appropriate input values 27 June 2011 | ProcessWorld 2011 | 119 View the resulting document 27 June 2011 | ProcessWorld 2011 | 120 Errors are also returned as a XML document 27 June 2011 | ProcessWorld 2011 | 121 End of Appendix Section