Wayfinder / Case study / Documentation

Source-derived document; reported behaviour, inference and evidence gaps are identified in the text.

1. Executive Current-System Overview

In this document

Diagram coverage

Diagram / view Status Scope or next work
System context Linked 5 bounded views; 18 elements; 12 relationships.

Purpose and current character

The supplied evidence describes a desktop order-management application for West Coast Wholesalers, Inc., covering customers, orders, stock reference data, and operational reports. The repository presents the system as an example of migrating an Informix 4GL application to Java. The Java application is launched through com.ais.demo.D4_Main, while the retained 4GL sources provide a related, but not automatically identical, implementation history. The evidence therefore supports describing the current estate as a partially implemented migrated demonstration system rather than as a single, fully equivalent implementation across all artifacts. E0011 E0014 E0010

The principal user is an internal operator working through a menu-driven desktop interface. The main Java menu provides Customer, Orders, Stock, Reports, and Exit options, with additional commands for the demo/help area and the bang command. The corresponding 4GL d4_main.4gl menu has the same principal business areas, and menu1.4gl.main provides a separate order-management menu with privilege-dependent options. These similarly named entry points should not be treated as one runtime path: D4_Main is the Java application entry module, while menu1.4gl.main and ordmenu.4gl.main are distinct 4GL programs. E0001 E0007 E0009

Main capabilities and boundaries

Customer management is the most consistently evidenced maintenance capability. In the Java target, D4_Cust.java provides customer add, search/browse, update, and delete paths, with customer fields including customer_num, fname, lname, company, address fields, city, state, ZIP code, and phone. The customer browse path supports movement through matching rows and selection of a current record. Customer deletion checks for related orders and requires confirmation. The 4GL d4_cust.4gl source reports equivalent customer functions, including query-by-example, state selection, and help. Detailed validation, deletion semantics, and field behavior belong in C05 and C06. E0009 E0007

Order entry is implemented in the Java D4_Orders path. It selects or creates a customer, collects order-header information, accepts line items, looks up stock and manufacturer information, inserts the order and its items, and generates an invoice after successful completion. The order line structure includes item number, stock number, manufacturer code, description, quantity, unit price, and total price, with a maximum of ten items evidenced in the Java/4GL material. Customer-based order viewing is also implemented in get_order(). E0002 E0007 E0011

The boundary of order maintenance requires explicit qualification. In D4_Orders.java, update_order() and delete_order() display “This option has not been implemented”; the Java menu entries therefore do not establish order update or deletion as delivered capabilities. Conversely, ordmenu.4gl.main is a distinct 4GL order application whose Modify and Delete paths are reported as implemented. This is a genuine cross-artifact difference, not a reason to merge the behaviors. The Java current path should be characterized as supporting order creation and viewing, while the separate 4GL path contains broader order-maintenance behavior. E0002 E0009

Stock is available as reference data for order entry but not as implemented Java maintenance. D4_Stock.java exposes add, find, update, and delete menu operations, but each handler reports that the option has not been implemented. Startup code nevertheless loads stock records into a bounded in-memory array, and order entry can use those records for stock lookup. The presence of stock data and a stock-selection form does not imply stock CRUD functionality. E0002 E0012

Reporting is similarly partial. The Java D4_Report implementation contains mailing-label and accounts-receivable paths, with output choices for file, printer, or screen through print_option. print_backlog() and print_stock() are explicit stubs. The help and 4GL sources describe those report choices but also state that Backlog and Stock-list are not implemented. The supported current Java report boundary is therefore mailing labels and accounts receivable, subject to framework output behavior described in C08 and operational considerations in C10. E0002 E0007 E0012

Execution, data, and persistence context

At startup, D4_Main.main creates the application through AppFactory, starts the D4_Main module, sets the Swing look and feel, obtains the stores7 database through _app.getDB("stores7"), and loads state and stock reference data before entering the main menu. D4_Globals maintains shared application values for the current customer and order, item, stock, and state arrays, counters, and print_option. This is evidence of mutable application-level shared state, but not proof of persistence, thread safety, or cross-session sharing. E0001 E0002

The Java configuration identifies Informix JDBC connectivity. default.properties gives a stores7 URL using com.informix.jdbc.IfxDriver, while demo/source/demo.properties contains a different Informix host, port, server name, and password. These files may represent different project or runtime configurations, but the supplied evidence does not establish precedence or actual host deployment. Configuration values alone should not be read as proof that a component is deployed to a particular machine; the related boundary and exchange evidence belongs in C08 and C10. E0007 E0008 E0013

Order insertion visibly uses a transaction structure: the application begins work, inserts the order header, obtains the generated identifier, inserts item rows, and commits only after the required operations succeed. Explicit rollback is present on reported insertion failures. The framework implementations of DBHelper, ErrorHandler, and transaction methods are not supplied, so rollback after every possible exception is not established. The invoice and total behavior also requires qualification: order_total() applies a 1.1 multiplier, while invoice generation separately calculates 6.5% sales tax and 3.5% shipping. These figures suggest an intended 10% relationship, but exact rounding and whether any amount is double-counted remain unresolved. E0002 E0012

Important constraints and exceptions

The system exposes a command-execution path through bang(), which passes user-entered text to _app.execute(true, Str.valueOf(cmd)). The source shows no allowlist or input restriction, although the effective permissions and behavior of Application.execute() are not supplied. This is a security-sensitive boundary, not evidence of a deployed vulnerability; detailed treatment belongs in C09. E0012

The customer deletion rule also needs a qualification. The Java code counts rows in orders for the selected customer, while the displayed message refers to “active orders.” The evidence does not show a predicate restricting the count to open or unpaid orders. Whether all historical orders are intended to block deletion is therefore unresolved and should not be presented as a settled business rule. E0002

The repository contains generated Swing forms, record classes, 4GL .per definitions, binary or unsupported .frm files, help text, unload files, and Java target code. These artifacts establish the system’s business vocabulary and much of its screen and record structure, but they do not prove that every documented feature is wired into the Java runtime. Help examples, especially embedded Informix 4GL snippets, are documentation or migration evidence unless corresponding executable behavior is present. E0004 E0006

Current-system summary

The defensible executive characterization is a desktop Java/Swing order-management demo connected, at least by source configuration and call sites, to the Informix-oriented stores7 environment. Its evidenced Java capabilities are customer maintenance, order creation and customer-based order viewing, mailing-label reporting, accounts-receivable reporting, and use of preloaded stock and state reference data. Java order update/delete, stock CRUD, backlog reporting, and stock-list reporting remain menu-level or documented options rather than implemented capabilities in the supplied current path. The related 4GL programs contain additional behavior and must remain separate when describing lifecycle and capability boundaries. E0002 E0007 E0011

The principal unresolved questions are which configuration is authoritative for an actual runtime, whether framework transaction and report semantics close the gaps visible in source, whether customer deletion is intended to consider all orders or only active ones, and how closely the Java target is intended to correspond to each retained 4GL program. These questions constrain current-state interpretation but do not alter the narrower capability boundary above. Further business rules are covered in C05, data structures in C06, interfaces and persistence in C08, security-sensitive behavior in C09, and runtime prerequisites in C10. E0002 E0008 E0012

System context

Browse diagrams and evidence gaps.