# Business Logic — JBSbatKKBandWidthReleaseLmtUpd.setSodParam() [41 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKBandWidthReleaseLmtUpd` |
| Layer | Service (Batch Service) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKBandWidthReleaseLmtUpd.setSodParam()

This method constructs and configures the parameter payload required for SOD (Service Order Data) issuance in the context of bandwidth restriction解除 (release) processing. It is a private builder method called from the `execute()` entry point of the `JBSbatKKBandWidthReleaseLmtUpd` batch service, which handles the business operation of releasing bandwidth limits for a given service contract. The method follows a **data assembly / builder pattern**: it creates a deeply nested `HashMap` structure that mirrors the expected request format of the downstream SOD issuance service invoked via `JCCBatchEsbInterface.invokeService()`. Specifically, it assembles SOD basic information (`sod_kihon_info`), which includes the system ID (`sysid`) and a processing division code (`syori_div` set to `"012"` for bandwidth restriction implementation), along with the service contract details (`svc_kei_info`). The method does not perform any I/O, database operations, or conditional branching — its sole responsibility is deterministic parameter aggregation. It plays the role of an internal data transformer, preparing structured input for the ESBA (Enterprise Service Bus Architecture) service invocation layer.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setSodParam(params)"])
    A["Initialize: dataMap, dataList, sodMap, sodKihonInfoMap, svcKeiInfoMap"]
    B["Set sodKihonInfoMap.sysid = sysId"]
    C["Set sodKihonInfoMap.syori_div = SYORI_DIV_012 = 012"]
    D["Set sodMap.sod_kihon_info = sodKihonInfoMap"]
    E["Set svcKeiInfoMap.svc_kei_no = svcKeiNo"]
    F["Set sodMap.svc_kei_info = svcKeiInfoMap"]
    G["Add sodMap to dataList"]
    H["Set dataMap.trgt_data_list = dataList"]
    I["Set dataMap.func_code = 1"]
    J["Set inputMap.CC_TITLE_JKKHAKKOSODCC = dataMap"]
    K["Return (void)"]

    START --> A --> B --> C --> D --> E --> F --> G --> H --> I --> J --> K
```

The processing is a linear, sequential assembly — no conditional branches, loops, or error handling are present. The method creates five intermediate HashMaps, populates them with business values derived from the method parameters and class-level constants, nests them according to the expected SOD request structure, and places the top-level payload into the caller's `inputMap` under the key `"JKKHakkoSODCC"`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `svcKeiNo` | `String` | Service contract number (サービス契約番号) — the unique identifier for the service contract whose bandwidth restriction is being released. This value is placed into the `svc_kei_info` sub-map of the SOD payload and is used by the downstream SOD issuance service to identify the target contract. |
| 2 | `sysId` | `String` | System ID (SYSID) — the identifier of the system initiating the SOD issuance. It is stored in the `sod_kihon_info` basic information block and is used to attribute the SOD request to a specific system. |
| 3 | `inputMap` | `HashMap<String, Object>` | The caller-provided input map that this method populates with the assembled SOD parameter payload. After return, the caller (`execute()`) passes this map to `JCCBatchEsbInterface.invokeService()`. The payload is placed under the key `"JKKHakkoSODCC"` (CC_TITLE_JKKHAKKOSODCC). |

**Instance fields / external state read:** None. This method is stateless with respect to instance fields — it reads only its parameters and references class-level `private static final` constants defined in the same class.

## 4. CRUD Operations / Called Services

This method performs **no CRUD operations** and makes **no calls to external services, CBS, or SC methods**. It is a pure data-assembler that constructs a nested `HashMap` structure. All database and service interactions occur in the caller's `execute()` method via `JCCBatchEsbInterface.invokeService()`, which is invoked after `setSodParam()` returns.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| — | (none) | — | — | This method is a pure data assembly method. No service calls, database reads, or I/O operations are performed. |

## 5. Dependency Trace

### Pre-computed evidence from code analysis graph:

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: -

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: JBSbatKKBandWidthReleaseLmtUpd | `execute(inMap)` → `setSodParam(svcKeiNo, sysId, inputMap)` | — (no terminal CRUD from this method) |

**Notes:** The sole caller is the `execute()` method within the same class (`JBSbatKKBandWidthReleaseLmtUpd`). The `execute()` method constructs `svcKeiNo` from `JBSbatKK_T_FTTH_TSRCK_JSK.SVC_KEI_NO` and `sysId` from `JBSbatKK_T_SVC_KEI.SYSID`, then passes them to `setSodParam()`. The resulting `inputMap` is forwarded to `JCCBatchEsbInterface.invokeService()`, which is the terminal operation that triggers the actual SOD issuance service — but that call originates from `execute()`, not from `setSodParam()` itself.

## 6. Per-Branch Detail Blocks

### Block 1 — INIT (local variable initialization) (L142)

> Create five intermediate HashMaps and an ArrayList for the nested SOD parameter structure.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap = new HashMap<String, Object>()` // Top-level data container for CC title payload |
| 2 | SET | `dataList = new ArrayList<Map<String, Object>>()` // List to hold SOD maps |
| 3 | SET | `sodMap = new HashMap<String, Object>()` // SOD payload map |
| 4 | SET | `sodKihonInfoMap = new HashMap<String, Object>()` // SOD basic information map |
| 5 | SET | `svcKeiInfoMap = new HashMap<String, Object>()` // Service contract information map |

### Block 2 — SOD BASIC INFO SETUP (L148–L158)

> Set the SOD basic information block with SYSID and processing division. Comment: "SOD基本情報を設定する" (Set SOD basic information).

| # | Type | Code |
|---|------|------|
| 1 | SET | `sodKihonInfoMap.put("sysid", sysId)` // Store system ID from parameter [-> sysId param] |
| 2 | SET | `sodKihonInfoMap.put("syori_div", SYORI_DIV_012)` // Processing division for bandwidth restriction implementation [-> SYORI_DIV_012="012" (JBSbatKKBandWidthReleaseLmtUpd.java:40)] |
| 3 | SET | `sodMap.put("sod_kihon_info", sodKihonInfoMap)` // Attach basic info to SOD map [-> Comment: SOD基本情報をSOD情報に設定する / Set SOD basic info into SOD information] |

### Block 3 — SERVICE CONTRACT INFO SETUP (L160–L165)

> Set the service contract information block with the service contract number. Comment: "サービス契約情報を設定する" (Set service contract information).

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiInfoMap.put("svc_kei_no", svcKeiNo)` // Store service contract number from parameter [-> svcKeiNo param] |
| 2 | SET | `sodMap.put("svc_kei_info", svcKeiInfoMap)` // Attach contract info to SOD map [-> Comment: サービス契約情報をSOD情報に設定する / Set service contract info into SOD information] |

### Block 4 — ADD TO LIST (L167–L169)

> Add the assembled SOD map into the data list. Comment: "SOD情報をリストに設定する" (Set SOD information into list).

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataList.add(sodMap)` // Add single SOD payload map to list |

### Block 5 — DATA MAP SETUP (L171–L176)

> Wrap the data list and function code into the top-level dataMap. Comment: "リストをデータマップに設定する" (Set list into data map).

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap.put("trgt_data_list", dataList)` // Target data list [-> Comment: リストをデータマップに設定する / Set list into data map] |
| 2 | SET | `dataMap.put("func_code", "1")` // Function code set to "1" [-> Comment: 機能コードを設定 / Set function code] |

### Block 6 — STORE IN INPUTMAP (L178–L180)

> Place the completed dataMap into the caller's inputMap under the SOD issuance CC title key. Comment: "CCのタイトルをキーにデータを格納" (Store data with CC title as key).

| # | Type | Code |
|---|------|------|
| 1 | SET | `inputMap.put(CC_TITLE_JKKHAKKOSODCC, dataMap)` // Store data map under SOD issuance CC title key [-> CC_TITLE_JKKHAKKOSODCC="JKKHakkoSODCC" (JBSbatKKBandWidthReleaseLmtUpd.java:35)] |
| 2 | RETURN | `return` // void return — control returns to caller `execute()` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number (サービス契約番号) — unique identifier for a service contract in the telecom billing system |
| `sysid` | Field | System ID — identifies the originating system for the SOD request |
| `syori_div` | Field | Processing division code (処理区分) — classifies the type of batch processing; value "012" denotes bandwidth restriction release implementation |
| `sod_kihon_info` | Field | SOD basic information — nested sub-map containing system ID and processing division |
| `svc_kei_info` | Field | Service contract information — nested sub-map containing the service contract number |
| `trgt_data_list` | Field | Target data list — the top-level list containing SOD payload maps to be transmitted |
| `func_code` | Field | Function code — identifies the operation type within the SOD issuance service; "1" indicates bandwidth release |
| SOD | Acronym | Service Order Data (サービスオーダデータ) — the core entity for telecom service order fulfillment, used to request service provisioning changes |
| JKKHakkoSODCC | Acronym / Constant | "JKKHakko SOD CC" — the component controller (CC) title for K-Opticom SOD issuance; "Hakko" means issuance (発行) |
| JBSbatKKBandWidthReleaseLmtUpd | Class | Batch service class for releasing bandwidth restrictions (帯域制限解除) — the parent batch that orchestrates the SOD issuance flow |
| `usecase_id` | Field | User case ID — identifies the specific business use case; value "KKSV0572" is used for bandwidth restriction implementation |
| JCCBatchEsbInterface | Class | J-Connect Batch ESBA Interface — the enterprise service bus invocation interface used to call remote services in batch mode |
| JBSbatBusinessService | Class | Abstract base class for batch business services — provides common infrastructure like `setCommonInfo()`, `logPrint`, and `commonItem` |
| ESBA | Acronym | Enterprise Service Bus Architecture — the messaging middleware for inter-service communication |
| CC | Acronym | Component Controller (コンポーネントコントローラ) — a mid-tier component that coordinates business logic and data transformation |
| CBS | Acronym | Common Business Service — a shared service component in the e.o. system architecture |
| SC | Acronym | Service Component — a lower-level component that interacts directly with the database layer |
