intra-mart Accel Platform 移行仕様書 初版 2015-12-01

4.5. メニュー

4.5.1. 移行対象概要

  1. メニュー
    • メニューを、サイトマップに移行します。
  2. アクセス権→認可
    • メニューの構成を、リソースに登録します。
    • 設定されている権限を、サブジェクトに登録します。
    • トップフォルダの権限を、ポリシーに設定します。
  3. ルーティング
    • メニューのURLから、ルーティング設定ファイルを生成します。

4.5.2. 移行処理概要

  1. テナント管理機能の差し替えによるセットアップ設定ファイルで、 intra-mart Accel Platform 標準のテーブルを作成する。
  2. アクセスセキュリティ移行ツールのセットアップ設定ファイルで、メニューXMLファイルをインポートする。

コラム

メニューの移行処理で各種サブジェクトを登録するため、「IM-共通マスタ 認可連携モジュール」が必要になります。

4.5.3. 制限事項の補足

  • メニュー

    • メニューIDはそのまま移行されるため、 intra-mart Accel Platform の標準メニューと重複する可能性があります。

      • intra-mart Accel Platform 標準のメニューIDと重なってしまう場合、移行元のデータを修正する必要があります。
  • リソース

    • 同一URLが存在する場合、2つ目以降は後ろにメニューIDを付与し、別リソースとして登録します。
  • ルーティング

    • ルーティングテーブルはメニューに定義されているパスのみ作成されます。

    • ルーティング設定ファイルは、メンテナンスしたうえで、ユーザモジュールに含めることを推奨します。

      注意

      war展開フォルダへの直接配置は非推奨です。
      再デプロイ時には、資材を再配置する必要があります。
    • 同一URLが存在する場合、mappingの設定が同一になります。

      • リソースIDはメニューIDが付加されるため異なりますが、同一mappingの設定は、後から設定されたものが有効となります。

        • メニュー(URL)に対する権限設定等が、最後に設定されたmappingのリソースに紐付くことになります。
  • テーマ

    • theme-no-theme-path-config 設定ファイルは自動では追加されません。

      • 必要に応じて設定の追加を行ってください

4.5.4. テナント環境セットアップ(テナント管理機能差し替え)処理内容

テナント管理機能のセットアップ設定ファイルを差し替え、以下の処理を行います。

4.5.4.1. テナントデータベースに対するDDL/DMLの発行

  1. 既存テーブル削除

    以下のテーブルをDROPします。

    1. b_m_menu_b
    2. b_m_menu_i
    3. b_m_menu_argument_b
    4. b_m_menu_department_b
    5. b_m_menu_post_b
    6. b_m_menu_public_group_b
    7. b_m_menu_role_b
  2. intra-mart Accel Platform 標準テーブル作成

    標準のDDLを使用します。

4.5.5. テナント環境セットアップ(アクセスセキュリティ移行ツール)処理内容

アクセスセキュリティ移行ツールのセットアップ設定ファイルを用意し、以下の処理を行います。

4.5.5.1. 拡張インポートの実行

  1. メニュー移行処理

    詳細はこの後の「メニュー移行処理仕様」を参照してください。

4.5.6. メニュー移行処理仕様

4.5.6.1. メニュー移行処理概要

  • version 7.2 でエクスポートしたメニューXMLファイルをベースに、 intra-mart Accel Platform の以下の資源を作成します。

    • メニュー:メニューグループカテゴリ、メニューグループ、メニューアイテム
    • 認可:リソース、リソースグループ、サブジェクト、サブジェクトグループ、ポリシー
    • ルーティングテーブル:jssp、service、servlet
  • 各クライアントタイプのごとに、サイトマップへ移行用のメニューグループを作成し、そのグループへデータを移行します。

  • 各メニューアイテムの権限は version 7.2 の情報から移行します。

    • メニューグループの権限は付与しません。(メニューグループのルートリソースを継承)
  • ルーティングテーブルは、メニューに定義されているパスのみ作成します。

  • メニューフォルダごとにリソースグループを作成します。

  • フォルダやアイテムに設定された権限をリソース(リソースグループ)に対して付与します。

4.5.6.2. メニュー

各クライアントタイプごとに、サイトマップに移行用のメニューグループを1つ作成し、そこに移行します。

  1. メニューグループカテゴリ

    • サイトマップを移行情報の登録先とします。

    • インポートファイル上に存在するクライアントタイプによって、必要であれば以下のルールでカテゴリを追加します。

      ID “im_sitemap_” + クライアントタイプ
      名称 “サイトマップ(” + クライアントタイプ + “)”
      更新 不可
      選択 不可
  2. メニューグループ

    • 各クライアントタイプ毎に、以下のルールで作成します。

      メニューグループカテゴリ “im_sitemap_” + クライアントタイプ
      メニューグループID “im_migrated_” + クライアントタイプ
      名称 “v72移行メニュー”
    • インポートデータ中に親のないフォルダ、アイテム(トップ)を見つけた場合、このグループの配下として登録します。

  3. メニューアイテム

    • フォルダはフォルダとして、ページはメニューアイテムとして、ツリー構成を維持して移行します。

      引数 インポートデータの同項目
      説明 インポートデータの同項目
      名称 インポートデータの同項目
      メニューID インポートデータの同項目
      画像ファイルパス インポートデータの同項目
      Method POST
      コピー元メニューID インポートデータのメニューID
      ソート番号 インポートデータの同項目
      データ種別 インポートデータの同項目
      URL インポートデータの同項目
      Iframe true
      ポップアップ false

      注意

      contents要素(IN, OUT)は移行できません。

4.5.6.3. 認可

メニューと同じ構成でリソースを作成し、アクセス権が再設定しやすいようにサブジェクトを登録しつつ、トップに対してポリシーを設定します。

  1. リソースグループ

    • インポートデータ中に親のないフォルダ、アイテム(トップ)を見つけた場合、「http-services(画面・処理)」グループの配下として登録します。

    • メニューフォルダごとにリソースグループを作成します。

      リソースグループID メニューID
      名称 メニュー名称
    • メニューのフォルダ構成同様にリソースグループを構成します。

    • フォルダに設定された権限をリソースグループに対して付与します。

  2. リソース

    • メニューアイテムを、リソースとして登録します。

      リソースID メニューID
      名称 メニュー名称
      URI
      “service://” + URLから先頭の”/”を削除した文字列
      URLが取得できない場合、”service://menu_migration/” + メニューID
      同じURLが複数出てきた場合、2つ目以降は上記で生成したURIの後ろに「”/” + メニューID」を付加
  3. サブジェクト、サブジェクトグループ

    • インポートデータに設定されている権限から単体のサブジェクト式をそれぞれ作成します。

    コラム

    version 7.2 で設定可能な権限

    • ロール
    • 組織
    • 役職
    • パブリックグループ

    ※ version 7.2 ではパブリックグループの「役割」によるアクセス権設定はありません。

    ※ 付加条件は以下のように取り扱います。

    ロール なし
    組織 一致
    役職 一致
    パブリックグループ 一致
  4. ポリシー

    • intra-mart Accel Platform のバージョンにより、最終的に設定されるポリシーが変わります。
      例として、以下の権限が設定されているメニューを移行した場合の動作を説明します。
      ../../_images/access_security_1.png
      • intra-mart Accel Platform 2013 Autumn(Eden) 以降のバージョンに移行する場合

        • 最終的に、以下のような権限設定が行われます。

          ../../_images/access_security_3.png
        • メニューグループ直下(トップ)のフォルダ、または、アイテムの場合、相当するリソース(またはリソースグループ)に対して、指定通りに「許可(permit)」を設定します。

        • トップ以外(配下のフォルダ、メニュー)の場合、相当するリソース(またはリソースグループ)に対して、親と自身の権限によって「禁止(deny)」を設定します。

          親の権限 自身の権限 設定される権限
          あり あり 未設定(許可)
          あり なし 禁止
          なし あり 未設定(禁止)
          なし なし 未設定(禁止)

        注意

        intra-mart Accel Platform 2013 Summer(Damask) 以前のバージョンですでに移行作業を行っている場合は、権限設定内容は変わりません。
      • intra-mart Accel Platform 2013 Summer(Damask) 以前のバージョンに移行する場合

        • 最終的に、以下のような権限設定が行われます。

          ../../_images/access_security_2.png
        • メニューグループ直下(トップ)のフォルダ、または、アイテムの場合、相当するリソース(またはリソースグループ)に対して、指定通りに「許可(permit)」を設定します。

        • トップ以外(配下のフォルダ、メニュー)の場合、何も設定しません。

    コラム

    上記のような方針にしている理由は、権限のデータをそのまま転記する形では元のようなアクセス制限を行えないためです。
    したがって、移行後は意図した権限設定になるよう認可を再設定する必要があります。
    • version 7.2 のメニューでは、上位のフォルダの権限がない場合、下位のアイテムを閲覧することができません。

      • 上位の権限情報から評価されていき、結果的にはAND条件となります。
    • intra-mart Accel Platform の認可では、フォルダには認可設定が無く、(下位の)アイテム自体の権限で評価されます。

      • 権限のデータをそのまま転記する形では、元のようなアクセス制限を行えません。

4.5.6.4. ルーティングテーブル

メニューXMLファイルに定義されているURLに対し、ルーティングテーブルを作成します。

  • メニューアイテムでないデータや、外部ページ(contents要素が”out”)のデータは対象外とします。

    コラム

    外部ページが設定されたメニューの表示・非表示に関する設定方法は、以下を参照してください。

  • URL(path)をもとに、どのルーティングテーブルに乗せるかを判断します。

    元のURL ルーティングテーブル
    *.jssp routing-jssp-config
    *.service routing-service-config
    その他 routing-servlet-config
  • URLから、ルーティングテーブルに乗せる値を分析します。

    • jssp (スクリプト開発モデル)
      • URLから、”.jssp” を除いた値を page に設定します。

        例) foo/bar.jssp -> page=”foo/bar”

    • service (JavaEE開発モデル)
      • URLから、アプリケーションID と サービスID を解析して、application と service に設定します。

        例) foo-bar.service -> application=”foo”, service=”bar”

    • servlet (サーブレット)
      • URL をそのまま、servlet に設定します。

        例) foo/bar -> servlet=”foo/bar”

  • リソースURI はメニュー(リソース)の設定と同じです。

4.5.7. (付録)参考資料

4.5.7.1. 内部的な構造

  import export
menu.xml ─┬(1)→ Menu Group Category  
   ├(2)→ Menu Group / Menu Item  
   ├(3)→ ResourceGroup / Resource  
   ├(4)→ SubjectGroup / Subject  
   ├(5)→ Policy  
   └(6)→ Routing Info ─┬→ routing-jssp-config
     ├→ routing-service-config
     └→ routing-servlet-config
  • メニューに関する移行処理の実装は、version 7.2 メニューXMLファイルを解釈して各テーブルに登録するインポータ、登録された情報からルーティングテーブルを出力するエクスポータで構成されています。

  • インポータは、メニュー、および、認可の情報を直接 intra-mart Accel Platform のDBに登録します。

    • ルーティング情報に関しては中間情報を移行処理専用のファイル(Storage)に出力します。
  • エクスポータは、上記の中間情報から必要なルーティングテーブルの設定ファイルを出力します。

    • これはStorage上に出力するので、実際に利用するためには WEB-INF/conf 配下に配置後、再起動する必要があります。
  • 中間情報ファイルは、正常終了時に削除します。

4.5.7.2. クライアントタイプ

  • クライアントタイプはメニューツリーの先頭のノード(親を持たないフォルダ)のクライアントタイプのみチェックし、どのカテゴリに属させるかを決めます。
  • ルーティングテーブルには特にクライアントタイプを設定しません。