找不到 IBM Filenet P8 更改预处理器 Java 实现
IBM Filenet P8 Change Preprocessor Java implementation cannot be found
在我当前的项目中,使用 Filenet P8 Content Platform Engine 5.2.1 和 WebSphere 8.5.5.3、IBM RAD 9.5 和 Apache Maven 3.3.1
我正在尝试部署链接到特定文档的更改预处理器 class。
每次给这个class或subclass添加一个文档我希望CP改变一些属性
我将操作处理程序的 class 作为代码模块上传,与我通常对订阅所做的方式相同:
更新文档属性 CP object 内容元素选项卡显示如下:
并且我已经在文档 class 更改预处理器定义选项卡中使用 ACCE 正确配置了预处理器定义:
动作的Java脚本执行有效
// Set NumeroContratto property to certain value when a new document is created.
importClass(Packages.com.filenet.api.action.Create);
function preprocessObjectChange (sourceObj)
{
// Verify that the pending action is a create action.
var actions = sourceObj.getPendingActions();
for ( var i = 0; i < actions.length; i++ )
{
if ( actions[i] instanceof Create )
{
// Set NumeroContratto property to "777"
sourceObj.getProperties().putValue("NumeroContratto", "777");
return true;
}
}
return false;
}
这是 Java 实现:
package com.finmeccanica.spc.ecm.filenet.cp.actionhandler;
import com.filenet.api.action.*;
import com.filenet.api.core.IndependentlyPersistableObject;
public class AddPropertiesToObjectCP implements
com.filenet.api.engine.ChangePreprocessor {
public boolean preprocessObjectChange(
IndependentlyPersistableObject sourceObj) {
try {
PendingAction actions[] = sourceObj.getPendingActions();
for (int i = 0; i < actions.length; i++) {
if (actions[i] instanceof Create) {
sourceObj.getProperties()
.putValue("NumeroContratto", "777");
return true;
}
}
return false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
有什么问题?
我无法让预处理器在 Java 中实现它。尽管我用 Java class 处理程序的名称和代码模块标题
填写了字段
当我点击保存更改预处理器操作时,系统总是告诉我找不到 class:
FNRAC1005E The 'PDGOV CP Add PropertiesToDocument Action' object was
not saved.
User response: Refresh the object, reenter your changes, and try
again, or contact your system administrator.
Exception details: Unable to load event handler class from either
associated code module or system classpath:
com.finmeccanica.spc.ecm.filenet.cp.actionhandler.AddPropertiesToObjectCP.
Message was:
com.finmeccanica.spc.ecm.filenet.cp.actionhandler.AddPropertiesToObjectCP
我上传的jar包含class在正确的包中,代码模块的内容没有损坏。
我错过了什么吗?我还需要配置其他东西吗?
您的代码中没有遗漏任何内容。当我尝试将现有的更改预处理器操作从 JavaScript 类型转换为 Java class 类型时,我复制了您的步骤并且确实收到了相同的错误。它找不到代码模块。
但是,当我使用相同的 CodeModule 创建新的更改预处理器操作时,它运行良好。不同之处在于,当您创建新模块时,系统会提示您浏览代码模块而不是键入其名称。
要修复,请不要将现有操作从 Java脚本类型转换。而是创建一个新的更改预处理器操作,从一开始就选择 Java 类型。
在我当前的项目中,使用 Filenet P8 Content Platform Engine 5.2.1 和 WebSphere 8.5.5.3、IBM RAD 9.5 和 Apache Maven 3.3.1
我正在尝试部署链接到特定文档的更改预处理器 class。 每次给这个class或subclass添加一个文档我希望CP改变一些属性
我将操作处理程序的 class 作为代码模块上传,与我通常对订阅所做的方式相同:
更新文档属性 CP object 内容元素选项卡显示如下:
并且我已经在文档 class 更改预处理器定义选项卡中使用 ACCE 正确配置了预处理器定义:
动作的Java脚本执行有效
// Set NumeroContratto property to certain value when a new document is created.
importClass(Packages.com.filenet.api.action.Create);
function preprocessObjectChange (sourceObj)
{
// Verify that the pending action is a create action.
var actions = sourceObj.getPendingActions();
for ( var i = 0; i < actions.length; i++ )
{
if ( actions[i] instanceof Create )
{
// Set NumeroContratto property to "777"
sourceObj.getProperties().putValue("NumeroContratto", "777");
return true;
}
}
return false;
}
这是 Java 实现:
package com.finmeccanica.spc.ecm.filenet.cp.actionhandler;
import com.filenet.api.action.*;
import com.filenet.api.core.IndependentlyPersistableObject;
public class AddPropertiesToObjectCP implements
com.filenet.api.engine.ChangePreprocessor {
public boolean preprocessObjectChange(
IndependentlyPersistableObject sourceObj) {
try {
PendingAction actions[] = sourceObj.getPendingActions();
for (int i = 0; i < actions.length; i++) {
if (actions[i] instanceof Create) {
sourceObj.getProperties()
.putValue("NumeroContratto", "777");
return true;
}
}
return false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
有什么问题?
我无法让预处理器在 Java 中实现它。尽管我用 Java class 处理程序的名称和代码模块标题
当我点击保存更改预处理器操作时,系统总是告诉我找不到 class:
FNRAC1005E The 'PDGOV CP Add PropertiesToDocument Action' object was not saved.
User response: Refresh the object, reenter your changes, and try again, or contact your system administrator.
Exception details: Unable to load event handler class from either associated code module or system classpath: com.finmeccanica.spc.ecm.filenet.cp.actionhandler.AddPropertiesToObjectCP. Message was: com.finmeccanica.spc.ecm.filenet.cp.actionhandler.AddPropertiesToObjectCP
我上传的jar包含class在正确的包中,代码模块的内容没有损坏。
我错过了什么吗?我还需要配置其他东西吗?
您的代码中没有遗漏任何内容。当我尝试将现有的更改预处理器操作从 JavaScript 类型转换为 Java class 类型时,我复制了您的步骤并且确实收到了相同的错误。它找不到代码模块。
但是,当我使用相同的 CodeModule 创建新的更改预处理器操作时,它运行良好。不同之处在于,当您创建新模块时,系统会提示您浏览代码模块而不是键入其名称。
要修复,请不要将现有操作从 Java脚本类型转换。而是创建一个新的更改预处理器操作,从一开始就选择 Java 类型。