将策展任务限制为* single *项目

时间:2017-01-30 10:47:37

标签: dspace

是否可以将curation task限制为仅在为单个项目调用时执行,并在为社区,集合或整个DSpace调用时中止?

我知道可以限制curation task仅处理项目 s 而不是社区和馆藏,但这不是我要找的。

背景:

我有curation task发送有关某个项目的电子邮件 它旨在对单个项目进行调用 如果有人不小心在集合或整个DSpace上调用它,它会发送数千封电子邮件,这显然是一个问题。

2 个答案:

答案 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类时,这是有效的。