アクセス許可とワークフロー(SQLServerとOracle Database)

ここでは、外部データベースのSQLServerとOracle Databaseを使用した時に、テーブルに対しロール毎にアクセス許可を指定したり、ワークフロー機能を利用したりするために必要となる設定について記載します。

テーブル操作を許可する

アクセス許可やワークフローを実現するには、これらを管理するためのForguncy専用のフィールドやテーブルがデータベース側に必要になります。内部データベースの場合、ログインしたユーザーが属するロールの権限に応じて自動的に作成しますが、SQLServerとOracle Databaseの場合は、次の設定を行いその作成を許可させる必要があります。

1 外部DBに接続したリンクテーブルを作成します。

リンクテーブルの作成を参照して、リンクテーブルを作成します。このとき、データベースにログインするユーザーは、たとえばSQL Serverの場合であればデータベースロールがdb_ddladmin以上の権限を持っている必要があります。db_ddladminとは、データベース内のオブジェクト自身の追加/変更/削除(CREATE/ALTER/DROP)を行う権限を持つロールです。外部DB側でログインするユーザーにdb_ddladmin以上の権限を付与し、そのユーザーでログインするようにしてください。

2 構造変更の許可をチェックします。

画面左側のナビゲーションウィンドウから接続したテーブルをダブルクリックして開き、画面右側の「テーブル設定」にて「構造変更の許可」の「データベースや構造変更をForguncyに許可する」にチェックをします。
こうすることで、Forguncyからリンクテーブルに対し、アクセス許可などを管理するためのForguncy専用のフィールドを追加するといったことが行えるようになります。

3 ワークフローを行う場合は、「ワークフローを許可する」をチェックします。

もしワークフローを行う場合は、さらに「構造変更の許可」の下にある「ワークフロー...」をクリックします。次の画面が表示されるので「ワークフローを使用する」にチェックをします。

warning
..\..\Media\pict-warning.png

・データベースに接続するユーザーは、db_ddladmin以上のデータベース更新の権限を持っている必要があります。

・ワークフローで使用するテーブルには1つの主キーが必要です。

自動生成される外部データベースの項目

上記のとおりに「データベースや構造変更をForguncyに許可する」にチェックすると、Forguncyは接続した外部データベースに対して、以下のことを行います。なお、ワークフローを使用する場合は「ワークフローを使用する」にチェックが必要です。

・Forguncy内部で使用する次のテーブルを自動生成します。

テーブル名

説明

{テーブル名}_FGC_WHT
例:テーブル名がTable1の場合、”Table1_FGC_WHT”になります。

特定のテーブルのワークフローの履歴を記録します。ユーザーがWebサイトで最初にワークフロー機能を使用する時にテーブルを作成します。

フォーム認証:FGC_USD_<コンピューター名>
Windows認証:FGC_USD_W_<コンピューター名>
認証プロバイダー:FGC_USD_S_<コンピューター名>

Forguncy Builder(開発環境)の時に作成します。

フォーム認証:FGC_US_<コンピューター名>
Windows認証:FGC_US_W_<コンピューター名>
認証プロバイダー:FGC_US_S_<コンピューター名>

Forguncy Server(運用環境)の時に作成します。ワークフローとアクセス許可を行うユーザー情報を記録します。このテーブルは削除しないでください。

Forguncyは自動的に不要なテーブルを削除し、データ更新時にこのテーブルを再作成します。そのため、このテーブルを直接参照するようなビューやストアドプロシージャ-を作成することはサポートされないことに注意してください。

 

warning
..\..\Media\pict-warning.png

上記のテーブル名に使用されるコンピューター名に関する注意点:
・コンピューター名が長すぎる場合、データベースの種類に合わせてコンピューター名の一部は省略されます。Oracle Databaseの場合、テーブル名の最大文字数は28文字です。SQL Serverの場合、テーブル名の最大文字数は30文字です。
・Oracle Databaseの場合、Unicode文字はすべてアンダーバー「_」へと変換されます。
・空白文字や「?」などの特殊文字はすべてアンダーバー「_」へと変換されます。

・次のフィールドを自動で追加します。
一度追加したフィールドは、Forguncyから削除することはありません。 これにより、他のForguncyプロジェクトでもこれらのフィールドを使用できます。

フィールド名

役割

対象テーブルと
フィールドの生成タイミング

Forguncyの機能

FGC_Creator

作成者

接続した任意のテーブルに対し、ユーザーが最初にレコードの挿入や更新を行った時に生成

ワークフロー、アクセス許可、データ連結

FGC_CreateDate

作成日時

FGC_LastModifier

最終更新者

FGC_LastModifyDate

最終更新日

FGC_UpdateHelp

Forguncy内部で同時実行の競合を検査するために使用します

接続した任意のテーブルやForguncyで生成したテーブルに対して、最初にレコードの挿入や更新を行った時に生成

FGC_Rowversion

Forguncy内部で同時実行の競合を検査するために使用します

SQL Serverの場合、接続した任意のテーブルやForguncyで生成したテーブルに対して、最初にレコードの挿入や更新を行った時に生成されます。
Oracle Databaseでは自動では生成されません。手動にて同時実行制御のための列を作成し、[行のバージョン管理フィールド]として設定する必要があります。詳細については、 同時実行制御 を参照してください。

 FGC_AssignTo

Forguncy内部でワークフロー機能を使用する時に使用します

 接続した任意のテーブルとワークフロー履歴テーブル({テーブル名}_FGC_WHT)に対して最初にレコードの挿入や更新を行った時に生成

 ワークフロー

 FGC_State

Forguncy内部でワークフロー機能を使用する時に使用します

FGC_UserName

ユーザー名

FGC_UserInfoTableテーブル、あるいはFGC_DesignerUserInfoTableテーブルが生成された時に作成。
自動的にWebサイトのユーザーサービスから情報を取得しフィールド値として設定されます。

ワークフロー、アクセス許可

FGC_FullName

氏名

FGC_Email

メールアドレス

FGC_Role

ロール

FGC_OrganizationBelongsTo

 

FGC_RootOrganizationCanAccess

 

FGC_OrganizationQueryCache

 

FGC_OrganizationSuperior

上位組織メンバー