"How to Extend RDi"
If you wish to extend RDi yourself you can find some useful links below.
Tutorials
APIs
For Rational Developer for i API information, visit:
http://public.dhe.ibm.com/software/awdtools/rdpower/v80/80/documents/api/
For Eclipse RSE information (which Rational Developer for i itself extends), visit the RSE Developer Guide at:
http://help.eclipse.org/kepler/index.jsp?topic=/org.eclipse.rse.doc.isv/guide/
For accessing EVENTF information in order to integrate custom build tooling.
To extend LPEX, (In Lpex, hit Esc to get to the command line and then type in ? and hit Enter)
To access Code Coverage data see:
Install Complementary Products from IBM
If you are developer for another platform such as Z or AIX or Linux, there are complementary products that will integrate with RDi. A complete list can be found here after click on the link under Shell Sharing.
One free offering from IBM that well benefit any SQL developers is the IBM Data Studio.
Click here for more info on how to install and use this.
Use someone else's extensions
Below is a table where any product or plugin that extends RDi can make themselves known.
Jon Paris has written an article on this subject.
Name |
Link |
Description |
Creator |
Free/For Sale |
iSphere |
Spooled File Subsystem, Message File Editor, Binding Directory Editor, LPEX Task Tags, ... |
Task Force IT-Consulting GmbH, Thomas Raddatz and others |
Open Source | |
TN5250J | http://www.taskforce-it.de | IDE embedded 5250 Emulator |
Task Force IT-Consulting GmbH, Kenneth J. Pouncey and others |
Open Source |
iSVN | http://www.taskforce-it.de | IBM i Version Control with Subversion | Task Force IT-Consulting GmbH | Open Source |
CMOne | http://www.taskforce-it.de | Change Management System for IBM i, Windows, Unix and Linux | Task Force IT-Consulting GmbH | Commercial |
PTC Implementer | http://www.ptc.com/products/integrity/implementer | Application Lifecycle Management system for IBM i | PTC | Commercial |
PAAS |
http://pks.de/en/solutions_2/optimizing-application-development_33/solutions.php |
Application understanding,documentation and Analysis Suite | PKS Software GmbH | Commercial |
RSE Extensions | http://www.softlanding.com/products/rse-extensions/ | Spooled file output; view and respond to IBM i messages; graphical source compare and merge editors for IBM i code; edit data areas; display data queues | SoftLanding Systems - a Division of UNICOM Global | Open Source |
TURNOVER | http://www.softlanding.com/products/turnover/turnover-iseries-v100/ | Change Management, Project Management, Issue Tracking | SoftLanding Systems - a Division of UNICOM Global | Commercial |
RPGUnit |
RPGUnit tests from within RDi. This plug-in uses a fork of the RPGUnit framework from http://rpgunit.org/, because the original RPGUnit project seems to be dead. |
Thomas Raddatz | Open Source | |
Surveyor/400 |
https://www.helpsystems.com/products/ibmi-graphical-productivity |
Surveyor/400 has a plugin for IBM RDi that allows you to quickly query and edit database files, download and upload data, run SQL, convert DDS to DDL and many more database tools. | HelpSystems | Commercial |
RPG Toolbox |
https://www.helpsystems.com/products/rpgtoolbox-ibmi/features |
Need to convert legacy RPG to free form? The RPG Toolbox from Linoma Software has a plugin for RDi that allows converting RPG fixed-form to the latest totally free form syntax. It also allows indenting nested logic in free form RPG. The RPG Toolbox can additionally clean out unused code in your RPG source including unused work fields, unused subroutines, KLISTS, etc. to make your source easier to maintain and quicker to compile and execute. | HelpSystems | Commerical |
SmartPad4i for RDi |
Use RPG or COBOL to Develop Web & Mobile Applications Directly Within the Rational Developer for i (RDi) Environment |
SystemObjects |
Commercial |
|
Pathfinder / Hawkeye | http://hawkinfo.com/PathfinderPlugin/update2.0.0 | Plugin for the Hawkeye Cross Reference tool for IBM i | Pathfinder / Hawkeye | Commercial |
ABSTRACT | https://www.helpsystems.com/products/developer-productivity-tool-ibm-i | Developer Productivity tool for the IBM i. Simplify IBM i application development with powerful cross-referencing tools. Abstract works with the IBM (RDi) to build a where-used cross reference of system objects and procedures that allows you to track object and field usage, as well as perform file analysis and other reference tasks. | HelpSystems | Commercial |
How to write a basic plugin that creates a menu action
RDi is written on top of Eclipse which is designed from the bottom up to be extensible.
To extend RDi, you write a plugin that contributes your piece of functionality of top of RDi. These plugins are typically written in Java in RDi itself.
Basic Eclipse Plugin Development
One of the most recent books that uses the latest Eclipse 4.x mechanisms is Eclipse 4 Plug-in Development by Example Alex.Blewitt 2013.
If you are unfamiliar with Java, this will assume some rudimentary understanding, but it is fairly gentle.
Basically there is one method that puts up a message that looks like
public Object execute(ExecutionEvent event) throws ExecutionException {IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);MessageDialog.openInformation(window.getShell(),"MyAction","RDi is the greatest!");return null;}
Basically this is equivalent to an RPG procedure definition called execute. This procedure (called method in Java), takes in an event and returns an Object. In this particular case we ignore both the parameter and the return value. The only thing of interest is that this method is called when the button and menu item you create are selected. What it does is pop up a message dialog with the given string.
Please read the first chapter now. You don't have to finish all of the debugging exercises (but a lot of them would help you even with ILE RPG debugging as well).
How to write a plugin that add an Action to the Remote Systems Explorer
This tutorial is intended to provide a simple step by step guide to create a plugin the adds a menu item.
This tutorial was written with Rational Developer for i 9.6 which is based on Eclipse 4.6 and uses the Java 8 JDK that is shipped with RDi.
Let's start by creating a simply plugin that contributes a menu item that brings up a dialog.
Let create Java Plugin project that will contribute this menu item.
You will notice that a lot of dot-delimited names. The convention in Java and Eclipse is to use Reverse Domain Name Notation. So in this example I am assuming you company name is "MyCompany". Feel free to substitute in your own company name.
1. Create a new Plug-in Project
From the File menu select New->Other...->Plug-in Project
(or you could just hit Ctrl + N)
2. Fill in base Java project properties on the first page of the wizard
The name of the project will end up being the name of the plugin you are creating. It is by convention in Reverse Domain Name Notation.
Press Next to go the next page
3. Fill in plug-in project properties on the second page of the wizard
The Version will only become necessary if down the road, someone wants to explicitly depend of a specific version or version range of your plugin. The Name and Vendor will appear when listing the plugins in Eclipse. The Activator is use when instantiating the plugin and to access some of the associated resources. It is not important in this example.
Press Next to go to the template page
4. Fill in the Template page of the wizard
Select Hello World, Command to get the ability to create menu and toolbar actions.
Simply press the Finish button now.
5. Launch a Runtime copy of Eclipse that has your Plug-in loaded
Select Run>Run Configurations ...
The defaults are acceptable, but you specify a name that is meaningful to you.
Now you should see the new menu item and toolbar item and Ctrl-6 action key
6. Understand what you have generated
plugin.xml
command - with id
command handler associates id with Java class
menu associates with command id
toolbar item associates with command id
Java method invoked to handle command
IBM Code Coverage
Interpreting Code Coverage Results
The API to read code coverage information that is generated either through RDi or through the new CODECOV command.
Go into your RDi installation directory, you will find the com.ibm.debug.pdt.codecoverage.core.result_
IBM Data Studio shell sharing with RDi
Overview
The IBM Data Studio client is a no-charge offering that provides an integrated development environment for instance and database administration, routine and SQL application development, and query tuning that can be installed with other IBM software products so that they can share a common environment. IBM Data Studio is based on Eclipse and uses and can share the same IBM package group as Rational Developer for i.
Installation
Regarding IBM Data Studio, it is a separate product from RDi but it is free. You can download it from http://www-01.ibm.com/support/docview.wss?uid=swg24037681#dsfc_tab. Select the 'Full Data Studio product images ' link. After logging in with your IBM id, you will be able to download IBM Data Studio client Install for Windows ibm_ds4130_win.zip (1.9GB). Once downloaded, unzip it and then run the install. During the install, one of the panels lets you to select either a new package group or to use an existing package group. If you select to use an existing package group, you will be able to select the one that has RDi in it. This is what you want to do. Once installed in the same package group, when you start the product you will have the IBM i and the Data tooling together.
Tutorials
This tutorial shows you how to connect to DB2 for i and also shows how to create a stored procedure on IBM i. Note that in Data Studio - IBM i Libraries are called Schemas.
https://www.youtube.com/watch?v=2njJhyuJ0G4&t=55s
This tuturial assumes a LUW database but illustrates writing and running SQL scripts:
https://www.youtube.com/watch?v=kdrTP48VHBM
https://www.youtube.com/watch?v=2njJhyuJ0G4
API - How to access search results from an EVENTF
Inputs:
/*** Retrieve events file.*/private void parse(IQSYSMember member,IProgressMonitor monitor,IBMiConnection connection) throws Exception{try{QSYSEditableRemoteSourceFileMember editableMember = new QSYSEditableRemoteSourceFileMember(member);editableMember.download(monitor, true);IFile file = editableMember.getLocalResource();// ignore the events file, because we never will edit it.QSYSTempFileListener.getListener().addIgnoreFile(file); //SE24082if (parser == null){parser = new SearchFilterEventsFileParser(file,resultSet,mixedConnection);parser.setISeriesConnection(connection);}else{if (mixedConnection){parser.setEvfFile(file);parser.setSearchResultSet(resultSet);parser.setISeriesConnection(connection);}}parser.parse();}catch (Exception e){// your error handling
throw e;}}
API - How to Access errors from an EVENTF
If you want to populate the error list UI you want to use:
/com.ibm.etools.iseries.rse.ui/src/com/ibm/etools/iseries/rse/util/evfparser/EventsFileParser.java
This class parses the event file from the local IFile and then loads the ErrorList and creates the IMarkers for each error.
If you want to iterate over the errors yourself without any UI then use:
/com.ibm.etools.iseries.toolbox/iseriesut/com/ibm/etools/iseries/util/evfparser/EventsFileParserCore.java
The parser method takes a sequential file reader and calls
com.ibm.etools.iseries.util.evfparser.IMarkerCreator.createMarker(QSYSEventsFileErrorInformationRecord, String, String)
public abstract void createMarker(
QSYSEventsFileErrorInformationRecord record, String fileLocation,
String isReadOnly) throws Exception;
for each error (or search result found)
Using this, you can implement IMarkerCreator and build your own UI.
To get the ISequentialFileReader
if (!_useDefaultEncoding)
reader = new LineNumberReader(new InputStreamReader(new FileInputStream(newFile.getLocation().makeAbsolute().toOSString()), "UTF8"));
else
reader = new LineNumberReader(new InputStreamReader(new FileInputStream(newFile.getLocation().makeAbsolute().toOSString())));
ISequentialFileReader sequentialReader = new SequentialLineReader(reader);
Enjoy!