440 likes | 596 Views
Doug Fulmer WW Sales Exec, e-bus Infrastructure iSeries. 2337 Hazy Meadows Ln Flower Mound, TX 75028 Tel 972-724-0288 (Bus) Tel 972-724-1202 (Home) Tel 214-507-0859 (Cell) dfulmer@us.ibm.com. Enterprise Generation Language. Better User Interface. Better Tools. Better
E N D
Doug Fulmer WW Sales Exec, e-bus Infrastructure iSeries 2337 Hazy Meadows Ln Flower Mound, TX 75028 Tel 972-724-0288 (Bus) Tel 972-724-1202 (Home) Tel 214-507-0859 (Cell) dfulmer@us.ibm.com Enterprise Generation Language
Better User Interface Better Tools Better Architecture Better Portability Better Scalability Today 5250 5250 Web Web Services RPG/COBOL ILERPG/COBOL Java EJBs PDM WDS AE / RSE WDS / RSE iWA Web Tools WebFacing Java Tools HATS J2EE / EJBs Stored Proc / Triggers SQL DB2 / DDS WAS Express WAS Base WAS ND Portal Express Portal Express Plus WebSphere MQ WebSphere BI Developer’s Road Map Presentation Logic Tools Database WebSphere Customers and partners may enter the map at any stage and may choose to exit at any stage as well. RSE = Remote System Explorer
Development in the era of e-Business • Maintain and Extend existing core systems • Develop new strategic Internet based systems • Support the entire spectrum of e-Business solutions • Simple Web • Complex Transactional systems • Integrated Business Processes • Modernize and Integrate existing core systems
Application Development Challenges • Lack of a cohesive, systematic, comprehensive approach • Islands of AD tasks optimization • Fragmented, obsolete, poor or absent • Methodologies and Processes • Architectural and Implementation Best Practices • Tools • Complexity of new technologies • Skills mismatches • Slow skills ramp-up • Slow, error prone development • Legacy • Not integration-ready • Costly to maintain
Application Construction Challenges Enterprise Information Connection User Interface Control Logic Business Logic • HTML • JSP • WML • VML • JSF • Portlets • Servlets • Struts • JSF • JavaBeans • EJB • EGL • CICS • RPG • COBOL • JDBC • JCA • JMS • EGL WebServices • WSDL • SOAP • UDDI • XML BusinessProcess Integration • SOA • BP Choreography • Many parts • Many standards and APIs • Complex Architectural Structure • High Skills … Slow ramp-up • Many Tools, Methodologies, Processes • Slow, error prone development
WebSphere Studio Solution Enterprise Information Connection Control Logic Business Logic User Interface WebServices BusinessProcess Integration Test and Deployment Made Easy! Comprehensive, well integrated developer assistance tools • Increase productivity • Lower skills requirements
Why Enterprise Generation Language? • Pressure to move to Java/J2EE • Available developers skills are business oriented programming technologies • COBOL, PL/I, RPG, 4GL • Cost of re-training can be significant • Gartner study finds that cost can be over $20,000 per developer • Business pressure may not afford time to re-train • Results may be sub-optimal • Application architecture • Maintainability • Performance
EGL simplifies business logic and shields from complexities of data access (Databases, Files, Message Queues) and legacy integration • High level simple I/O verbs insulate from coding data access APIs • Procedural easy to learn language • Simple CALL interface to existing programs insulates from connectivity APIs Rapid Development with JSF and EGL Enterprise Information Connection User Interface Control Logic Business Logic WebServices BusinessProcess Integration JSF RAD tools virtually eliminates complex error prone manual coding • Point and click Web presentations • Control Logic and Navigation automation • Rich UI components • No-code input validation
EGL – What Is It? • EGL = Enterprise Generation Language • High level programming specifications • Hides complexities of implementation technology • For the non-Java programmer • For the non-CICS programmer • Special Parts + Scripting Language • Stored in files managed by workbench repositories • Interactive Development and Debugging • Environment independent language • Built-in debugger • Can be used for RAD development
EGL Approach: Making the complex simple • Simplify specification and construction • High-level language specifications • Shields from systems complexities • Easy and quick to learn • Similar to traditional, procedural languages • Facilitate verification • Test/debug at logical level • No deployment required, iterative prototype-to-production • Automate generation for • Java or COBOL (WDSc AE) for iSeries
EGL – What Is It? • Rapid development using a platform-neutral high level 4GL specification language • Abstractions, wizards, and tooling for lower skill requirements to take advantage of new technologies (e.g. EJBs, Java, web services, Struts, MQSeries) Migration path from VisualAge Generator's 4GL • Bringing forward and enhancing the core technologies created over the last 20+ years in VisualAge Generator and CSP • With significant additions and enhancements necessary for robust e-business Web Application development
EGL – Conceptual Summary SQL, WAS, CICS DB2 Bind EGL variables to page via Page Data view MQ, Call, Web Services, … Server scripting in EGL The Outside World EGL Code Websphere Studio-based 4GL (comfortable for 4GL, COBOL, RPG developers) …builds on top of Websphere Studio Tools, like Page Designer. iSeries Simplify complex runtimes Latest Web capabilities plus “heritage” support pSeries zSeries xSeries Deploy optimally to diverse platforms EGL …supports Text-based UI’s for migration of existing apps For developers who need to solve Business Problems, not Technology Problems
EGL Development Process Overview Model • Use Rational Rose/XDE • Export data model from DB Schema or UML model to EGL & DDL • Optional, but useful Develop • Specify business logic using high level abstractions • Build web pages or text screens • Target platform neutral - Shield complexity of target system • Interactive test of application logic • Strong Team support Iterative Generate • Transform EGL logical specification into Java or COBOL • Create build script for server artifacts • Create class files ready to export to JAR for deployment Deploy and Run • iSeries • Windows • zOS: CICS or Batch (IMS in follow on release) • Linux, AIX (Solaris and HP in follow on release)
WebSphere Development Studio RPG COBOL Current 5722-WDS customers with software subscription for V5R3 and V5R2, to upgrade use feature #: 2656 Available after GA C/C++ PDM SEU SDA, RLU Unlimited Licenses Web Facing iSeries Projects iSeries iSeries iSeries iSeries JavaTM Debug Struts Web Service +CODE +VisualAge RPG RSE Web JSF EGL Java generation Trace Profiling DB XML App Server HATS Studio WebSphere Development Studio Client V5.1.2 www.ibm.com/software/awdtools/iseries
WDSc Advanced Edition V5.1.2 Workstation License order through Passport Advantage http://www.lotus.com/services/passport.nsf/WebDocs/Passport_Advantage_Home Web Facing * iSeries Projects iSeries iSeries iSeries * iSeries +CODE +VisualAge RPG Java Debug Struts Web Service RSE Web JSF EGL Java generation Trace Profiling DB XML App Server HATS Studio EGL * COBOL generation EJB * Test * Cases Portal * Toolkit J2EE * www.ibm.com/software/awdtools/iseries
Page Builder Tools enhancements Palette: Contains rich JSF controls. It can be customized with additional controls and groups. Navigator: Simplified project navigator hides complexity of J2EE artifacts. Page Templates: Separate out common page elements in a single template file Page Data View: Reflects data available for use by the page. Allows easy binding of data to UI tags/controls Quick Edit View: Allows scripting of client or server side events in Java or EGL. Attributes View: Customize the key properties of the selected component Results: • Rapid UI Creation • Simple binding of UI to Data • Quick Server-side event scripting using Java or EGL
Coexistence with “Heritage Apps” • Native calls to COBOL, RPG, C, or Java from generated EGL applications via “Call” keyword • Text-based UI support needed for: • VisualAge Generator • Informix • Other 4GL’s • WYSIWYG TUI builder planned • <2004/2005> Project Explorer Visual editor Attributes
What Applications can be developed in EGL? • Internet applications • Callable Web Services • Database applications • Callable programs from traditional Java rich GUI clients • Standalone batch applications • Standalone TUI applications • For iSeries, CICS (zOS), Linux, AIX, Windows J2EE Transactions Servers Web Servers Other Transactions Servers egl egl WebServices egl
Accelerate Application Delivery with ARADInternal productivity benchmark for Sun PetStore reference application WebSphere Studio and EGL Hand-Coded in Java IDE 60 Hours 507.5 Hours • WebSphere Studio JSF/EGL isdramatically fasterthan traditional development
EGL inter-operability = flexibility • Powerful integration of EGL, RPG/CL, COBOL and Java for no-compromise solutions • Maximum productivity, maximum flexibility • Two-way interoperability • Tools integration (Seamless workbench, Editors, Debuggers) Productivity Existing Application Frameworks Business Logic and Components EGL RPG – CL – COBOL Java/C/C++ Flexibility
Other Alternatives • Lansa • www.LANSA.com • mrc • www.mrc-productivity.com • Business Computer Design • ww.bcdsoftware.com • Magic Software • www.magicsoftware.com • GeneXus • www.genexus.com • Computer Associates • www.ca.com • ASNA • www.asna.com
Team development Business logic Procedural legacy language(s) replaced by EGL SQL SQL (and RDBMS RDBMS) If developers have used DB2 However, if using local DB2 system, dissimilar tools and IDE Transactions All principles of online systems design apply Most differences are vocabulary-based Code Construction If developers have used products such as CSP, IEF, IEW, TELON, APS, etc. What is the same for RPG/COBOL Developers?
WDSc TSO/ISPF EGL Library file Set of related copybooks (database schema) Pages Screens – and many similar U.I. Concepts with… CICS/BMS maps … HTML forms EGL Program RPG/CL/COBOL program source file EGL executable Program executable JCL CL Pgm Managing state – especially if developers are experienced in "conversational" C.I.C.S. programming Almost all EGL language constructs similar … and familiar What's different but similar for RPG/COBOL Developers?
EGL Program Legacy Source file definition Datatypes and variables similar – Slightly different syntax (actually pretty close for an iSeries programmer) Assignment/Move MoveL/MOVE/COMPUTE statement EGL Function RPG Procedure, COBOL paragraph EGL call RPG/COBOL CALL – to RPG Procedure or COBOL sub-program, passing parameters, etc. Conditional expressions – similar. Use of || && in place of OR/AND Conditional expressions EGL while PERFORM UNTIL… EGL for PERFORM UNTIL…VARYING EGL Redefines/Function REDEFINES clause Comments Comments – Slightly different rules Type definitions are similar extensions to Field Reference File COBOL EGL … Programming Similarities
Rich, window'd IDE (WDSc) Not if experienced using WDSc RSE If totally "green-screen" get them to read a Redbook on WDSc before they start with EGL EGL Artifacts - High level of abstraction in development Other EGL and WSED aspects Projects and administrative artifacts (Workspace, etc.) Libraries Debugging Web Services and XML What's new for RPG/COBOL Developers?
Field Reference File (RPG/DDS) Data Items (EGL) Similar aspects of EGL and RPG package data; // A dataItem Apartment char(10) {displayName="Apartment"} end // C dataItem City char(30) {displayName="City"} end dataItem CustomerId int {displayName="Customer#“ range = (1, 1000)} end … // P dataItem Password char(8) {displayName="Password", displayUse=secret} end dataItem Phone char(10) {displayName="Phone"} end dataItem PostalCode char(10) {displayName="Zip Code"} end // S dataItem State char(2) {displayName="State", selectFromList = StateTable.stateAbbreviation, selectType = value} End *************** Beginning of data ************************** R FLDREF A** A A APARTMENT 10A A** C A CITY 30A A CUSTOMERID 9P 0 RANGE(1 1000) A** D A DIRECTIONS 255A A** E A EMAILADDR 50A A** F A FIRSTNAME 30A A** L A LASTNAME 30A A** P A PASSWORD 8A A PHONE 10A A POSTALCODE 10A A** S A STATE 2A A STREET 30A ****************** End of data ******************************
RPG is… Field Reference File Records Programs Subroutines Text UI Reports SQL or Indexed database access … EGL is… Data Items Records Programs Functions Text UI Reports SQL or Indexed database access Libraries/Services Integrated Websphere Studio debugger - breakpoints/watchpoints JSF-based web apps w/”Page Handlers” Portlet support Deploy to Linux and other platforms UML import Web services support … Similar aspects of EGL and RPG
Compiling an RPG IV program compile bind ReUsable! CRTRPGMOD CRTSRVPGM RPGIV Source Members (RPGLE) ILE Modules (*MODULE) ILE Service Program (*SRVPGM) RPG IV link CRTBNDRPG CRTRPGMOD CRTPGM RPGIV Source Members (RPGLE) ILE Program (*PGM) ILE Modules (*MODULE) bind compile
EGL Compiling an EGL program compile bind EGL Script Intermediate Final ReUsable! EGL
Welcome.egl Welcome.jsp EGL Application Artifacts • Page Handler • Contain functions and data related to a .jsp • “On Page Load” function • Declare data structures that are available to “Seoul” • Functions bound to command buttons • Should be mostly “Controller Logic” • Library • Multiple entry points • Put “Business Logic” here for web apps • Contain functions and data declarations • generally related in some way • Example: “Data Access Library” for Customer Table • SQL Record definition • All basic CRUD functions • Generated by Data Access Library Wizard from existing Schemas • Program • Used for single point of entry situations • TUI program, Batch program, GUI program, … Call “getCustomer” function CustomerLib.egl Calcs.egl Called pgm Payroll.egl PrintChecks.egl Called pgm Main pgm
// Customer SQL Record Record Customer SQLRecord { tableNames=("PIZZABYIBM.CUSTOMER"), keyItems=("customerId“) } customerId CustomerId; firstName FirstName; lastName LastName; … state State; end Rich Data • Data Dictionary, iSeries Field Reference file, … • Define Validations, Formatting, Display information, etc… once for Data Items • These rules apply wherever the data item surfaces (Web Page, TUI, business logic, …) • Validations are automatically run by EGL runtime and appropriate messages are displayed • Use Data Items to create Record definitions or other data structures to leverage Rich Data DataItem CustomerId int { column=CUSTOMER_ID, range=(1, 1000), displayName="Customer Number", format= “######” } end DataItem State char(2) {displayName=“State Abbr.", format= “AA”, validatorTable=StateTable } end // StoreLocation SQL Record Record Store SQLRecord … state State; end DataTable StateTable type matchValidTable StateAbbreviation char(3); {contents = [["NC"], ["MN"], ["TX"], ["VA "] ...]} end
Data Access Add Get • “Record” abstracts access to: • Relational data • MQ messages • Indexed, Relative, Serial data • DL/I (v6.0) • Common verbs for data access/unit of work management • Add, Get, Replace, Delete, Commit • I/O errors handled in a common fashion across disparate data types • Data format conversions handled automatically Replace Delete Commit EGL Record Relative MQ DL/I XML Serial SQL Indexed * - future
EGL – Comments // rest of line is comment /* comment delimiters - single/multiple lines - cannot be nested */ -- SQL statement comment
EGL Structure Example One dimensional array of 20 elements Two dimensional array of 20 by 15 elements
Logic Statements – If-Else • Selectively runs a block of code • based on result of logical expression • runs block when true • runs alternative block when false • Syntax: if (logicalExpression) EGL statements when true else EGL statements when false end • else clause is optional
Selectively loops through a block of code based on result of logical expression while block runs when evaluated true expression evaluated when while construct first entered after each execution of the while block execution repeats until evaluated false Syntax: while (logicalExpression) EGL statements when true end Can use to simulate For loop Logic Statements – While
Logic Statements – Case – Examples Case using Matching Criteria Case using Logical Evaluation
EGL source level debugger Breakpoints, watch variables, change values, … Extends base Eclipse debugger Debug entire application seamlessly regardless of ultimate deployment targets Transition from debugging JSP’s to EGL code to Java to … and back Validate system correctness prior to deployment Java Classes, Configuration Files, … EGL Model EGL - Debugging EGL Generator EGL Code // Event handler: Delivery Address button clicked Function forwardToDeliveryAddress() customer.emailAddr = emailEntered ; get customer; setSessionAttr(PizzaConst.custrKey, customer); forwardto DeliveryInfo ; End … Generation Process - Runtime: EGL Java Runtime (.jar containing common routines) Interpretive Debug Process - Development: EGL Interpreter Makes calls to EGL runtime from Debugger Websphere Studio Debugger
EGL Product Deliveries EGL 5.1.2 • Websphere Studio Site Developer/Application Developer (available May 21st) • Web Applications (based on Java Server Faces) • Text UI applications for distributed platforms • iSeries/Java support (WDSC for iSeries) • VG migration tooling • Many misc enhancements • Creation of EGL-based Web Services • WDSC Advanced Edition for iSeries (available July 21st) • i-series/COBOL support • 5250 TUI applications • Websphere Studio Enterprise Developer (available 3Q) • COBOL deployment to CICS and Batch • Utilities developed in collaboration with BP’s • UML to EGL import tool • <other tools> to EGL migration tool
Recap - EGL Benefits • Easy to learn, lowers skills barrier to e-business • Maximize existing “Business Oriented” developers • Higher productivity to deliver systems faster • Maximum flexibility • Multiple platforms and topologies • Step to Java if required • Bring legacy to e-business • Easily connect to existing resources • Quickly develop new functions on traditional platforms
Recap - EGL Benefits • Expand e-business developers team with traditionally skilled programmers • Tap into new valuable resources with strong business domain knowledge • Lower risk and increase project success rate • Lower costs of training • Lower Cost of development and • Deliver Projects faster and lower development costs