Diagram generation: ref-arch-driven procedure + spec validator + KB enrichment

The diagram path now follows a documented standard procedure (lookup
the closest Oracle Architecture Center reference → confirm components
→ author absolute_layout → spec validator → render → visually verify)
and ships persistent guardrails so layout regressions can't recur.

Persistent procedure changes (apply to all users, all sessions):
- tools/diagram_spec_validator.py — geometry checks (CONTAINER_TOO_THIN,
  CONTAINER_PADDING_VIOLATION, LABEL_OVERFLOW_PARENT) run BEFORE either
  renderer (drawio + PPTX). Catches the subnet-collapse / label-overflow
  bugs that the post-render drawio validator missed.
- tools/oci_diagram_gen.py + tools/oci_pptx_diagram_gen.py — call the
  spec validator before emitting any output. Adds mysql / mysql_heatwave
  type aliases.
- tools/archcenter_pattern_lookup.py — scores against cached page
  descriptions (not just the 1-line summary), supports --queries for
  multi-fragment composition, and applies synonym expansion via
  kb/architecture-center/synonyms.yaml so "LB HA cross AD" matches
  "load balancer high availability availability domain".
- kb/architecture-center/synonyms.yaml — canonical synonym table
  (load balancer, autonomous database, data guard, …) used by the
  lookup scorer.

KB enrichment:
- tools/archcenter_description_fetcher.py + 121 cached _description.md
  under kb/diagram/assets/archcenter-refs/<slug>/. Removes the runtime
  dependency on docs.oracle.com when authoring specs and feeds the
  pattern-lookup scorer.
- 110+ cached .drawio / .svg / .png references for offline reuse,
  plus the OCI Toolkit v24.2 import (kb/diagram/assets/oci-toolkit-drawio).

Documentation:
- docs/skill/output-formats.md — new "Standard diagram-generation
  procedure (MANDATORY)" + geometry rules + the new validator entry.
- SKILL.md option 2 — references the mandatory procedure.
- README.md — describes the spec validator, archcenter_pattern_lookup
  and description fetcher, and updates the KB-health table.

Tooling that backs the procedure (cumulative across recent sessions):
tools/archcenter_case_runner.py, archcenter_batch_driver.py,
archcenter_zip_downloader.py, drawio_visual_validator.py,
drawio_fidelity_eval.py, harvest_drawio_icon.py, import_oci_library.py,
oci_pptx_diagram_gen.py, oci_pptx_render.py, refresh_pptx_icon_index.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
root
2026-04-25 21:15:21 -03:00
parent 2491c38d4b
commit b30a4f0d32
635 changed files with 365317 additions and 1014 deletions

View File

@@ -0,0 +1,285 @@
# Move Oracle Forms applications to Oracle APEX on an Oracle Autonomous Database
- Source: https://docs.oracle.com/en/solutions/migrate-apps-to-apex/index.html
- Date: 2025-07
- Type: reference-architecture
- Services: adb-s, apex
- Tags: application, migration, autonomous
## Summary (catalog)
Oracle Forms to APEX modernization on ADB-S. Automated conversion tools for Forms modules to APEX pages. Manual refinement needed for complex Forms triggers and PL/SQL logic.
## Architecture (fetched from source)
Architecture
This architecture shows the process of moving on-premises Oracle Forms applications to Oracle APEX applications on Oracle Cloud
Infrastructure .
The following diagram illustrates this reference architecture.
Description of the illustration forms-apps-apex.png
forms-apps-apex-oracle.zip
The architecture has the following components:
- Region
An
OCI region is a localized geographic area that
contains one or more data centers, hosting
availability domains. Regions are independent of
other regions, and vast distances can separate
them (across countries or even
continents).
- Availability domains
Availability domains are standalone, independent data centers within a region. The physical resources in each availability domain are isolated from the resources in the other availability domains, which provides fault tolerance. Availability domains dont share infrastructure such as power or cooling, or the internal availability domain network. So, a failure at one availability domain shouldn't affect the other availability domains in the region.
- Virtual cloud network (VCN) and subnets
A
VCN is a customizable, software-defined network
that you set up in an OCI region. Like traditional
data center networks, VCNs give you control over
your network environment. A VCN can have multiple
non-overlapping classless inter-domain routing
(CIDR) blocks that you can change after you create
the VCN. You can segment a VCN into subnets, which
can be scoped to a region or to an availability
domain. Each subnet consists of a contiguous range
of addresses that don't overlap with the other
subnets in the VCN. You can change the size of a
subnet after creation. A subnet can be public or
private.
- Load balancer
Oracle Cloud
Infrastructure Load Balancing provides automated traffic distribution from a single entry point to multiple servers.
- Security list
For each subnet, you can create security rules that specify the source, destination, and type of traffic that is allowed in and out of the subnet.
- Autonomous Transaction
Processing
Oracle Autonomous Transaction
Processing is a self-driving, self-securing,
self-repairing database service that is optimized
for transaction processing workloads. You do not
need to configure or manage any hardware, or
install any software. OCI handles creating,
backing up, patching, upgrading, and tuning the
database.
- Identity and Access Management
Oracle Cloud Infrastructure Identity
and Access Management (IAM) provides user access control for OCI and
Oracle Cloud Applications. The IAM API and the
user interface enable you to manage identity
domains and the resources within them. Each OCI
IAM identity domain represents a standalone
identity and access management solution or a
different user population.
- Audit
The
Oracle Cloud Infrastructure Audit service automatically records calls to all
supported OCI public application programming
interface (API) endpoints as log events. All OCI
services support logging by Oracle Cloud Infrastructure Audit .
Recommendations
Use the following recommendations as a starting point
to plan modernizing to Oracle APEX . Your requirements might differ from the architecture described here.
- VCN
When you create a VCN, determine how many IP addresses your
cloud resources in each subnet require. Using Classless Inter-Domain Routing
(CIDR) notation, specify a subnet mask and a network address range large enough
for the required IP addresses. Use CIDR blocks that are within the standard
private IP address space.
After you create a VCN, you can change, add, and remove its CIDR blocks.
-
When you design the subnets, consider functionality and security requirements.
All compute instances within the same tier or role should go into the same
subnet.
Use regional subnets.
- Security lists
Use security lists to define ingress and egress rules that apply to the entire subnet.
- Cloud Guard
Clone and customize the default recipes provided by Oracle to create custom detector and responder recipes. These recipes enable you to specify what type of security violations generate a warning and what actions are allowed to be performed on them. For example, you might want to detect OCI Object Storage buckets that have visibility set to public.
Apply Oracle Cloud Guard at the tenancy level to cover the broadest scope and to reduce the administrative burden of maintaining multiple configurations.
You can also use the Managed List feature to apply certain configurations to detectors.
- Security Zones
For resources that require maximum security, Oracle recommends that you use security zones. A security zone is a compartment associated with an Oracle-defined recipe of security policies that are based on best practices. For example, the resources in a security zone must not be accessible from the public internet and they must be encrypted using customer-managed keys. When you create and update resources in a security zone, OCI validates the operations against the policies in the recipe, and prevents operations that violate any of the policies.
- Schema
Retain the database structure that Oracle
Forms was built on, as is, and use that as the schema for Oracle APEX .
- Business Logic
Most of the business logic for
Oracle Forms is in triggers, program units, and events. Before starting the
migration of Oracle Forms to Oracle APEX , migrate the business logic to stored procedures, functions, and packages in
the database.
Considerations
Consider the following key items when moving Oracle Forms Object
navigator components to Oracle APEX :
- Data Blocks
A data block from Oracle Forms relates to Oracle APEX with each page broken up into several regions and
components. Review the Oracle APEX Component Templates available in the Universal
Theme.
- Triggers
In Oracle Forms, triggers control almost everything.
In Oracle APEX , control is based on flexible conditions that are
activated when a page is submitted and are managed by
validations, computations, dynamic actions, and
processes.
- Alerts
Most messages in Oracle APEX are generated when you submit a page.
- Attached Libraries
Oracle APEX takes care of the JavaScript and CSS libraries that
support the Universal Theme, which supports all of the
components that you need for flexible, dynamic applications.
You can include your own JavaScript and CSS in several ways,
mostly through page attributes. You can choose to add inline
code as reference files that exist either in the database as
a BLOB ( #APP_IMAGES# ) or sit on the middle
tier, typically served by Oracle REST Data Services (ORDS).
When a reference file is on an Oracle WebLogic Server, the
file location is prefixed with
#IMAGE_PREFIX# .
- Editors
Oracle APEX has a text area and a rich text editor, which is
equivalent to Editors in Oracle Forms.
- List of Values (LOV)
In Oracle APEX , the LOV is coupled with the Item type. A radio group
works well with a small handful of values. Select Lists for
middle-sized sets, and select Popup LOV for large data sets.
You can use the queries from Record Group in Oracle Forms
for the LOV query in Oracle APEX . LOV's in Oracle APEX can be dynamically driven by a SQL query, or be
statically defined. A static definition allows a variety of
conditions to be applied to each entry. These LOVs can then
be associated with Items such as Radio Groups and Select
Lists, or with a column in a report, to translate a code to
a label.
- Parameters
Page Items in Oracle APEX are populated between pages to pass information to the
next page, such as the selected record in a report. Larger
forms with a number of items are generally submitted as a
whole, where the page process handles t