ワークフローを使用している場合、node_access.gidはどのデータベースtable.fieldにマップしますか?それはロールを表しますか、それともワークフローsid(状態ID)を表しますか?
例:
+---------+------+-----------------+------------+--------------+--------------+
| nid | gid | realm | grant_view | grant_update | grant_delete |
+---------+------+-----------------+------------+--------------+--------------+
| 1234561 | 4 | workflow_access | 1 | 1 | 1 |
| 1234562 | 5 | workflow_access | 1 | 1 | 1 |
| 1234563 | 6 | workflow_access | 1 | 1 | 1 |
| 1234564 | 7 | workflow_access | 1 | 0 | 0 |
+---------+------+-----------------+------------+--------------+--------------+
編集:@Berdirの優れた応答の後で、node_access.gid、workflow_access.rid、およびrole.rid間の関係を分析するために、以下のクエリを書きました:
# Establish relationship between workflow, roles, gids, etc.
SELECT
r.name AS role,
r.rid AS w_role_rid,
wa.rid AS and_workflow_access_rid,
ws.state AS has_access_to_state,
wa.sid AS with_state_sid,
IF(ws.status=1,'YES','NO') AS which_is_enabled,
wa.grant_view, wa.grant_update, wa.grant_delete
FROM workflow_access wa
LEFT JOIN role r ON wa.rid = r.rid
LEFT JOIN workflow_states ws ON wa.sid = ws.sid
ORDER BY r.rid, wa.sid
誰かが私のクエリとの不一致に気づいたら、コメントしてください。
source (関数workflow_access_node_access_records())を見ると、ロールIDであるridであることがわかります。さらに、特定のユーザーのgidを返すworkflow_access_node_grants()にも定義されています。そして、それは「workflow_access」のロールIDと「workflow_access_owner」のユーザーIDです。
{workflow_access}テーブルもあります。これには、各ワークフロー状態に対してどのロールがどの権限を持つかに関する情報が含まれています。これに基づいて、各ノードのアクセス許可が作成されます。