将策展任务限制为*单个*项目
Restrict curation task to *single* item
是否可以将 curation task
限制为仅在为单个项目调用时执行,而在为社区、集合或整个 DSpace 调用时中止?
我知道可以限制 curation task
仅处理项目s,而不是社区和集合,但这不是我想要的。
背景:
我有一个 curation task
可以发送有关某个项目的电子邮件。
它旨在在单个项目上调用。
如果有人不小心在一个集合或整个 DSpace 上调用它,它会发送数千封电子邮件,这显然是个问题。
您应该实现接口 org.dspace.curate.CurationTask 而不是扩展 org.dspace.curate.AbstractCurationTask class。
事实上,抽象 class 是负责实现跨 DSpace 容器(社区、集合)中所有对象自动分配管理任务的人。如果在社区或集合
上的策展是 运行,则直接实施界面您可以决定立即 return
int perform(DSpaceObject dso) throws IOException {
if (!(dso instanceof Item)) {
return Curator.CURATE_SKIP;
}
//... do your work on the item
return Curator.CURATE_SUCCESS;
}
答案在手册中找到:
Since tasks operate on DSOs that can either be simple (Items) or
containers (Collections, and Communities), there is a fundamental
problem or ambiguity in how a task is invoked: if the DSO is a
collection, should the CS invoke the task on each member of the
collection, or does the task "know" how to do that itself? The
decision is made by looking for the @Distributive annotation: if
present, CS assumes that the task will manage the details, otherwise
CS will walk the collection, and invoke the task on each member.
所以要创建任务 non-distributive,您设置 @Distributive
注释,告诉管理系统您自己处理分发,然后不要在您的任务中实现分发。
@Distributive
注释的意思是,"handles distribution on its own"而不是"let's the curation system handle distribution"。所以注解的名字有点误导。
这在您实现 org.dspace.curate.CurationTask
接口以及扩展 org.dspace.curate.AbstractCurationTask
class 时有效。
是否可以将 curation task
限制为仅在为单个项目调用时执行,而在为社区、集合或整个 DSpace 调用时中止?
我知道可以限制 curation task
仅处理项目s,而不是社区和集合,但这不是我想要的。
背景:
我有一个 curation task
可以发送有关某个项目的电子邮件。
它旨在在单个项目上调用。
如果有人不小心在一个集合或整个 DSpace 上调用它,它会发送数千封电子邮件,这显然是个问题。
您应该实现接口 org.dspace.curate.CurationTask 而不是扩展 org.dspace.curate.AbstractCurationTask class。
事实上,抽象 class 是负责实现跨 DSpace 容器(社区、集合)中所有对象自动分配管理任务的人。如果在社区或集合
上的策展是 运行,则直接实施界面您可以决定立即 returnint perform(DSpaceObject dso) throws IOException {
if (!(dso instanceof Item)) {
return Curator.CURATE_SKIP;
}
//... do your work on the item
return Curator.CURATE_SUCCESS;
}
答案在手册中找到:
Since tasks operate on DSOs that can either be simple (Items) or containers (Collections, and Communities), there is a fundamental problem or ambiguity in how a task is invoked: if the DSO is a collection, should the CS invoke the task on each member of the collection, or does the task "know" how to do that itself? The decision is made by looking for the @Distributive annotation: if present, CS assumes that the task will manage the details, otherwise CS will walk the collection, and invoke the task on each member.
所以要创建任务 non-distributive,您设置 @Distributive
注释,告诉管理系统您自己处理分发,然后不要在您的任务中实现分发。
@Distributive
注释的意思是,"handles distribution on its own"而不是"let's the curation system handle distribution"。所以注解的名字有点误导。
这在您实现 org.dspace.curate.CurationTask
接口以及扩展 org.dspace.curate.AbstractCurationTask
class 时有效。