サポート > よくある質問と回答 > トラブルシューティング > アカウントのプリンシパルが変更されている
プリンシパルの追加や削除をしたところ、アカウントが持つプリンシパルが変更されてしまいました。
この現象は R5.7.1 以前の Wagby で発生します。
Wagby によるいったん開発を完了し、本番稼働します。 再び開発を行った際、権限(プリンシパル)を追加・削除した場合に次のような現象が発生します。
原因
Wagby 内部では、ユーザーアカウントは「juser」という内部モデルに格納されます。また、権限(プリンシパル)は「jprincipal」という内部モデルに格納されます。
ここで、jprincipal モデルの ID 値はビルドのタイミングで自動採番されます。これは "モデル名(英語)" のソート順で行われます。
juser は jprincipal の ID 値を参照する仕組みですが、新たに jprincipal が追加された場合、juser がもっている ID 値に変更がないにもかかわらず、jprincipal の ID 値が降り直されるため、「ずれ」が生じます。
図1 juser と jprincipal の関係
対応策
この問題に対応する方法は次のとおりです。
過去の定義ファイルが残っている場合
過去版の定義ファイルで生成したデータベースにおいて、$(DEVHOME)\env\appschema\acl.xml というファイルがあります。まずこれを退避します。 次に新しい定義ファイルでビルドを行い、同じ acl.xml を保存します。
新旧二つの acl.xml を弊社サポートまでお送りください。弊社にて「ずれ」を算出し、これを変更するための SQL スクリプトを作成致します。お手数ですが、同スクリプトを貴社運用データベースに適用してください。
過去の定義ファイルが残っていない場合
ご面倒をおかけしますが、貴社運用データベースにおける「juser」テーブルを直接、編集してください。具体的には同テーブル内の項目である jprincipalId に格納されている値を、新しい「jprincipal」テーブルの id 値と比較し、適切に変更します。
R5.7.1へのアップグレード
R5.7.1 より、データのインポート時に(以前の jprincipal テーブル情報を保持、参照しながら)適切な ID 値を割り当てる機能が追加されました。
次のケースにおいては R5.7.1 (以降)へのアップグレードが有効です。
- 現在、この問題は発生していないが、開発途中である。
- 現在、安定運用しているが、将来的に権限情報の追加/削除を伴う再開発を行う予定がある。
なお、すでに「ずれ」が発生した場合は、アップグレードを行っても、この問題を解決できるものではありません。 上記手順に従って「ずれ」を修正した上で、次回に同じ問題に遭遇しないためにアップグレードの適用をご検討ください。
