# Bone Flow #023 Flow Editor — TIME JOB 入力ガイド v1.0.0

Status: Draft Guide / #021 Shape v1.0.62対応

## 1. 目的

#023 Bone Flow Editorで #021 Shape の SCHEDULE_TRIGGER / JOB / JOBNET を入力・接続するときの操作基準です。
このガイドは仕様の代替ではありません。正式なデータ契約とPublic APIは #021 Shape が保持します。

## 2. Schedule Trigger

### 入力するデータ

- Schedule Type: daily / weekly / monthly / business-day / cron / once
- 起動方式: CLOCK / MANUAL / API / JOINT
- 月: 1-12
- 週（曜日）: SUN / MON / TUE / WED / THU / FRI / SAT
- 日: 1-31
- 時: 0-23
- 分: 0-59
- Calendar: 営業日カレンダー等の識別情報
- Enabled: 起動可否

### 起動方法

- CLOCK: Runtime/Flow Editor側が現在時刻を `matchesSchedule(date)` に渡して一致を確認し、一致時に `triggerSchedule({mode:"CLOCK", at:...})` を呼ぶ。
- MANUAL: ユーザー操作で `triggerSchedule({mode:"MANUAL"})` を呼ぶ。
- API: 外部APIイベントを受けて `triggerSchedule({mode:"API", payload:...})` を呼ぶ。
- JOINT: 外部Jointイベントを受けて `triggerSchedule({mode:"JOINT", payload:...})` を呼ぶ。

#021 Shape自身はsetInterval/timerを持ちません。起動判定を呼ぶ責務はRuntime/Flow Editor側です。

## 3. JOB

### Property

- 処理TYPE: SQL / BAT / JS / POWERSHELL / EXE / API / SHELL / ETL / FILE_TRANSFER / AI / CUSTOM
- IN受入TYPE: ANY / JSON / TEXT / FILE / SQL / COMMAND / JOB_REQUEST
- 実際の処理内容(TEXT): SQL文、BATコマンド、JS本文、PowerShell、API定義等を文字列として保持
- Job Status: WAIT / READY / RUNNING / SUCCESS / ERROR / HOLD / SKIPPED
- RUNNING色
- SUCCESS色
- ERROR色
- Enabled

#021は処理内容を実行しません。Flow Runtime/Handlerが `processType` と `processContent` を読んで実行します。

### IN

`setJobInput()` へ Bone最小構造 id / type / value を渡します。
IN受入TYPEがANY以外の場合、Bone.typeが一致しない入力は拒否します。
受入成功後はREADYになり、以前のresult/returnPortはクリアされます。

### 戻り値

- SUCCESS: status=SUCCESS、SUCCESS色、SUCCESS Port
- ERROR: status=ERROR、ERROR色、ERROR Port
- RUNNING: 処理中色

戻り値は `applyJobResult()` で反映します。

## 4. JOBNET

JOBと同じIN契約・処理TYPE・処理内容(TEXT)・状態色を持ちます。
ParallelはJOBNET内処理の並列可否を表します。個々のJOB実行はRuntime側の責務です。

## 5. Color / Gradient

#040 ColorPickerをCaller APIで使用します。
Shape Fill、JOB RUNNING / SUCCESS / ERRORは単色またはGRADIENT_V1（2色linear gradient）を選択できます。
Stroke/Text/Border Effectは各責務に応じた許可kindのみ使用します。

## 6. Flow Editorでの基本接続

1. SCHEDULE_TRIGGERを配置しSchedule元データと起動方式を設定。
2. OUTをJOBまたはJOBNETのINへ接続。
3. JOBの処理TYPE、IN受入TYPE、処理内容(TEXT)を設定。
4. SUCCESS Portを正常系の次Stepへ接続。
5. ERROR Portを異常系の次Stepへ接続。
6. RuntimeがINを渡し、処理結果をapplyJobResultへ戻す。
7. ShapeはState/色/returnPortを表示する。

## 7. Public API

### Namespace BoneShape

- list(category)
- find(type)
- output(value)
- validate(value)
- setJobInput(value, input)
- applyJobResult(value, result)
- matchesSchedule(value, date)
- triggerSchedule(value, context)
- createInstance(value, options)
- attachInstance(parentElement, value, options)
- getClassGuide()

### BoneShape.Component

- setValue / update
- getInput / getOutput / getState
- setJobInput
- applyJobResult
- matchesSchedule
- triggerSchedule
- attach / detach / destroy

## 8. 責務境界

- #021 Shape: Shape/Port/Property/契約/State/色/OUT表現
- #023 Flow Editor: 入力・配置・接続・編集
- Runtime/Handler: SQL/BAT/JS/API等の実処理
- #002 Joint: 接続
- #040 ColorPicker: 色選択
- #022 Hover Border Effect: 枠Effect
- #117 Animation: Shape要素Motion

## #021 v1.0.33 Class Node integration

Flow EditorからShape Nodeを生成する場合は `BoneShape.Node` を主要Classとして使用できる。Shape定義JSONをconstructorへ渡し、`render(parentElement)` でCanvas/hostへ描画する。既存 `BoneShape.Component` は互換APIとして利用可能。

入力ガイドの表示言語は #021 test UI の Property language（日本語 / English）と同じ表示方針とし、内部TYPE・enum値・JSON keyは変更しない。


## #023専用Nodeコード（#021 v1.0.62 Guide同期）

#023 Parserのgeneric TYPE Syntaxを使用する。

```text
[schedule:SCHEDULE_TRIGGER:スケジュール起点]
[job:JOB:ジョブ]
[jobnet:JOBNET:ジョブネット]
```

Shape画像は別素材を持たず、#021 Registryから実Runtime生成する。Class表示は `BoneShape.Node` を主要Classとして使用する。
