mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-23 18:03:11 +00:00
[DS-968] XML configurable workflow
git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@6532 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -1,24 +1,27 @@
|
||||
-- Convert workflow groups:
|
||||
-- TODO: is 'to_number' ok? do not forget to change role_id values
|
||||
|
||||
INSERT INTO xmlwf_collectionrole (role_id, group_id, collection_id)
|
||||
INSERT INTO xmlwf_collectionrole (collectionrole_id, role_id, group_id, collection_id)
|
||||
SELECT
|
||||
xmlwf_collectionrole_seq.nextval as collectionrole_id,
|
||||
'reviewer' AS role_id,
|
||||
eperson_group_id AS group_id,
|
||||
to_number(replace(replace(name, 'COLLECTION_', ''), '_WORKFLOW_STEP_1', '')) AS collection_id
|
||||
FROM epersongroup
|
||||
WHERE name LIKE 'COLLECTION_%_WORKFLOW_STEP_1';
|
||||
|
||||
INSERT INTO xmlwf_collectionrole (role_id, group_id, collection_id)
|
||||
INSERT INTO xmlwf_collectionrole (collectionrole_id, role_id, group_id, collection_id)
|
||||
SELECT
|
||||
xmlwf_collectionrole_seq.nextval as collectionrole_id,
|
||||
'editor' AS role_id,
|
||||
eperson_group_id AS group_id,
|
||||
to_number(replace(replace(name, 'COLLECTION_', ''), '_WORKFLOW_STEP_2', '')) AS collection_id
|
||||
FROM epersongroup
|
||||
WHERE name LIKE 'COLLECTION_%_WORKFLOW_STEP_2';
|
||||
|
||||
INSERT INTO xmlwf_collectionrole (role_id, group_id, collection_id)
|
||||
INSERT INTO xmlwf_collectionrole (collectionrole_id, role_id, group_id, collection_id)
|
||||
SELECT
|
||||
xmlwf_collectionrole_seq.nextval as collectionrole_id,
|
||||
'finaleditor' AS role_id,
|
||||
eperson_group_id AS group_id,
|
||||
to_number(replace(replace(name, 'COLLECTION_', ''), '_WORKFLOW_STEP_3', '')) AS collection_id
|
||||
@@ -39,8 +42,9 @@ FROM workflowitem;
|
||||
|
||||
|
||||
-- Migrate claimed tasks
|
||||
INSERT INTO xmlwf_claimtask (workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
INSERT INTO xmlwf_claimtask (claimtask_id,workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
SELECT
|
||||
xmlwf_claimtask_seq.nextval AS claimtask_id,
|
||||
workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'reviewstep' AS step_id,
|
||||
@@ -48,8 +52,9 @@ workflow_id AS workflowitem_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)
|
||||
INSERT INTO xmlwf_claimtask (claimtask_id,workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
SELECT
|
||||
xmlwf_claimtask_seq.nextval AS claimtask_id,
|
||||
workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'editstep' AS step_id,
|
||||
@@ -57,8 +62,9 @@ workflow_id AS workflowitem_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)
|
||||
INSERT INTO xmlwf_claimtask (claimtask_id,workflowitem_id, workflow_id, step_id, action_id, owner_id)
|
||||
SELECT
|
||||
xmlwf_claimtask_seq.nextval AS claimtask_id,
|
||||
workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'finaleditstep' AS step_id,
|
||||
@@ -68,8 +74,9 @@ 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)
|
||||
INSERT INTO xmlwf_pooltask (pooltask_id,workflowitem_id, workflow_id, step_id, action_id, group_id)
|
||||
SELECT
|
||||
xmlwf_pooltask_seq.nextval AS pooltask_id,
|
||||
workflowitem.workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'reviewstep' AS step_id,
|
||||
@@ -78,8 +85,9 @@ 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)
|
||||
INSERT INTO xmlwf_pooltask (pooltask_id,workflowitem_id, workflow_id, step_id, action_id, group_id)
|
||||
SELECT
|
||||
xmlwf_pooltask_seq.nextval AS pooltask_id,
|
||||
workflowitem.workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'editstep' AS step_id,
|
||||
@@ -88,8 +96,9 @@ 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)
|
||||
INSERT INTO xmlwf_pooltask (pooltask_id,workflowitem_id, workflow_id, step_id, action_id, group_id)
|
||||
SELECT
|
||||
xmlwf_pooltask_seq.nextval AS pooltask_id,
|
||||
workflowitem.workflow_id AS workflowitem_id,
|
||||
'default' AS workflow_id,
|
||||
'finaleditstep' AS step_id,
|
||||
@@ -98,6 +107,21 @@ 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';
|
||||
|
||||
-- Delete resource policies for workflowitems before creating new ones
|
||||
DELETE FROM resourcepolicy
|
||||
WHERE resource_type_id = 2 AND resource_id IN
|
||||
(SELECT item_id FROM workflowitem);
|
||||
|
||||
DELETE FROM resourcepolicy
|
||||
WHERE resource_type_id = 1 AND resource_id IN
|
||||
(SELECT item2bundle.bundle_id FROM
|
||||
(workflowitem INNER JOIN item2bundle ON workflowitem.item_id = item2bundle.item_id));
|
||||
|
||||
DELETE FROM resourcepolicy
|
||||
WHERE resource_type_id = 0 AND resource_id IN
|
||||
(SELECT bundle2bitstream.bitstream_id FROM
|
||||
((workflowitem INNER JOIN item2bundle ON workflowitem.item_id = item2bundle.item_id)
|
||||
INNER JOIN bundle2bitstream ON item2bundle.bundle_id = bundle2bitstream.bundle_id);
|
||||
-- Create policies for claimtasks
|
||||
-- public static final int BITSTREAM = 0;
|
||||
-- public static final int BUNDLE = 1;
|
||||
|
@@ -104,4 +104,4 @@ ADD CONSTRAINT xmlwf_in_progress_user_unique UNIQUE (workflowitem_id, user_id);
|
||||
CREATE INDEX xmlwf_ipu_wf_fk_idx ON xmlwf_in_progress_user(workflowitem_id);
|
||||
CREATE INDEX xmlwf_ipu_epers_fk_idx ON xmlwf_in_progress_user(user_id);
|
||||
-- TODO: it seems like this index is already created by the 'unique' constraint in the table creation
|
||||
-- CREATE INDEX xmlwf_ipu_wf_epers_fk_idx ON xmlwf_in_progress_user(workflowitem_id,user_id);
|
||||
-- CREATE INDEX xmlwf_ipu_wf_epers_fk_idx ON xmlwf_in_progress_user(workflowitem_id,user_id);
|
@@ -96,6 +96,22 @@ 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';
|
||||
|
||||
-- Delete existing workflowitem policies
|
||||
DELETE FROM resourcepolicy
|
||||
WHERE resource_type_id = 2 AND resource_id IN
|
||||
(SELECT item_id FROM workflowitem);
|
||||
|
||||
DELETE FROM resourcepolicy
|
||||
WHERE resource_type_id = 1 AND resource_id IN
|
||||
(SELECT item2bundle.bundle_id FROM
|
||||
(workflowitem INNER JOIN item2bundle ON workflowitem.item_id = item2bundle.item_id));
|
||||
|
||||
DELETE FROM resourcepolicy
|
||||
WHERE resource_type_id = 0 AND resource_id IN
|
||||
(SELECT bundle2bitstream.bitstream_id FROM
|
||||
((workflowitem INNER JOIN item2bundle ON workflowitem.item_id = item2bundle.item_id)
|
||||
INNER JOIN bundle2bitstream ON item2bundle.bundle_id = bundle2bitstream.bundle_id));
|
||||
|
||||
|
||||
-- Create policies for claimtasks
|
||||
-- public static final int BITSTREAM = 0;
|
||||
@@ -228,12 +244,18 @@ FROM (((xmlwf_workflowitem INNER JOIN item ON xmlwf_workflowitem.item_id = item.
|
||||
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_workflowitem.workflowitem_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);
|
||||
|
||||
|
||||
-- Delete the old tasks and workflowitems
|
||||
-- This is important because otherwise the item can not be deleted
|
||||
DELETE FROM tasklistitem;
|
||||
DELETE FROM workflowitem;
|
||||
|
||||
-- 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;
|
||||
|
Reference in New Issue
Block a user