Difference between revisions of "Information Systems:Notes on development using Iptor Integrator"
m |
m (Tweak third-party library section) |
||
| Line 16: | Line 16: | ||
Personally, I find the IDE unusable for developing programs beyond the complexity of a simple sript. Therefore, I use the IDE to learn Integrator-specific capabilities by testing them out using the visual editor and then studying the generated java source. Then I code in IntelliJ IDEA. Actually, the real value in Integrator from a development aspect comes from the Integrator libraries e.g. net.ibs.*, not their crappy IDE -[[User:Norwinu|norwizzle]] ([[User talk:Norwinu|talk]]). However, these are not documented (because you're supposed to use their IDE), so their functionality has to be studied by inference. -[[User:Norwinu|norwizzle]] ([[User talk:Norwinu|talk]]) |
Personally, I find the IDE unusable for developing programs beyond the complexity of a simple sript. Therefore, I use the IDE to learn Integrator-specific capabilities by testing them out using the visual editor and then studying the generated java source. Then I code in IntelliJ IDEA. Actually, the real value in Integrator from a development aspect comes from the Integrator libraries e.g. net.ibs.*, not their crappy IDE -[[User:Norwinu|norwizzle]] ([[User talk:Norwinu|talk]]). However, these are not documented (because you're supposed to use their IDE), so their functionality has to be studied by inference. -[[User:Norwinu|norwizzle]] ([[User talk:Norwinu|talk]]) |
||
| − | ===Indispensable libraries=== |
+ | ===Indispensable third-party libraries=== |
| + | Of course, one of the great advantages of using a modern programming language like Java is the availability of libraries so that you don't have to reinvent the wheel when programming more common tasks (or even less common for that matter). For example, libraries exist that make parsing XML, CSV and Excel files easier (not just easier, but ''possible'', really). For reference purposes, in case one is interested to know which library was chosen (as sometimes many alternatives exist), here are the significant ones in use: |
||
| − | This section lists some important libraries that greatly enhance development, or make it possible altogether. |
||
* [[Information Systems: IBM Toolbox for Java|IBM Toolbox for Java]] - Programming in Java for IBM i would be useless without this quintessential package. |
* [[Information Systems: IBM Toolbox for Java|IBM Toolbox for Java]] - Programming in Java for IBM i would be useless without this quintessential package. |
||
* Apache Commons - another immensely useful library. Actually, Commons is an umbrella for a collection of many libraries. The one that have been used significantly thus far are: |
* Apache Commons - another immensely useful library. Actually, Commons is an umbrella for a collection of many libraries. The one that have been used significantly thus far are: |
||
:* Apache POI - For reading/writing to Microsoft document formats. The XSSF is particularly useful for dealing with XLSX files e.g. the Health Canada MAR report uses this to output and stylize the report. |
:* Apache POI - For reading/writing to Microsoft document formats. The XSSF is particularly useful for dealing with XLSX files e.g. the Health Canada MAR report uses this to output and stylize the report. |
||
| − | :* Apache Commons Net - FTPClient class used for |
+ | :* Apache Commons Net - FTPClient class used for FTP connections |
:* Apache Commons CSV - Useful for reading/writing CSV files. |
:* Apache Commons CSV - Useful for reading/writing CSV files. |
||
| − | * JCraft - For sFTP communication |
+ | * JCraft - For sFTP communication, as Apache Commons Net above is limited to FTP. |
* univocity - CSV parser/writer. The CSVWriter class has features that are not found in Apache Commons CSVPrinter. |
* univocity - CSV parser/writer. The CSVWriter class has features that are not found in Apache Commons CSVPrinter. |
||
* MariaDB JDBC driver - to read/write to the database. |
* MariaDB JDBC driver - to read/write to the database. |
||
| + | * HikariCP - Connection Pool implementation for JDBC. |
||
| + | * Apache PDFBox - Reading/writing PDFs. |
||
===Potential Integrator projects=== |
===Potential Integrator projects=== |
||
Revision as of 14:10, 27 May 2021
Overview
This document discusses generally the concepts behind programming integrations using Java and Iptor Integrator.
Topics
Avoiding Integrator Studio as an IDE
Iptor Integrator includes an IDE called Integrator Studio, but even 10 minutes of use is enough to indicate its inferiority as any kind of serious IDE. Specifically, some of its limitations are listed below.
- There are two modes, a drag-drop user mode and a Java/code mode. Except the Java mode does not show you everything. Upon inspecting the source reverse-generated (i.e. decompiled) from the Java class, it was discovered that additional code is added on later or is in the background, and so even the raw Java mode doesn't show you all the code of the resulting program. For example, import statements are not shown, as well as the main() function.
- Apart from the inability to see code altogether, code that deals with proprietary features is also marked up. For example, doing something in the visual editor will translate to what looks like Java code, but in the actual source file the code indicates a more complicated syntax.
- Often, compiler errors point to a line containing an error but don't suggest further information about what the error could be.
- Sometimes, the code inspector will get hung up on an error that is no longer present, and the IDE has to be restarted.
- Running a program crashes the IDE a lot.
- Their data mapping wizard also crashes a lot, especially when you browse database libraries on the i.
- The lack of a dark theme (lol).
Personally, I find the IDE unusable for developing programs beyond the complexity of a simple sript. Therefore, I use the IDE to learn Integrator-specific capabilities by testing them out using the visual editor and then studying the generated java source. Then I code in IntelliJ IDEA. Actually, the real value in Integrator from a development aspect comes from the Integrator libraries e.g. net.ibs.*, not their crappy IDE -norwizzle (talk). However, these are not documented (because you're supposed to use their IDE), so their functionality has to be studied by inference. -norwizzle (talk)
Indispensable third-party libraries
Of course, one of the great advantages of using a modern programming language like Java is the availability of libraries so that you don't have to reinvent the wheel when programming more common tasks (or even less common for that matter). For example, libraries exist that make parsing XML, CSV and Excel files easier (not just easier, but possible, really). For reference purposes, in case one is interested to know which library was chosen (as sometimes many alternatives exist), here are the significant ones in use:
- IBM Toolbox for Java - Programming in Java for IBM i would be useless without this quintessential package.
- Apache Commons - another immensely useful library. Actually, Commons is an umbrella for a collection of many libraries. The one that have been used significantly thus far are:
- Apache POI - For reading/writing to Microsoft document formats. The XSSF is particularly useful for dealing with XLSX files e.g. the Health Canada MAR report uses this to output and stylize the report.
- Apache Commons Net - FTPClient class used for FTP connections
- Apache Commons CSV - Useful for reading/writing CSV files.
- JCraft - For sFTP communication, as Apache Commons Net above is limited to FTP.
- univocity - CSV parser/writer. The CSVWriter class has features that are not found in Apache Commons CSVPrinter.
- MariaDB JDBC driver - to read/write to the database.
- HikariCP - Connection Pool implementation for JDBC.
- Apache PDFBox - Reading/writing PDFs.
Potential Integrator projects
The following extensions/integrations (currently in legacy RPG/CL) may be moved to Integrator.
- System checks / process monitors: Email alerts for periodic checks on system function and business continuity.
- Carrier integration: send shipping manifest to carriers, receive acknowledgements/shipping updates/invoice files from carriers.
- EDI: Build EDI/csv documents from purchase order data; receive EDI/csv documents from EDI provider and update ERP.
- Bank EDI: generate EFT payment file from statement information, process inbound credit card transaction summary files and post to A/R, process inbound cheque-clearing file.
- Periodically-generated reports: Gilead daily transactions report, Health Canada MAR, lost sales.
- SQL data-warehousing, including offload/ETL into open-source database.
- Update lost sales codes.
- Update P/O delivery ETA, send emails.
- File rebuilds: consolidated item master, web orders item master, stats file i.e. run SQL in Java, write to Db2 on i.
- Inbound order processing: receive EDI/txt files from pharmacies (either polled via FTP, polled via email inbox, or by watching folders for new files). Send electronic invoices via FTP.
- ECU: generate catalog for customer/pharmacy POS systems (e.g. Kroll, WinRx etc.)
- Generate remittance advices, distribute via email or write back to OUTQ for Catapult/TLAshford processing.
- System cleanup functions in the overnight schedule and in purge jobs: clear outqueues, prune tables.