是否可以将curation task
限制为仅针对单个项目调用时执行,并且在针对社区,集合或整个DSpace调用时是否中止?将curation任务限制为* single *项目
我知道有可能限制curation task
只处理项目s而不是社区和集合,但这不是我所期待的。
背景:
我有一个curation task
发送电子邮件有关项目。
它打算在单个项目上调用。
如果有人不小心在集合或整个DSpace上调用它,它会发送数千封电子邮件,这显然是一个问题。
是否可以将curation task
限制为仅针对单个项目调用时执行,并且在针对社区,集合或整个DSpace调用时是否中止?将curation任务限制为* single *项目
我知道有可能限制curation task
只处理项目s而不是社区和集合,但这不是我所期待的。
背景:
我有一个curation task
发送电子邮件有关项目。
它打算在单个项目上调用。
如果有人不小心在集合或整个DSpace上调用它,它会发送数千封电子邮件,这显然是一个问题。
答案是手册中找到:
由于任务在数字存储示波器操作,可无论是简单的(Items)还是容器(Collections和Communities),基本的 问题或者如何调用一个任务都是模棱两可的:如果DSO是一个 集合,那么CS应该调用任务的每个成员 集合,或者做任务“知道”如何做tha t本身?该 决定由寻找@Distributive注释提出:如果 目前,CS假定任务将管理的细节,否则 CS会走路的收集,并调用每个成员的任务。
因此,为了使任务不分配,您将@Distributive
注解,告诉你自己处理分布,则不要在你的任务落实分布的策展制度。
什么@Distributive
注释的意思是,“自行处理通讯”代替“让我们策展制度手柄分配”。所以注释的名称有点误导。
当你实现org.dspace.curate.CurationTask
界面,以及当您扩展org.dspace.curate.AbstractCurationTask
类作为这个工程。
你应该实现的接口org.dspace.curate.CurationTask,而不是扩展org.dspace.curate.AbstractCurationTask类。
事实上,抽象类是负责实现在DSpace容器(Community,Collection)中的所有对象上自动分配调整任务的人。实现直接的界面,你可以决定是否策展是在一个社区或收集运行立即返回
int perform(DSpaceObject dso) throws IOException {
if (!(dso instanceof Item)) {
return Curator.CURATE_SKIP;
}
//... do your work on the item
return Curator.CURATE_SUCCESS;
}
这样我就可以跳过一个'Community' /'Collection'对象,但社区的/集合的'items'仍然被处理。看起来这种行为是在'Curator'类'curate'方法中实现的,'AbstractCurationTask'中的'distribute'方法似乎完全没有涉及到。 – MartinW
你是对的!你可以在curation任务上使用@Suspendable注解,并且如果dso不是一个Item,我们将返回CURATE_FAIL而不是CURATE_SKIP – abollini
是的,如果你使用' CURATE_FAIL'而不是'CURATE_SKIP',但只要你认为curation系统在单个项目之前处理容器(目前它是这样做的)。但我发现了一个更好的解决方案,使用'@ Distributive'注释。看到我自己的答案。 – MartinW