This is the group for the OERA Open Source Initiative. All those interested in keeping track of the work on this project should join this group in order to receive e-mail notifications.

If you would like to start proposing the design of a new component or would like to contribute a component, please just create a new book page and parent it into the structure in an appropriate place.

If you are commenting on a specific contribution or proposal which already has its own page, please add comments to the page so the page author can respond and consider integrating your material into the page.

Use the forum below for early stage proposals, discussion of general principles, issues of interaction, etc.

The OERA OSI Forum

Ubuntu 10.10 Maverick Meerkat

Ubuntu 10.10 Maverick Meerkat

Require command line invoker that logs results to a file

I have written a Logger component that can be invoked from the command line (or from OEA), that writes the results of the tests to a log file in a Surefire-like format. I'm willing to contribute the code (for someone else to review). Could someone please provide me access/instructions?


UML Diagrams

Following are the UML class diagrams for the proposed implementation.

Note that RelationAttrSetOps will not be included in the initial implementation, but its definition is provided here to indicate where these operations will be implemented when and if they are needed.

iSet Family (click for larger version)

See below for higher resolution PDF.

iAttrSet Family (click for larger version)

Properties and Operators

Java collection classes have been provided with a fairly rich set of properties and operators, presumably based on the idea that these classes can then be used for a richer range of rôles, just as there are many classes in that same hierarchy which are clearly not intended for relationships at all. In the present implementation, the decision was made to focus on the essentials of object relationships with the idea of creating efficient, low impact infrastructure for OO programming and then to consider later whether there are other classes with other functions which could also be created.

Implementation Technologies

In the 2006 implementation, all collection classes were implemented using temp-tables based on the conclusion that temp-tables were a natural ABL language feature which provided a superset of capabilities needed for collection management. While this approach was effective and simple, since then concern has been raised about performance issues when the number of temp-tables in a session becomes large and about the excessive memory footprint and possibly instantiation penalty when a temp-table is used for a small and simple collection.

Performance Testing

Most relationship collections will contain only a handful of elements, but it is possible for a relationship to contain a large number of elements. Therefore, we are concerned with both the memory footprint of a class when it contains a small number of elements and with the performance of that class when it contains a large number of elements. In particular, the 2006 implementation used temp-tables throughout.

Core Concepts – Model Hierarchy

In constructing a model hierarchy for these collection classes there are a couple of issues. One is that we want to have an interface for Iterator, which is used in many places, and then an interface which defines the base for each of the two basic types of relationship collections – those with simple elements and those with key/value pairs. If we had inheritance of interfaces (rumored to be coming in OE11.0) we would have the base interface for the type inherit from Iterator and that base interface could be implemented by any class in the hierarchy.

Core Concepts – Duplicates

In any ordinary object relationships, one would never have duplicates because it simply makes no sense to have the same object twice on one end of a relationship. Some Java Collection objects enforce this rule and others don’t.

Core Concepts - Order

The most common form of relationship collection is ordered only by the order in which elements are added to the collection. The parent using the collection may have added the elements in some special order, but most commonly the order is of no significance because any operation performed on the collection will be performed on all members of the collection and it is thus order is of no significance.

Collection Classes for OO Relationships

In Object-Oriented programming one object interacts with another object via a relationship, i.e., a direct link between the two objects. When this relationship is one to one, then one object will simply have a reference to the other object. But, if the relationship is one to many, then there is a need for an intermediary structure to hold the references for the many end of the relationship.

Low-level Infrastructure Components

While the primary focus of the OERA OSI is service components to implement OERA architectures, any framework also has a need for a library of basic, low level components on which to base other code. Thus, the OERA OSI will include a library of such low level components.

The Progress STandard Libraries (STL)

The Progress Standard Libraries

In general the libraries are compatible with Progress version 9 and upwards and are O/S neutral, unless noted differently.

To install the libraries place the slib/ directory in a directory on your PROPATH and you're ready to go, no need to change your PROPATH.

I usually just copy the slib dir to every project I do.

To use a library add the library include file to the external procedure file.

Although the libraries are essentially persistent super procedures.

Why Do Companies Start Transformation Projects?

While development shops in companies with OpenEdge applications are as varied as development shops everywhere, there is a tendency for companies with OpenEdge applications to minimize their expenditures on computing. Ironically, this characteristic derives from the low cost of ownership of OpenEdge. Since it is rare for a company to require a full time DBA, as many databases need, the DBA role is a part time job for one of the developers.

Modernizing Legacy Code - Getting Started

"Transformation" has become a popular term in the ABL for various kinds of application modernization -- moving to a new User Interface (UI), implementing a Service-Oriented Architecture (SOA), evolving toward the OpenEdge Reference Architecture (OERA), and other projects directed toward upgrading old versions of legacy ABL applictions. Today's ABL is just not the same language it was back 15-20 years ago when many ABL applications were first written and our ideas about good architecture have, if anything, evolved more than the language.

Dynamic Transaction (record write,delete.create)

have two procedures that work that can called from trigger level within trigger. They passed a number of paramters including one temp-table containing create/delete information , the 2nd program accepts the current new record and the old record


DEF TEMP-TABLE ttnewCustomer LIKE Customer.
CREATE ttnewcustomer.
BUFFER-COPY customer TO ttnewcustomer.
DEF TEMP-TABLE ttoldCustomer LIKE customer.
CREATE ttoldcustomer.
BUFFER-COPY oldcustomer TO ttoldCustomer.

Syndicate content