※アフィリエイト広告を利用しています。

【intra-mart】Forma標準アプリでコピー新規登録を再現する手順

intra-mart

はじめに

ワークフローでは標準ボタンとして実装されているコピー新規申請。Forma標準アプリにはツールキットには実装されておらず、どうしても実現したかったので業務ロジックで実現した手順をまとめます。

構築時のポイント

  • フォームURLを更新または参照から登録フォームに置き換える
  • 初期表示処理で参照元情報をロジックデザイナーで取得する

構築手順

処理概要

  • コピー新規ボタン(イベントボタン)をクリック
  • 登録フォームへ遷移
  • 参照元からのフォーム遷移結果を条件に初期処理で参照元データを全取得・マッピング

参照元データの前提条件(登録処理時の前提条件)

登録処理時にimfr_sd_insert_idを画面項目として保持させます。保持させるならテキスト項目でもOKですが、本例では隠し項目で設定したとします。

コピー新規作成はボタン(イベント)に対して、業務ロジックで実現しますので、イベントボタン(以降、コピー新規ボタンとします。)を配置します。

コピー新規ボタンへのアクション設定

カスタムスクリプトで以下のスクリプトを以下コーディングします。ここでのポイントはコピー新規を実現するために、編集画面(参照画面)→登録画面に遷移させた後、登録処理時に参照元データを取得する業務ロジックが実行されないように(されても参照元がないので何も設定されませんが)、遷移したことを条件に初期表示処理が実行されるように本例ではhiddenFormChangeを活用します。

/* * 登録フォームへ遷移するスクリプト。
 * 遷移した登録フォームに参照元のimfr_sd_insert_idをパラメータとして付与する。
 * コピー元から遷移したことを示すためにフラグをセットする
 */
windows.location.href = "./forma/normal/view/regist_application_view/%application_id%?imfr_callback_path=forma/normal/view/list_view/%application_id%"
+ "&hiddenFormChange=1"
+ "&hidden_insert_id=" + formaItems.product_72_hidden.getItemData.%hidden_insert_id%();

※以下例のとおり、hiddenFormChange=”1″なら実行するように(コピー新規ボタンで遷移してきたことを判定する)条件設定をします。

外部連携で後述するロジックデザイナーで作成した業務ロジックを設定します。

業務ロジックの作成・マッピング

業務ロジックは案件次第ですので、概要だけをまとめます。

  • SQL定義でForma標準で作成されるテーブルのキーである「imfr_sd_insert_id」をカスタムスクリプトで設定した「imfr_sd_insert_id」を検索条件として、メインフォームテーブル、明細テーブル(あれば)を取得する
  • クエリの取得結果を出力にマッピングする
  • 出力結果を各種画面項目にマッピングする

まとめ

以上で、『【intra-mart】Forma標準アプリでコピー新規登録を再現する手順』でした。

抑えるべきポイントは以下です。

  • カスタムスクリプトで画面遷移は必須
  • 遷移元であるimfr_sd_insert_idをコピー新規後の遷移先である登録画面受け渡す
  • 初期処理で遷移元のデータをアクション処理ですべて取得し、画面マッピングする
タイトルとURLをコピーしました