是否可以将curation task
限制为仅在为单个项目调用时执行,并在为社区,集合或整个DSpace调用时中止?
我知道可以限制curation task
仅处理项目 s 而不是社区和馆藏,但这不是我要找的。 p>
背景:
我有curation task
发送有关某个项目的电子邮件
它旨在对单个项目进行调用
如果有人不小心在集合或整个DSpace上调用它,它会发送数千封电子邮件,这显然是一个问题。
答案 0 :(得分:1)
您应该实现org.dspace.curate.CurationTask接口,而不是扩展org.dspace.curate.AbstractCurationTask类。
实际上,抽象类是负责在DSpace容器(社区,集合)中的所有对象上实现策展任务的自动分发的类。直接实现界面,如果在社区或集合上运行策展,您可以决定立即返回
int perform(DSpaceObject dso) throws IOException {
if (!(dso instanceof Item)) {
return Curator.CURATE_SKIP;
}
//... do your work on the item
return Curator.CURATE_SUCCESS;
}
答案 1 :(得分:1)
答案可以在手册中找到:
由于任务在DSO上运行,可以是简单的(Items)或 容器(Collections,and Communities),有一个根本 如何调用任务的问题或含糊不清:如果DSO是一个 集合,如果CS调用每个成员的任务 收集,或完成任务"知道"该怎么做呢?该 通过寻找@Distributive注释做出决定:if 目前,CS假定任务将管理细节,否则 CS将遍历集合,并在每个成员上调用任务。
因此,要使任务不分配,请设置@Distributive
注释,告诉Curation System您自己处理分发,然后不在任务中实现分发。
@Distributive
注释的含义是什么,"自己处理分发" 而不是"让管理系统处理分发" 。所以注释的名称有点误导。
当您实现org.dspace.curate.CurationTask
接口以及扩展org.dspace.curate.AbstractCurationTask
类时,这是有效的。