3

有人可以提出他们关于如何调试我们从 ACCE 的批量操作脚本编写的 javascript 的想法吗?我了解警报或调试语句可能在那里不起作用。我们还有哪些其他选择?

4

1 回答 1

2

我所做的是用java编写脚本。

进口几乎一样。变量需要重新声明为 var 而不是 String 等。其他一切都差不多。

您可能需要注意的一些事项:您可能需要立即在 ceobject 上调用 refresh。您可能想要设置一个 java 类,该类具有一个引入 ceobject 的方法,就像 JavaScript 所做的那样。

IBM 提供了一个设置文档属性的 JavaScript 示例。 同一页面上还有其他示例演示了从 ACCE JavaScript 中使用 Java api。

这是一个特别好的示例,因为它显示了批量更新功能最常见的用途之一:

importClass(Packages.com.filenet.api.property.Properties); 
importClass(Packages.com.filenet.api.constants.RefreshMode); 

function OnCustomProcess (CEObject) 
{ 
   CEObject.refresh(); 
   CEObject.getProperties().putValue("DocumentTitle", "Test1"); 
   CEObject.save(RefreshMode.REFRESH); 
} 

用 Java 编写的完全相同的代码:

import com.filenet.api.property.Properties;
import com.filenet.api.constants.RefreshMode;
import com.filenet.api.core.Document;

public class Java2JavaScript {

    public void OnCustomProcess (Document CEObject) 
    { 
       CEObject.refresh(); 
       CEObject.getProperties().putValue("DocumentTitle", "Test1"); 
       CEObject.save(RefreshMode.REFRESH); 
    }  

可以注意到以下差异:

  1. import 语句的语法略有不同。
  2. JavaScript 不需要 CEObject 导入,但 Java 需要。但是它可以包含在 JavaScript 中。在这种情况下,我们导入 Document import com.filenet.api.core.Document;,但是可以使用其他类型的 CEObject 来代替 Document。
  3. 您的 Java 类将需要一个有效的类定义。
  4. 您必须在 Java 方法中声明 CEObject。此外,java 中的任何声明(即 String someString)都需要更改为 JavaScript 声明(var someString)
  5. Java“public void OnCustomProcess (Document CEObject)”简单地变成了“function OnCustomProcess (CEObject)”。ACCE 将只接受“function OnCustomProcess (CEObject)”作为被调用函数。
于 2017-09-15T18:53:28.653 回答