mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-10 03:23:13 +00:00
[DS-968] XML configurable workflow
git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@6526 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
243
dspace/etc/postgres/xmlworkflow/workflow_migration.sql
Normal file
243
dspace/etc/postgres/xmlworkflow/workflow_migration.sql
Normal file
@@ -0,0 +1,243 @@
|
||||
-- Convert workflow groups:
|
||||
INSERT INTO xmlwf_collectionrole (role_id, group_id, collection_id)
|
||||
SELECT
|
||||
'reviewer' AS role_id,
|
||||
eperson_group_id AS group_id,
|
||||
replace(replace(name, 'COLLECTION_', ''), '_WORKFLOW_STEP_1', '')::INTEGER AS collection_id
|
||||
FROM epersongroup
|
||||
WHERE name LIKE 'COLLECTION_%_WORKFLOW_STEP_1';
|
||||
|
||||
INSERT INTO xmlwf_collectionrole (role_id, group_id, collection_id)
|
||||
SELECT
|
||||
'editor' AS role_id,
|
||||
eperson_group_id AS group_id,
|
||||
replace(replace(name, 'COLLECTION_', ''), '_WORKFLOW_STEP_2', '')::INTEGER AS collection_id
|
||||
FROM epersongroup
|
||||
WHERE name LIKE 'COLLECTION_%_WORKFLOW_STEP_2';
|
||||
|
||||
INSERT INTO xmlwf_collectionrole (role_id, group_id, collection_id)
|
||||
SELECT
|
||||
'finaleditor' AS role_id,
|
||||
eperson_group_id AS group_id,
|
||||
replace(replace(name, 'COLLECTION_', ''), '_WORKFLOW_STEP_3', '')::INTEGER AS collection_id
|
||||
FROM epersongroup
|
||||
WHERE name LIKE 'COLLECTION_%_WORKFLOW_STEP_3';
|
||||
|
||||
|
||||
-- Migrate workflow items
|
||||
INSERT INTO xmlwf_workflowitem (workflowitem_id, item_id, collection_id, multiple_titles, published_before, multiple_files)
|
||||
SELECT
|
||||
workflow_id AS workflowitem_id,
|
||||
item_id,
|
||||
collection_id,
|
||||
multiple_titles,
|
||||
published_before,
|
||||
multiple_files
|
||||
FROM workflowitem;
|
||||
|
||||
|
||||
-- Migrate claimed tasks
|
||||
INSERT INTO xmlwf_claimtask (workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
SELECT
|
||||
workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'reviewstep' AS step_id,
|
||||
'reviewaction' AS action_id,
|
||||
owner AS owner_id
|
||||
FROM workflowitem WHERE owner IS NOT NULL AND state = 2;
|
||||
|
||||
INSERT INTO xmlwf_claimtask (workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
SELECT
|
||||
workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'editstep' AS step_id,
|
||||
'editaction' AS action_id,
|
||||
owner AS owner_id
|
||||
FROM workflowitem WHERE owner IS NOT NULL AND state = 4;
|
||||
|
||||
INSERT INTO xmlwf_claimtask (workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
SELECT
|
||||
workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'finaleditstep' AS step_id,
|
||||
'finaleditaction' AS action_id,
|
||||
owner AS owner_id
|
||||
FROM workflowitem WHERE owner IS NOT NULL AND state = 6;
|
||||
|
||||
|
||||
-- Migrate pooled tasks
|
||||
INSERT INTO xmlwf_pooltask (workflowitem_id, workflow_id, step_id, action_id, group_id)
|
||||
SELECT
|
||||
workflowitem.workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'reviewstep' AS step_id,
|
||||
'claimaction' AS action_id,
|
||||
xmlwf_collectionrole.group_id AS group_id
|
||||
FROM workflowitem INNER JOIN xmlwf_collectionrole ON workflowitem.collection_id = xmlwf_collectionrole.collection_id
|
||||
WHERE workflowitem.owner IS NULL AND workflowitem.state = 1 AND xmlwf_collectionrole.role_id = 'reviewer';
|
||||
|
||||
INSERT INTO xmlwf_pooltask (workflowitem_id, workflow_id, step_id, action_id, group_id)
|
||||
SELECT
|
||||
workflowitem.workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'editstep' AS step_id,
|
||||
'claimaction' AS action_id,
|
||||
xmlwf_collectionrole.group_id AS group_id
|
||||
FROM workflowitem INNER JOIN xmlwf_collectionrole ON workflowitem.collection_id = xmlwf_collectionrole.collection_id
|
||||
WHERE workflowitem.owner IS NULL AND workflowitem.state = 3 AND xmlwf_collectionrole.role_id = 'editor';
|
||||
|
||||
INSERT INTO xmlwf_pooltask (workflowitem_id, workflow_id, step_id, action_id, group_id)
|
||||
SELECT
|
||||
workflowitem.workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'finaleditstep' AS step_id,
|
||||
'claimaction' AS action_id,
|
||||
xmlwf_collectionrole.group_id AS group_id
|
||||
FROM workflowitem INNER JOIN xmlwf_collectionrole ON workflowitem.collection_id = xmlwf_collectionrole.collection_id
|
||||
WHERE workflowitem.owner IS NULL AND workflowitem.state = 5 AND xmlwf_collectionrole.role_id = 'finaleditor';
|
||||
|
||||
|
||||
-- Create policies for claimtasks
|
||||
-- public static final int BITSTREAM = 0;
|
||||
-- public static final int BUNDLE = 1;
|
||||
-- public static final int ITEM = 2;
|
||||
|
||||
-- public static final int READ = 0;
|
||||
-- public static final int WRITE = 1;
|
||||
-- public static final int DELETE = 2;
|
||||
-- public static final int ADD = 3;
|
||||
-- public static final int REMOVE = 4;
|
||||
-- Item
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, eperson_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
2 AS resource_type_id,
|
||||
xmlwf_workflowitem.item_id AS resource_id,
|
||||
temptable.action_id AS action_id,
|
||||
xmlwf_claimtask.owner_id AS eperson_id
|
||||
FROM (xmlwf_workflowitem INNER JOIN xmlwf_claimtask ON xmlwf_workflowitem.workflowitem_id = xmlwf_claimtask.workflowitem_id),
|
||||
(VALUES (0), (1), (2), (3), (4)) AS temptable(action_id);
|
||||
|
||||
-- Bundles
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, eperson_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
1 AS resource_type_id,
|
||||
item2bundle.bundle_id AS resource_id,
|
||||
temptable.action_id AS action_id,
|
||||
xmlwf_claimtask.owner_id AS eperson_id
|
||||
FROM
|
||||
(
|
||||
(xmlwf_workflowitem INNER JOIN xmlwf_claimtask ON xmlwf_workflowitem.workflowitem_id = xmlwf_claimtask.workflowitem_id)
|
||||
INNER JOIN item2bundle ON xmlwf_workflowitem.item_id = item2bundle.item_id
|
||||
), (VALUES (0), (1), (2), (3), (4)) AS temptable(action_id);
|
||||
|
||||
-- Bitstreams
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, eperson_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
0 AS resource_type_id,
|
||||
bundle2bitstream.bitstream_id AS resource_id,
|
||||
temptable.action_id AS action_id,
|
||||
xmlwf_claimtask.owner_id AS eperson_id
|
||||
FROM
|
||||
(
|
||||
((xmlwf_workflowitem INNER JOIN xmlwf_claimtask ON xmlwf_workflowitem.workflowitem_id = xmlwf_claimtask.workflowitem_id)
|
||||
INNER JOIN item2bundle ON xmlwf_workflowitem.item_id = item2bundle.item_id)
|
||||
INNER JOIN bundle2bitstream ON item2bundle.bundle_id = bundle2bitstream.bundle_id
|
||||
), (VALUES (0), (1), (2), (3), (4)) AS temptable(action_id);
|
||||
|
||||
|
||||
-- Create policies for pooled tasks
|
||||
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, epersongroup_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
2 AS resource_type_id,
|
||||
xmlwf_workflowitem.item_id AS resource_id,
|
||||
temptable.action_id AS action_id,
|
||||
xmlwf_pooltask.group_id AS epersongroup_id
|
||||
FROM (xmlwf_workflowitem INNER JOIN xmlwf_pooltask ON xmlwf_workflowitem.workflowitem_id = xmlwf_pooltask.workflowitem_id),
|
||||
(VALUES (0), (1), (2), (3), (4)) AS temptable(action_id);
|
||||
|
||||
-- Bundles
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, epersongroup_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
1 AS resource_type_id,
|
||||
item2bundle.bundle_id AS resource_id,
|
||||
temptable.action_id AS action_id,
|
||||
xmlwf_pooltask.group_id AS epersongroup_id
|
||||
FROM
|
||||
(
|
||||
(xmlwf_workflowitem INNER JOIN xmlwf_pooltask ON xmlwf_workflowitem.workflowitem_id = xmlwf_pooltask.workflowitem_id)
|
||||
INNER JOIN item2bundle ON xmlwf_workflowitem.item_id = item2bundle.item_id
|
||||
), (VALUES (0), (1), (2), (3), (4)) AS temptable(action_id);
|
||||
|
||||
-- Bitstreams
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, epersongroup_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
0 AS resource_type_id,
|
||||
bundle2bitstream.bitstream_id AS resource_id,
|
||||
temptable.action_id AS action_id,
|
||||
xmlwf_pooltask.group_id AS epersongroup_id
|
||||
FROM
|
||||
(
|
||||
((xmlwf_workflowitem INNER JOIN xmlwf_pooltask ON xmlwf_workflowitem.workflowitem_id = xmlwf_pooltask.workflowitem_id)
|
||||
INNER JOIN item2bundle ON xmlwf_workflowitem.item_id = item2bundle.item_id)
|
||||
INNER JOIN bundle2bitstream ON item2bundle.bundle_id = bundle2bitstream.bundle_id
|
||||
), (VALUES (0), (1), (2), (3), (4)) AS temptable(action_id);
|
||||
|
||||
|
||||
|
||||
-- Create policies for submitter
|
||||
-- TODO: only add if unique
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, eperson_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
2 AS resource_type_id,
|
||||
xmlwf_workflowitem.item_id AS resource_id,
|
||||
0 AS action_id,
|
||||
item.submitter_id AS eperson_id
|
||||
FROM (xmlwf_workflowitem INNER JOIN item ON xmlwf_workflowitem.item_id = item.item_id);
|
||||
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, eperson_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
1 AS resource_type_id,
|
||||
item2bundle.bundle_id AS resource_id,
|
||||
0 AS action_id,
|
||||
item.submitter_id AS eperson_id
|
||||
FROM ((xmlwf_workflowitem INNER JOIN item ON xmlwf_workflowitem.item_id = item.item_id)
|
||||
INNER JOIN item2bundle ON xmlwf_workflowitem.item_id = item2bundle.item_id
|
||||
);
|
||||
|
||||
INSERT INTO resourcepolicy (policy_id, resource_type_id, resource_id, action_id, eperson_id)
|
||||
SELECT
|
||||
getnextid('resourcepolicy') AS policy_id,
|
||||
0 AS resource_type_id,
|
||||
bundle2bitstream.bitstream_id AS resource_id,
|
||||
0 AS action_id,
|
||||
item.submitter_id AS eperson_id
|
||||
FROM (((xmlwf_workflowitem INNER JOIN item ON xmlwf_workflowitem.item_id = item.item_id)
|
||||
INNER JOIN item2bundle ON xmlwf_workflowitem.item_id = item2bundle.item_id)
|
||||
INNER JOIN bundle2bitstream ON item2bundle.bundle_id = bundle2bitstream.bundle_id
|
||||
);
|
||||
|
||||
INSERT INTO xmlwf_in_progress_user (in_progress_user_id, workflowitem_id, user_id, finished)
|
||||
SELECT
|
||||
getnextid('xmlwf_in_progress_user') AS in_progress_user_id,
|
||||
xmlwf_workflowitem.item_id AS workflowitem_id,
|
||||
xmlwf_claimtask.owner_id AS user_id,
|
||||
BOOL(0) as finished
|
||||
FROM
|
||||
(xmlwf_claimtask INNER JOIN xmlwf_workflowitem ON xmlwf_workflowitem.workflowitem_id = xmlwf_claimtask.workflowitem_id);
|
||||
|
||||
-- Update the sequences
|
||||
SELECT setval('xmlwf_workflowitem_seq', max(workflowitem_id)) FROM xmlwf_workflowitem;
|
||||
SELECT setval('xmlwf_collectionrole_seq', max(collectionrole_id)) FROM xmlwf_collectionrole;
|
||||
SELECT setval('xmlwf_workflowitemrole_seq', max(workflowitemrole_id)) FROM xmlwf_workflowitemrole;
|
||||
SELECT setval('xmlwf_pooltask_seq', max(pooltask_id)) FROM xmlwf_pooltask;
|
||||
SELECT setval('xmlwf_claimtask_seq', max(claimtask_id)) FROM xmlwf_claimtask;
|
||||
SELECT setval('xmlwf_in_progress_user_seq', max(in_progress_user_id)) FROM xmlwf_in_progress_user;
|
Reference in New Issue
Block a user