# Com / Optage / Kopt / Ekk

## Overview

The `com.optage.kopt.ekk` package is a subpackage within the `com.optage.kopt` framework. It contains two fixture classes that appear to serve as scaffolding or test stubs for SPEC-SCOPED-WIKI testing purposes. The package has a single external dependency on `com.optage.kopt.kkw`, which it interacts with through the `KKW0100B001` class.

## Key Classes

### EKK0301A010

**File:** [`EKK0301A010.java`](src/main/java/com/optage/kopt/ekk/EKK0301A010.java)

A fixture class that handles primary contract processing. This is the most involved class in the package.

- **`process()`** — Performs contract processing logic. The method body is a placeholder that is intended to be filled in with contract-specific business logic.
- **`notify()`** — Triggers a notification by instantiating and calling `KKW0100B001().trigger()`. This is the only method in the package that crosses into another module (`com.optage.kopt.kkw`).

### EKK0301A020

**File:** [`EKK0301A020.java`](src/main/java/com/optage/kopt/ekk/EKK0301A020.java)

A secondary fixture class for contract processing. It provides a simpler `process()` method that serves as a secondary contract entry point. Unlike `EKK0301A010`, this class does not have a `notify()` method or a direct cross-module dependency.

## How It Works

The two classes follow a similar pattern — each exposes a `process()` method as the primary entry point, suggesting they are designed to be invoked as part of a broader workflow or by a scheduler/router in the parent `com.optage.kopt` package.

The flow for `EKK0301A010` is:

1. `process()` is called to handle the primary contract processing.
2. When needed, `notify()` is called, which delegates to `KKW0100B001.trigger()` in the `com.optage.kopt.kkw` package to perform cross-module notification.

`EKK0301A020` follows the simpler flow — a single `process()` call with no secondary notification.

```mermaid
flowchart TD
    subpackage["com.optage.kopt.ekk module"]
    subpackage --> EKK0301A010["EKK0301A010"]
    subpackage --> EKK0301A020["EKK0301A020"]
    EKK0301A010 -->|calls| KKW["KKW0100B001 (com.optage.kopt.kkw)"]
    classDef pkg fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef cls fill:#fff3e0,stroke:#e65100,stroke-width:1px
    class subpackage pkg
    class EKK0301A010,EKK0301A020 cls
```

## Dependencies

| Dependency | Package | Used By | Purpose |
|---|---|---|---|
| `KKW0100B001` | `com.optage.kopt.kkw` | `EKK0301A010.notify()` | Triggers cross-module notifications |

## Notes for Developers

- Both classes are auto-generated fixture classes intended for **SPEC-SCOPED-WIKI tests**. Their method bodies are currently stubs/placeholder comments (`/* Contract processing */`, `/* Secondary EKK contract */`).
- `EKK0301A010` is the richer of the two classes — it includes a `notify()` method that bridges to the `com.optage.kopt.kkw` package.
- If you are extending these classes or implementing their real logic, expect `process()` to be the primary contract method that other parts of the `kopt` framework will invoke.
- The naming convention (`EKK` + numeric code) suggests these classes are generated from or mapped to a specification code system.
