libreccm-legacy/ccm-cms/pdl/com/arsdigita/content-section/CMSTask.pdl

123 lines
3.9 KiB
Plaintext
Executable File

//
// Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
//
// The contents of this file are subject to the CCM Public
// License (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the
// License at http://www.redhat.com/licenses/ccmpl.html.
//
// Software distributed under the License is distributed on an
// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
// or implied. See the License for the specific language governing
// rights and limitations under the License.
//
// $Id: CMSTask.pdl 1637 2007-09-17 10:14:27Z chrisg23 $
model com.arsdigita.cms.workflow;
import com.arsdigita.workflow.simple.*;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.ContentType;
object type CMSTask extends UserTask {
composite CMSTaskType [1..1] taskType = join cms_tasks.task_type_id to cms_task_types.task_type_id;
reference key (cms_tasks.task_id);
}
object type CMSTaskType {
Integer[1..1] taskTypeID = cms_task_types.task_type_id INTEGER;
String [1..1] name = cms_task_types.name VARCHAR(64);
String [1..1] defaultUrlGeneratorClass = cms_task_types.classname VARCHAR(128);
String [1..1] privilege = cms_task_types.privilege VARCHAR(200);
object key (taskTypeID);
}
object type TaskEventURLGenerator {
Integer [1..1] generatorID = cms_task_url_generators.generator_id INTEGER;
String [1..1] event = cms_task_url_generators.event VARCHAR(100);
ContentType [0..1] contentType = join cms_task_url_generators.content_type to content_types.type_id;
String [1..1] urlGeneratorClass = cms_task_url_generators.classname VARCHAR(128);
object key (generatorID);
}
association {
TaskEventURLGenerator [0..n] generators = join cms_task_types.task_type_id to cms_task_url_generators.task_type_id;
CMSTaskType [1..1] taskType = join cms_task_url_generators.task_type_id to cms_task_types.task_type_id;
}
query getItemFromTask {
ACSObject obj;
do {
select a.object_id,
a.default_domain_class,
a.display_name,
a.object_type
from acs_objects a,
cw_tasks t,
cw_processes p
where t.task_id = :taskID
and t.parent_task_id = p.process_id
and p.object_id = a.object_id
} map {
obj.id = a.object_id;
obj.objectType = a.object_type;
obj.displayName = a.display_name;
obj.defaultDomainClass = a.default_domain_class;
}
}
object type UnfinishedNotification {
BigDecimal[1..1] id = cms_wf_notifications.task_id INTEGER;
Date[0..1] lastSentDate = cms_wf_notifications.last_sent_date TIMESTAMP;
Integer[0..1] numSent = cms_wf_notifications.num_sent INTEGER;
object key(id);
}
query getUnfinishedTasks {
CMSTask task;
do {
select a.object_id,
a.object_type,
a.display_name,
a.default_domain_class
from acs_objects a,
cw_tasks t,
cw_user_tasks u,
cms_tasks c,
cw_processes p,
cms_items i
where t.task_state = 'enabled'
and t.is_active = '1'
and t.task_id = a.object_id
and t.task_id = u.task_id
and t.task_id = c.task_id
and p.process_id = t.parent_task_id
and p.object_id = i.item_id
and i.section_id = :sectionID
and u.start_date < :overdueDate
} map {
task.id = a.object_id;
task.objectType = a.object_type;
task.displayName = a.display_name;
task.defaultDomainClass = a.default_domain_class;
}
}
// clear previous UnfinishedNotifications from the DB
// used when restarting a Workflow task
data operation clearNotifications {
do {
delete from cms_wf_notifications
where task_id = :taskID
}
}