Comments (14)
  • Add a Comment
  • Edit
  • More Actions v
  • Quarantine this Entry

1 ChrisLaffra commented Permalink

Hi Dan,<div>&nbsp;</div> Thanks for uploading this cool video!<div>&nbsp;</div> I like the preview tab at <a class="jive-link-external" href="http://www.youtube.com/watch?v=lA25DoElnSc#t=5m52s">5:52</a> where you say you don't even have to deploy anything to design, code, debug, and test both the client and the service code.<div>&nbsp;</div> The debugger is also cool at <a class="jive-link-external" href="http://www.youtube.com/watch?v=lA25DoElnSc#t=6m30s">6:30</a>, where you set a breakpoint in both the service and the client, and step through both the execution of the service (compiled to Java) and the client (which is compiled to JavaScript and runs in the browser).

2 dan_darnell commented Permalink

Hi Chris. Thanks for the feedback. I figured the lack of a deployment step would resonate with anyone who is used to developing with JSF or other technologies wherein every test/debug cycle involves a tedious and time-consuming deployment step. Also, the service self-discovery capability of EGL CE should excite people who are used to complex and error-prone service configuration and handling.<div>&nbsp;</div> I recommend Will's video ("Hello World with EGL Community Edition") for anyone just getting started with EGL CE: <a class="jive-link-external" href="http://www.youtube.com/user/EGLCE">http://www.youtube.com/user/EGLCE</a><div>&nbsp;</div> Not that you asked but I thought folks might be interested to know that I run EGL CE on my Mac in a Windows XP session under Sun VirtualBox. In Snow Leopard, the most recent Mac OS release, a screen recording capability was added to QuickTime. This, coupled with iMovie (also a part of the Mac OS) gave me all the tools I needed to make the video at no extra cost.

3 dan_darnell commented Permalink

For those who have asked for the build-descriptor that I used, here are the important parts:

 
First, in the Java section of the build descriptor, add this:
 
linkage="externalPrograms"
 
Then, right before the </EGL> end tag, add this:
 
<LinkageOptions name="externalPrograms">
<callLink >
<remoteCall pgmName="MYRPGPGM" library="*LIBL" location="my_i_server" luwControl="SERVER" conversionTable="CSOE037" remoteBind="GENERATION" remoteComType="JAVA400" remotePgmType="STATELESS"/>
</callLink>
</LinkageOptions>
 
To call more than one RPG program, simply add more <remoteCall> entries, one for each RPG program you intend to call.
 
Also, it seems that depending upon the JRE you are using you might get an error when you go to invoke an RPG program. You would see something like this:
 
EGL0010E An external dependency is missing. The following exception occurred. Exception: java.lang.NoClassDefFoundError: javax/servlet/http/HttpSession
EGL0002I The error occurred in CallRPGService processing the callRPGProgram function.
 
To resolve this, do the following...
 
From the EGL Community Edition menu bar:
 
Window->Preferences
 
Then,
 
EGL->Debug
 
To the "Class Path Order" add the following external JAR:
 
C:\eclipse\plugins\org.eclipse.tomcat_4.1.230.v20070531\servlet.jar
 
(Change "C:\eclipse" to the drive and directory where you installed EGL CE.)
 
There shouldn't be deployment considerations since your Tomcat server will have a servlet implementation.

4 markevans commented Permalink

Dan...great info. <div>&nbsp;</div> One extension to what you stated. <div>&nbsp;</div> You can use wild cards in the pgmName field (the "*" (asterisk)). Therefore if all programs you want to call start with the same naming convention you can specify just one entry. <div>&nbsp;</div> For example... something like pgmName="MYRPG*" and any program called that starts with MYRPG will use that particular calllink entry.<div>&nbsp;</div> If you know ALL programs that are targets of a "CALL statement" are RPG, then you can just say pgmNAME="*". <div>&nbsp;</div> Finally, the generator searches from the top of the linkage entries for a matching calllink entry. So, you can go from specific names to more general names if you want to "override the general case" for a particular program.

5 dan_darnell commented Permalink

That's awesome information, Mark. I didn't know that you could use a wild card!<div>&nbsp;</div> --Dan

6 markevans commented Permalink

Good... Try it out..I know the linkage table always worked that way in the past...no reason to believe it should not now.

7 aaronbartell commented Permalink

That was a solid presentation Dan. Couple comments:<div>&nbsp;</div> 1) When you develop an "EGL Service", how is that invoked from the EGL UI layer? Is it XML web services or does it recognize that both layers are EGL based and use a more streamlined communication method?<div>&nbsp;</div> 2) Being it seems you have done your fair share of EGL development, and have possibly reached a point of maintaining an EGL vs. building new; what are the steps for deploying a screen and service code change within an application? Do you re-deploy the entire application?<div>&nbsp;</div> 3) Does EGL have capabilities to do step-through-debugging on the server? The reason I ask is sometimes you just can't duplicate an issue on the client. I am wondering if there is an equivalent STRSRVJOB type deal in EGL.<div>&nbsp;</div> I must say that EGL seems to have a very clean syntax. I am glad to see IBM has created a <b>free</b> community edition. The final step to make EGL a viable language, in my book, is to make the EGL language/syntax open spec with a standards group (i.e. similar to JSF).

8 ChrisLaffra commented Permalink

Hi Al (albartell),<div>&nbsp;</div> For point 2, you could consider using one single handler that contains all screens and that is deployed as a whole. If you want to manage components more standalone, you could take a look at the blog entry I wrote on the topic: <a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/egl-ce/2009/09/24/developing-a-portal-using-egl-rich-ui-bending-the-laws-of-physics">http://www-949.ibm.com/software/rational/cafe/blogs/egl-ce/2009/09/24/developing-a-portal-using-egl-rich-ui-bending-the-laws-of-physics</a>.

9 dan_darnell commented Permalink

Hi Aaron. Great to see you here!<div>&nbsp;</div> I'll see if I can answer your questions...<div>&nbsp;</div> #1: Let me refer you to some other blog entries. If these don't answer your question completely let me know and we'll chat. <div>&nbsp;</div> This one from Chris Laffra (IBM genius behind Rich UI) explains the proxy layer:<br /> <a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/egl-rich-web/2009/09/10/web-security-and-why-egl-rich-ui-needs-an-ajax-proxy">http://www-949.ibm.com/software/rational/cafe/blogs/egl-rich-web/2009/09/10/web-security-and-why-egl-rich-ui-needs-an-ajax-proxy</a><div>&nbsp;</div> These entries from Joe Pluta talk about using RPG on the server side with EGL Rich UI on the client side:<br /> <a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/egl-i/2009/09/09/see-what-i-can-do-v2r1-update">http://www-949.ibm.com/software/rational/cafe/blogs/egl-i/2009/09/09/see-what-i-can-do-v2r1-update</a><div>&nbsp;</div> <a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/egl-i/2009/09/13/see-what-i-can-do-v2r1-complete">http://www-949.ibm.com/software/rational/cafe/blogs/egl-i/2009/09/13/see-what-i-can-do-v2r1-complete</a><div>&nbsp;</div> Although it is easiest to use EGL on the server side I've used PHP there too (with a Rich UI client) <br /> and this entry from Chris Laffra talks about how to do that (including great detail about security concerns):<br /> <a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/egl-ce/2009/09/26/how-to-properly-waste-your-time-using-egl">http://www-949.ibm.com/software/rational/cafe/blogs/egl-ce/2009/09/26/how-to-properly-waste-your-time-using-egl</a><div>&nbsp;</div> #2: Deployment has changed (for the better) in EGL CE (vs. RBD) but right now all of my clients are still using RBD for production application development. So my experience with developing and deploying business applications is still mainly RBD experience (although I am coming up to speed on the EGL CE changes). Anyway, at least with RBD, we employ separate client and server/service projects such that we can make UI changes and deploy them independent of service changes and vice versa. This way we don't always have to deploy everything (client and server) if only one side has changed. From my experience with EGL CE so far the major difference is that I am able to develop both client and server as one workspace project but still deploy client and server independently if desired. Also, there is much greater flexibility in EGL CE for fine-tuning UI deployment.<div>&nbsp;</div> (On a side note, we always use Subversion on IBM i as a team code repository for EGL projects.)<div>&nbsp;</div> #3: Not sure. Perhaps one of the IBM'ers can answer this one definitively. In RBD I've debugged EGL client and server code deployed to test server instances in the IDE (Tomcat and WebSphere). In EGL CE, so far, I've only had occasion to debug the way I showed in the video -- with the built-in, no-deployment-required server support.<div>&nbsp;</div> Hope this helps.<div>&nbsp;</div> --Dan

10 dan_darnell commented Permalink

Hey Mark. Tried it. Worked great. Thanks for that tip!<div>&nbsp;</div> --Dan