Step
Step は、明確な順序を持つ長いタスクを複数の段階に分割します。各ステップにはタイトル、状態、独自のコンテンツ領域があり、Form、入力、説明、操作ボタンを配置できます。
このガイドでは、次の設定方法を説明します。
- Step コンテナと複数の StepItem を追加する
- 横方向、縦方向、ナビゲーション、コンパクト表示を設定する
- 既定の番号と自動状態アイコンを使う、または一貫した業務アイコンを設定する
- 各ステップにフォームとボタンを配置する
- コンポーネント関数で次へ、戻る、ジャンプ、リセットを実行する
- 切り替え前に Form を検証し、
onChangeで現在のステップを読み取る
Step、Tab、Progress の役割は異なります。Step は順番に完了すべきタスク、Tab は同じ対象に関する並列コンテンツ、Progress は各段階のページ内容を持たない進捗率の表示に使用します。
1. サンプル:キャンペーン公開ウィザード
Spark Sample の Step ページは、4 段階のキャンペーン公開ウィザードです。
| ステップ | 内容 | 主なポイント |
|---|---|---|
| Campaign details | キャンペーン名、担当者、公開日、概要 | 2 列 Form、必須検証、全行 TextArea |
| Audience & budget | 対象者、チャネル、予算、コンバージョン目標 | Back、Next、数値フィールド |
| Review | 前 2 ステップの読み取り専用サマリー | ステップ間で共有するページ状態と送信通知 |
| Submitted | キャンペーン番号と完了メッセージ | 完了状態とウィザードのリセット |
このサンプルはバックエンド API に依存しません。ボタンは Step のコンポーネント API でステップを切り替えるため、構造と Interaction を直接確認できます。実データを送信する場合は、Review のボタン Interaction に Send Request を追加します。
2. Step コンテナを追加する
- 対象ページを Page Designer で開きます。
- コンポーネントパレットの Containers を展開します。
- Step を Screen またはコンテナを受け入れる領域へドラッグします。
- Step を選択し、Steps に StepItem を追加します。
- 各 StepItem を選択し、Title を入力します。
- StepItem のコンテンツ領域に Form、Panel、入力を追加します。
Step と StepItem は 2 階層です。
Step
├── Campaign details
│ └── Form + Next button
├── Audience & budget
│ └── Form + Back / Next buttons
├── Review
│ └── Read-only Form + Back / Submit buttons
└── Submitted
└── Result Form + Reset button
子要素リストはドラッグで並べ替えられます。StepItem の順序を変えると、番号と前後移動の順序も変わります。
3. Step コンテナを設定する
外側の Step では次を設定できます。
| プロパティ | 値 | 説明 |
|---|---|---|
| Initial Step | 1 から始まる整数 | 初回表示するステップ。範囲外の値は先頭または末尾に補正 |
| Direction | horizontal、vertical | ステップヘッダーを横または縦に配置 |
| Step Style | default、navigation、inline | 標準、ナビゲーション、コンパクトなインライン表示 |
| Marker Size | small、medium、large | 全ステップの番号またはアイコンの大きさ。既定は Medium |
| Label Placement | horizontal、vertical | タイトルをアイコンの右または下に配置 |
| Progress Dots | オン / オフ | 番号やアイコンを点に置換。オンではタイトルを縦配置 |
| Allow Step Click | オン / オフ | 利用者がヘッダーをクリックして切り替えられるか |
| Show Step Content | オン / オフ | 現在の StepItem のコンテンツを表示するか |
| Responsive | オン / オフ | 狭い画面で読みやすい縦レイアウトへ切り替えるか |
| Current Step Status | process、wait、finish、error | 現在ステップの既定状態 |
| Current Step Progress | 0~100 | 現在ステップ内の任意進捗。主に Default + Process で使用 |
3.1 Step Style
- Default:標準的なフォームウィザード向けで、状態と順序が最も明確です。
- Navigation:ヘッダーをプロセスナビゲーションとして見せ、入力済みステップへ戻れるフローに適します。
- Inline:短いタイトルと限られたスペース向けです。Vertical Direction では読みにくい組み合わせを避けるため Default を使用します。
順番どおりの完了が必須なら Allow Step Click をオフにし、コンテンツ領域の Back、Next、Submit だけを使用します。
4. StepItem を設定する
| プロパティ | 説明 |
|---|---|
| Title | 必須の主タイトル。2~5 語を推奨 |
| Subtitle | 段階名、所要時間、担当者などの補助情報 |
| Description | 現在ステップの短い説明 |
| Status | auto、wait、process、finish、error |
| Disabled | クリックおよびコンポーネント関数での移動を禁止 |
| Icon | 任意。共通 Icon 選択器で前景色/背景色付きシステムアイコンを選ぶか、画像をアップロード |
Status が auto の場合、現在位置から自動判定します。前のステップは Finish、後のステップは Wait、現在項目は Step の Current Step Status を使用します。継続的なエラー、待機、特別な完了状態を示す場合だけ上書きします。
4.1 番号、状態、業務アイコン
Icon を設定しない場合は 1、2、3… を表示します。フォームウィザードや承認フローではこの方式を推奨します。完了後は番号が自動的にチェックへ変わり、現在、待機、エラーも自動的に適切な色とマーカーで表示されます。
User、Document、Payment、Review、Send、Milestone など、業務段階の識別に明確に役立つ場合だけ Icon を設定します。グループ全体で統一し、番号とアイコンを混在させないでください。Icon 選択器では検索、選択プレビュー、前景色、背景色、背景なしを利用でき、プロパティパネルには現在のアイコン名と識別子が表示されます。
Marker Size は外側の Step で一括管理します。異なるサイズの画像をアップロードして単一ステップを強調しないでください。
デザイナーで別のステップを編集する
Design Mode ではステップバーの番号またはタイトルをクリックして編集対象を切り替えます。下のコンテンツ領域と右側のプロパティパネルは、その StepItem の Form、Panel、入力、ボタンへ同期します。
Allow Step Click と StepItem の Disabled は保存後の実行動作を制御し、デザイナーでの編集を妨げません。ページ構造の Steps → StepItem → Form を展開して、後続ステップの Form やフィールドを直接選択することもできます。
Disabled は条件がまだ満たされていないステップに使用します。Next と Previous は自動的にスキップします。現在の利用者にまったく適用されない場合は、Disabled ではなく共通表示条件で非表示にします。
5. ステップ内に Form を構成する
StepItem に Form を追加してから、フィールドと ButtonSet を配置します。
- Form で Controls Per Row、Layout、Label Alignment、ラベル/内容比率を一括管理します。
- フィールド検証は Form が担当し、Step はフロー切り替えだけを担当します。
- 各中間ステップに明確な Next を置き、2 番目以降には Back も置きます。
- 最後の業務ステップを Review と Submit にし、送信後は独立した結果ステップへ進みます。
サンプルは Controls Per Row = 2、Label 4 / Content 8 を使用します。Campaign summary は Display Full Row を有効にしても Label が 4 列を占め、Launch date と揃います。Content は行の残り幅を自動的に使用します。
複数ステップで同じ値を読む場合は同じフィールド Name を使用します。編集フィールドと Review の読み取り専用フィールドを campaignName にすると、最初のステップで入力した最新値を表示できます。
6. 次へ、戻る、リセットを設定する
| 関数 | パラメーター | 動作 |
|---|---|---|
nextStep | なし | Disabled をスキップして次の利用可能なステップへ進む |
previousStep | なし | Disabled をスキップして前の利用可能なステップへ戻る |
goToStep | stepNumber | 指定ステップへ移動。番号は 1 から開始 |
resetSteps | なし | Initial Step へ戻る |
最初の Next ボタンでは次の順に設定します。
- ボタンを選択し Interaction を開きます。
onClickの先頭に Trigger Form Validation を追加し、Form にcampaign_details_formを指定します。- Component API アクションを追加します。
- Target Component に
campaign_stepsを選択します。 - Function に
nextStepを選択します。
アクションは上から順に実行されます。検証に失敗すると nextStep は実行されず、成功した場合だけ次へ進みます。Back は previousStep、完了ページの “Create another campaign” は resetSteps を呼び出します。
7. ステップ切り替え Interaction
Step には 2 層の Interaction があります。
- 外側 Step の
onChange - 個別 StepItem の
onClick
切り替え前に対象ステップが step コンテキストへ書き込まれます。
step.id
step.index
step.number
step.previousIndex
step.previousNumber
step.name
step.description
step.status
index は式計算用に 0 から、number はパネルと利用者表示に合わせて 1 から始まります。
利用者がヘッダーをクリックすると StepItem の onClick が先に実行され、実際の変更後に外側 Step の onChange が実行されます。Next、Previous、Go to、Reset による切り替えでは外側 onChange だけが実行されます。Disabled ステップは切り替わらず、Interaction も実行しません。
Step の onChange に次の Toast を追加できます。
Now viewing step [[step.number]]: [[step.name]]
8. シナリオ 1:バックエンド検証に失敗したら現在のステップに留まる
Step Validation Gate は 2 ステップのサンプルです。初期値 TRY-AGAIN はバックエンドで拒否され、ステップ 1 のままになります。APPROVE-2026 に修正すると成功し、その後にだけステップ 2 へ進みます。
- Submit request と Accepted を作成し、Initial Step を
1、Allow Step Click をオフにします。 validation_gate_formにrequestTitleとapprovalCodeを追加します。- Submit and continue の先頭に Submit Form を置き、Custom URL に
/spark/api/sample/step/validation-gateを設定します。 - その後に
validation_gate_steps.nextStepを追加します。
HTTP エラーまたは success: false でアクションチェーンが中断されるため、nextStep は実行されません。送信より前にステップを切り替えないでください。
if (!StringUtils.equals("APPROVE-2026", StringUtils.trim(request.getApprovalCode()))) {
throw new LatticeRuntimeException(Message.code("SPARK-SAMPLE-STEP-0003"));
}
完全な実装は StepWorkflowSampleController、StepWorkflowSampleService、step-validation-gate-page.json にあります。
9. シナリオ 2:バックエンド状態から現在の担当者のステップを開く
Step Handoff は 2 人の順次処理を表します。Avery Chen がステップ 1 を完了し、Morgan Lee がステップ 2 を担当します。Page onLoad がワークフロー状態を読み、ページをステップ 2 で開きます。Allow Step Click をオンにすることで、読み取り専用のステップ 1 へ戻って確認できます。
- Requester submission と Manager review を作成します。Initial Step は安全なフォールバックとして
1のままにし、Allow Step Click をオン、完了済みの最初の Form を読み取り専用にします。 - Page
onLoadでcaseId=CAM-2048を付けてGET /spark/api/sample/step/handoff/statusを送ります。 activeStepをworkflow.activeStepにバインドします。- 続いて
handoff_steps.goToStepを追加し、stepNumberをworkflow.activeStepにバインドします。
Page onLoad
├── Send Request: GET /spark/api/sample/step/handoff/status
│ └── activeStep → workflow.activeStep
└── handoff_steps.goToStep([[workflow.activeStep]])
onLoad が完了するまでローディング状態を維持するため、ステップ 1 から 2 へのちらつきがありません。失敗時は Initial Step を維持します。バックエンドはログインユーザーの状態と権限を判定してください。activeStep は表示位置であり、認可情報ではありません。
10. バックエンドへ送信する
実業務では Review の Submit ボタンを次の順に設定します。
- Trigger Form Validation
- Send Request または Submit Form
- 成功 Toast
nextStepで完了ページへ進む
ページリクエストには現在の環境とレンダリングモードが自動的に付与されます。Step ごとに Header を追加する必要はありません。詳細はページリクエストコンテキストとバックエンドデバッグを参照してください。
Send Request が失敗した場合は後続アクションを停止し、現在ステップに留めて再試行できるようにします。結果を待たずに完了ページへ進まないでください。
11. Spark Sample を再現する
- Step を追加し、Horizontal、Default、Vertical Label、Responsive、Allow Step Click を設定します。
- Marker Size を Medium にし、既定番号を使用します。
- Campaign details、Audience & budget、Review、Submitted の 4 StepItem を Icon なしで追加します。
- 最初の 3 ステップに 2 列 Horizontal Form、最後に 1 列の読み取り専用 Form を追加します。
- 最初の 2 つの Next は Form 検証後に
nextStepを呼び出します。 - 2、3 番目の Back は
previousStepを呼び出します。 - Review の Submit は成功 Toast の後に
nextStepを呼び出します。 - Submitted のリセットは
resetStepsを呼び出します。 - 保存し、Preview と実行時でフロー全体を確認します。
高度な 2 つのシナリオは step-validation-gate-page.json と step-handoff-page.json を参照してください。
12. トラブルシューティング
12.1 Next をクリックしても変わらない
- Target Component が外側 Step か確認します。
- Function が
nextStepか確認します。 - 後続がすべて Disabled または非表示でないか確認します。
- Trigger Form Validation が空の必須項目で停止していないか確認します。
- ページが保存済みで、実行時が現在の
versionIdを使用しているか確認します。
12.2 ヘッダーをクリックしても変わらない
Allow Step Click がオンで、対象 StepItem が Disabled でないことを確認します。直接クリックを無効にした管理フローでは、コンテンツ領域のボタンを使用します。
12.3 Review に前の入力値が表示されない
編集フィールドと Review の読み取り専用フィールドに同じ安定した Name を使用します。Display Name は表示タイトルだけを変更し、ページ状態を共有しません。
12.4 状態が想定と異なる
通常は StepItem Status を auto にします。手動の Finish や Error は自動判定を上書きします。Auto に戻すと現在ステップへ追従します。
12.5 バックエンドが返したステップでページが開かない
Page onLoad、workflow.activeStep へのレスポンスバインド、goToStep.stepNumber、および 1 始まりの整数値を確認してください。Send Request の失敗時は意図的にジャンプを中断します。
12.6 モバイルでステップが詰まる
Responsive をオンにし、長い Title、Subtitle、Description を避けます。それでも読みにくい場合は Vertical Direction にするか表示テキストを減らします。
13. 設計上の推奨事項
- 1 つのウィザードは 3~7 ステップにします。7 を超える場合はページやグループを分けます。
- Details、Audience、Review のような結果または業務段階をタイトルにし、長文を避けます。
- Next は “Next: Review” のように遷移先を示すと “Continue” より理解しやすくなります。
- スキップ不可なら Allow Step Click をオフにし、検証成功後だけ進めます。
- 送信前に Review、送信後に独立した完了ページを用意し、短い Toast だけに依存しません。
- Error、Disabled、完了状態には色だけでなく読める説明を付けます。