# Business Logic — KKW03201SFLogic.actionRadioClick() [45 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW03201SF.KKW03201SFLogic` |
| Layer | Controller (Webview Business Logic) |
| Module | `KKW03201SF` (Package: `eo.web.webview.KKW03201SF`) |

## 1. Role

### KKW03201SFLogic.actionRadioClick()

This method implements the **registration screen "Selection" radio button click processing** (登録画面「選択」ラジオボタン押下時処理). It is the core business logic handler that processes the user selecting a row from the 050-number information list displayed on the KKW03201 registration screen — a screen responsible for 050-number issuance registration (０５０番号発番登録機能) within the K-Opticom customer contract management system. When a user clicks a radio button to select one row from a list of phone numbers (specifically 050-number entries), this method extracts the selected phone number, reservation key, and update datetime from the chosen row, then populates corresponding fields on the output (destination) form to prepare for the next screen transition. The method follows a **data extraction and forwarding delegation pattern**: it reads data from the service form bean (the source of user input), copies specific fields into both the service form and the shared common info bean, and sets navigation metadata (next screen ID and name) to guide the framework's screen routing. It then logs the DataBean state for debugging before returning a success indicator.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["actionRadioClick()"])
    START --> GET_COMMON["Get shared Bean: commonInfoBean = super.getCommonInfoBean()"]
    GET_COMMON --> GET_SVC["Get service form Bean: svcFormBean = super.getServiceFormBean()"]
    GET_SVC --> PARAM["Set paramBean = {svcFormBean}"]
    PARAM --> GET_SEL["Get selected row index: sel = paramBean[0].sendMessageString(TELNO_SEL, DATABEAN_GET_VALUE)"]
    GET_SEL --> GET_LIST["Get 050-number info list: list_050_no_info = paramBean[0].getDataBeanArray(LIST_050_NO_INFO)"]
    GET_LIST --> GET_SUB["Get subbean at index sel: subbean = list_050_no_info.getDataBean(sel)"]
    GET_SUB --> GET_TELNO["Get phone number: telno = subbean.sendMessageString(TELNO_02, DATABEAN_GET_VALUE)"]
    GET_TELNO --> SET_TELNO["Set output phone number: paramBean[0].sendMessageString(HRADSI_050_NO, DATABEAN_SET_VALUE, telno)"]
    SET_TELNO --> GET_RSV_NO["Get reservation key: telno_rsv_no = subbean.sendMessageString(TELNO_RSV_NO_02, DATABEAN_GET_VALUE)"]
    GET_RSV_NO --> SET_RSV_NO["Set reservation key: paramBean[0].sendMessageString(KK0181_TELNO_RSV_NO, DATABEAN_SET_VALUE, telno_rsv_no)"]
    SET_RSV_NO --> GET_UPD_DT["Get update datetime: upd_dtm = subbean.sendMessageString(ZM0181_UPD_DTM_02, DATABEAN_GET_VALUE)"]
    GET_UPD_DT --> SET_UPD_DT["Set update datetime: paramBean[0].sendMessageString(KK0181_UPD_DTM, DATABEAN_SET_VALUE, upd_dtm)"]
    SET_UPD_DT --> SET_NEXT_ID["Set next screen ID: commonInfoBean.sendMessageString(NEXT_SCREEN_ID, DATABEAN_SET_VALUE, SCREEN_ID_KKW03201)"]
    SET_NEXT_ID --> SET_NEXT_NAME["Set next screen name: commonInfoBean.sendMessageString(NEXT_SCREEN_NAME, DATABEAN_SET_VALUE, SCREEN_NAME_KKW03201)"]
    SET_NEXT_NAME --> LOG_DATABEAN["Log DataBean dump: JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean())"]
    LOG_DATABEAN --> RETURN_TRUE(["Return true (success)"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | (none) | — | This method takes no parameters. It operates entirely on instance fields inherited from its parent class `JCCWebBusinessLogic` and the shared web beans accessible through `super.getCommonInfoBean()` and `super.getServiceFormBean()`. |

**Instance fields / external state read:**

| # | Field / State | Source | Business Description |
|---|--------------|--------|---------------------|
| 1 | Common Info Bean | `super.getCommonInfoBean()` | Shared cross-screen bean used for navigation metadata (next screen ID and name). Provides the common info context across the K-Opticom web framework. |
| 2 | Service Form Bean | `super.getServiceFormBean()` | The service-specific form DataBean for the KKW03201SF screen. Contains the user's current input state including the 050-number list, selected row index, and output fields. |
| 3 | TELNO_SEL (Constant) | `KKW03201SFConst.TELNO_SEL = "電話番号選択値"` | Key used to retrieve the selected row index (as a string) from the service form bean. Represents the user's radio button selection position. |
| 4 | LIST_050_NO_INFO (Constant) | `KKW03201SFConst.LIST_050_NO_INFO = "０５０番号情報詳細"` | Key used to retrieve the array of 050-number information DataBeans from the service form bean. Each element represents one phone number entry in the list. |
| 5 | TELNO_02 (Constant) | `KKW03201SFConst.TELNO_02 = "電話番号"` | Key used to retrieve the phone number string from the selected row's DataBean. |
| 6 | HRADSI_050_NO (Constant) | `KKW03201SFConst.HRADSI_050_NO = "払出０５０番号"` | Key used to set the output phone number on the service form bean after extraction. This is the "issued 050 number" field. |
| 7 | TELNO_RSV_NO_02 (Constant) | `KKW03201SFConst.TELNO_RSV_NO_02 = "電話番号予約番号"` | Key used to retrieve the reservation key from the selected row's DataBean. |
| 8 | KK0181_TELNO_RSV_NO (Constant) | `KKW03201SFConst.KK0181_TELNO_RSV_NO = "電話番号予約番号"` | Key used to set the reservation key on the service form bean. |
| 9 | ZM0181_UPD_DTM_02 (Constant) | `KKW03201SFConst.ZM0181_UPD_DTM_02 = "更新年月日時分秒（電話番号予約）"` | Key used to retrieve the update timestamp from the selected row's DataBean. |
| 10 | KK0181_UPD_DTM (Constant) | `KKW03201SFConst.KK0181_UPD_DTM = "更新年月日時分秒（電話番号予約）"` | Key used to set the update timestamp on the service form bean. |
| 11 | NEXT_SCREEN_ID (Constant) | `CommonInfoCFConst.NEXT_SCREEN_ID` | Key for setting the next screen identifier in the common info bean. |
| 12 | NEXT_SCREEN_NAME (Constant) | `CommonInfoCFConst.NEXT_SCREEN_NAME` | Key for setting the next screen display name in the common info bean. |
| 13 | SCREEN_ID_KKW03201 (Constant) | `JKKScreenConst.SCREEN_ID_KKW03201` | The screen ID constant for the KKW03201 registration screen. |
| 14 | SCREEN_NAME_KKW03201 (Constant) | `JKKScreenConst.SCREEN_NAME_KKW03201` | The screen name constant for the KKW03201 registration screen. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Retrieves the selected row index string (`TELNO_SEL`) from the service form bean [Read] |
| R | `OneStopDataBeanAccess.getDataBeanArray` | OneStopDataBeanAccess | — | Retrieves the 050-number information list array (`LIST_050_NO_INFO`) from the service form bean [Read] |
| R | `X31SDataBeanAccessArray.getDataBean` | OneStopDataBeanAccessArray | — | Fetches the DataBean at the user-selected row index from the 050-number info list [Read] |
| R | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Retrieves the phone number (`TELNO_02`) from the selected row's DataBean [Read] |
| R | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Retrieves the reservation key (`TELNO_RSV_NO_02`) from the selected row's DataBean [Read] |
| R | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Retrieves the update datetime (`ZM0181_UPD_DTM_02`) from the selected row's DataBean [Read] |
| W | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Sets the output phone number (`HRADSI_050_NO`) on the service form bean [Write/Update] |
| W | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Sets the reservation key (`KK0181_TELNO_RSV_NO`) on the service form bean [Write/Update] |
| W | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Sets the update datetime (`KK0181_UPD_DTM`) on the service form bean [Write/Update] |
| W | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Sets next screen ID (`NEXT_SCREEN_ID = KKW03201`) in the shared common info bean [Write/Update] |
| W | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | — | Sets next screen name (`NEXT_SCREEN_NAME = KKW03201`) in the shared common info bean [Write/Update] |
| R | `JSYwebLog.println` | JSYwebLog | — | Logs the DataBean dump for debugging via `JSYwebLog.println(JSYwebLog.DataBean_Dump, ...)` [Read/Debug] |

**CRUD Classification Summary:**
This method performs **no database operations** (no C/R/U/D against persistent storage). All operations are **in-memory DataBean reads and writes** within the web framework's session-scoped beans. The method acts as a **data bridge** — extracting values from the source (selected list row) and forwarding them to destination fields (output form fields and navigation metadata), then triggering a screen transition.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKA16301 | `KKA16301SFLogic.actionRadioClick()` → `KKW03201SFLogic.actionRadioClick()` | In-memory DataBean reads/writes only (no DB) |
| 2 | Screen:KKW03201 | (Self — this method is the entry point for radio button click events on screen KKW03201) | In-memory DataBean reads/writes only (no DB) |

**Notes:**
- The KKW03201SF module is the **source/parent module**. `KKA16301SFLogic` (in koptWebA) is an extended/derived class that calls this method — KKA16301 appears to be a specialized variant of the KKW03201 screen, likely with additional business logic wrapping around the base radio button click behavior.
- The method is triggered by a **radio button click event** on the KKW03201 registration screen's view layer. The exact view file that binds to this method would follow the X31 framework's naming convention (likely `KKW03201SFView` or a JSP with a matching action binding).

## 6. Per-Branch Detail Blocks

**Block 1** — [SET/ASSIGN] `Get shared Bean` (L967)

> Retrieves the shared common info bean for cross-screen navigation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();` // Get shared Bean access layer (共有Bean アクセス層の取得) |

**Block 2** — [SET/ASSIGN] `Get service form Bean` (L970–L971)

> Retrieves the service-specific form bean and wraps it in a parameter array.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccess svcFormBean = super.getServiceFormBean();` // Get service form Bean access layer (サービスフォームBean アクセス層の取得) |
| 2 | SET | `X31SDataBeanAccess[] paramBean = { svcFormBean };` // Wrap in single-element array for uniform access |

**Block 3** — [SET] `Get selected row index` (L974–L975)

> Reads the user's radio button selection — the index of the chosen row in the 050-number information list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String sel = paramBean[0].sendMessageString(KKW03201SFConst.TELNO_SEL, X31CWebConst.DATABEAN_GET_VALUE);` // [TELNO_SEL="電話番号選択値"] — Retrieves the selected row index from the service form |

**Block 4** — [SET/ASSIGN] `Get 050-number info list and selected row` (L978–L981)

> Retrieves the full list of 050-number information DataBeans, then extracts the specific row chosen by the user.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccessArray list_050_no_info = paramBean[0].getDataBeanArray(KKW03201SFConst.LIST_050_NO_INFO);` // [LIST_050_NO_INFO="０５０番号情報詳細"] — Gets the 050-number info list array |
| 2 | SET | `X31SDataBeanAccess subbean = list_050_no_info.getDataBean(Integer.parseInt(sel));` // Extracts the DataBean at the user-selected index |

**Block 5** — [SET] `Extract phone number from selected row` (L982–L983)

> Gets the phone number value from the selected row.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String telno = subbean.sendMessageString(KKW03201SFConst.TELNO_02, X31CWebConst.DATABEAN_GET_VALUE);` // [TELNO_02="電話番号"] — Phone number from selected row |

**Block 6** — [SET] `Set output phone number` (L986–L987)

> Writes the extracted phone number to the output field on the service form.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `paramBean[0].sendMessageString(KKW03201SFConst.HRADSI_050_NO, X31CWebConst.DATABEAN_SET_VALUE, telno);` // [HRADSI_050_NO="払出０５０番号"] — Output 050 number |

**Block 7** — [SET] `Extract and set reservation key` (L990–L991)

> Gets the reservation key (callback key) from the selected row and writes it to the output form.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String telno_rsv_no = subbean.sendMessageString(KKW03201SFConst.TELNO_RSV_NO_02, X31CWebConst.DATABEAN_GET_VALUE);` // [TELNO_RSV_NO_02="電話番号予約番号"] — Gets reservation key |
| 2 | CALL | `paramBean[0].sendMessageString(KKW03201SFConst.KK0181_TELNO_RSV_NO, X31CWebConst.DATABEAN_SET_VALUE, telno_rsv_no);` // [KK0181_TELNO_RSV_NO="電話番号予約番号"] — Sets reservation key on output |

**Block 8** — [SET] `Extract and set update datetime` (L992–L994)

> Gets the last update timestamp from the selected row and writes it to the output form.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String upd_dtm = subbean.sendMessageString(KKW03201SFConst.ZM0181_UPD_DTM_02, X31CWebConst.DATABEAN_GET_VALUE);` // [ZM0181_UPD_DTM_02="更新年月日時分秒（電話番号予約）"] — Gets update timestamp |
| 2 | CALL | `paramBean[0].sendMessageString(KKW03201SFConst.KK0181_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, upd_dtm);` // [KK0181_UPD_DTM="更新年月日時分秒（電話番号予約）"] — Sets update timestamp on output |

**Block 9** — [SET] `Set next screen navigation metadata` (L997–L1001)

> Configures the shared common info bean with the next screen's ID and display name, enabling the framework to route to the correct screen after this method completes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW03201);` // [NEXT_SCREEN_ID="next screen ID"] [SCREEN_ID_KKW03201="KKW03201"] — Sets next screen ID |
| 2 | CALL | `commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW03201);` // [NEXT_SCREEN_NAME="next screen name"] [SCREEN_NAME_KKW03201="KKW03201"] — Sets next screen name |

**Block 10** — [EXEC] `Debug log DataBean state` (L1004–L1005)

> Dumps the current DataBean state to the log for debugging purposes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);` // JSYwebLog DataBean dump — Debug logging of the current bean state |

**Block 11** — [RETURN] `Return success` (L1007)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true;` // Returns true (異常終了:false, 正常終了:true) — Success indicator |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| 050番号 | Field | NTT Docomo 050-number — a portable phone number porting service in Japan. The 050 prefix is used for IP-telephony number portability, allowing users to retain their phone number when switching providers. |
| KKW03201SF | Screen ID | Customer Contract 050-Number Issuance Registration Screen — a web screen in the K-Opticom customer contract management system for registering and managing 050-number issuances. |
| JCCWebBusinessLogic | Class | Common web business logic base class that all screen logic classes extend. Provides access to shared beans, common utility methods, and framework-level services. |
| X31SDataBeanAccess | Class | X31 framework service DataBean access wrapper — used to read/write data bean fields via a message-passing API (`sendMessageString`). Part of the Fujitsu Futurity X31 web framework. |
| X31SDataBeanAccessArray | Class | Array wrapper for a collection of X31SDataBeanAccess objects — used to manage lists of DataBeans (e.g., rows in a table). |
| X31CWebConst | Constant Class | X31 framework constants for web operations. Key value: `DATABEAN_GET_VALUE` (retrieve field value) and `DATABEAN_SET_VALUE` (set field value). |
| TELNO_SEL | Constant | Telephone number selection value — the key used to retrieve the index of the row the user selected via radio button. |
| LIST_050_NO_INFO | Constant | 050-number information details — the key for the array DataBean containing all displayed 050-number entries. Each element is one row in the list table. |
| TELNO_02 | Constant | Telephone number — the key for the phone number field within each row's DataBean. |
| HRADSI_050_NO | Constant | Output 050 number — the field on the output form where the selected phone number is written. "HRADSI" likely stands for "output/transmission" (払出). |
| TELNO_RSV_NO_02 | Constant | Telephone number reservation number — the reservation callback key stored in the selected row. Used for follow-up reservation callbacks. |
| KK0181_TELNO_RSV_NO | Constant | Telephone number reservation number — the output form field for the reservation callback key. KK0181 is a component/sub-screen identifier. |
| ZM0181_UPD_DTM_02 | Constant | Update datetime (phone number reservation) — the last modification timestamp stored in the selected row. |
| KK0181_UPD_DTM | Constant | Update datetime (phone number reservation) — the output form field for the update timestamp. |
| NEXT_SCREEN_ID | Constant | Next screen ID — the common info field that tells the X31 framework which screen to navigate to next. |
| NEXT_SCREEN_NAME | Constant | Next screen name — the display name of the next screen, used for breadcrumbs or title display. |
| JKKScreenConst | Class | Screen ID/name constant definitions used across the K-Opticom web system. Defines valid screen IDs like `SCREEN_ID_KKW03201`. |
| JSYwebLog | Class | Web logging utility from the Fujitsu Futurity framework. Supports log levels like `DataBean_Dump` for dumping complete DataBean state to logs. |
| dumpDatabean() | Method | Inherited method that serializes the current DataBean state to a string representation for debugging. |
| 共有Bean | Field | Shared Bean — the common info DataBean that is accessible across all screens in the session, used for navigation and shared state. |
| サービスフォームBean | Field | Service Form Bean — the screen-specific DataBean holding input/output fields for the current screen (KKW03201SF). |
| JPCOnlineMessageConstant | Class | Online message constant definitions used for displaying success/error messages to the end user. |
| 払出 | Business term | Output/Issuance — refers to the "issued" or "output" 050 number on the registration screen. |
| 登録画面「選択」 | Business term | Registration screen "Selection" — the radio button selection action on the KKW03201 registration screen. |
| DataBean | Concept | A data transfer object in the X31 framework that encapsulates form field values and provides typed accessors via `sendMessageString`. |
