繁体   English   中英

如何通过Alfresco Javascript API连接到Oracle数据库

[英]How to Connect to Oracle Database Through Alfresco Javascript API

因此,我一直在与Alfresco合作开展我正在进行的项目,该项目的最新要求之一是从Oracle数据库中提取序列号并在Alfresco的空间中填充自定义属性。

var conObj = new ActiveXObject('ADODB.Connection');
var connectionString = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IP ADDRESS)(PORT=XXXX)))(CONNECT_DATA=(SID=your_SID)(SERVER=DEDICATED)));User Id=username;Password=pwd;"
                                conObj.Open(connectionString);

var rs = new ActiveXObject("ADODB.Recordset");
var caseID;

sql = "INSERT INTO case(mod_dt,mod_user) values(sysdate,’user’) RETURNING id"

rs.Open(sql, conObj);

caseID = rs(0);
logger.log("The new case id is: " + caseID);

rs.close;

然而,这回复说:

Caused by: org.mozilla.javascript.EcmaError: ReferenceError: "ActiveXObject" is not defined. (workspace://SpacesStore/b3145512-e54d-4d9e-9655-0b6ae678e39b#141)

这让我意识到Alfresco的Javascript API没有Javascript的全部功能。 我已经阅读了一些关于创建自己的java类并在Alfresco javascript中调用它们的内容,但我没有看到任何好的例子。 有没有人有这方面的经验,或者他们是否可以演示一个简单的例子来创建一个从Alfresco Javascript中调用的java类?

ActiveXObject是IE特有的东西,它在非IE浏览器中不可用,所以它在服务器端JavaScript中不可用也就不足为奇了!

据我了解,您编写的JavaScript通常作为规则运行,因此它将在Alfresco Repository层执行。 这让生活变得更轻松。 您可能想要做的是编写一些Java代码,使用Oracle的Java API(JDBC或类似代码)处理Oracle的连接和查询。

在存储库中运行时,您的JavaScript已经可以访问大量“根”对象 ,这些对象可用于在存储库上执行各种操作。 您要做的是将新的Java类作为附加类注入,因此它可供您的规则脚本在运行时使用。

(如果你正在编写一个webscript,那么你可以安排将java对象提供给你的webscript的JavaScript模型。但是,当你做一个规则时,这不是一个选项)

为此,请让您的新类扩展BaseScopableProcessorExtension 然后,当您为它定义一个spring bean时,设置extensionName属性以控制它在JavaScript中显示的名称。 您可以在Alfresco中找到相当多的示例, ScriptSiteSevice (bean id siteScriptService )是一个让人想起的siteScriptService

如果你刚接触到spring和Alfresco,我建议你把你的整个事情包装成一个模块(AMP),或者稍作作弊,然后将你的上下文文件放在tomcat共享下的新alfresco/extensions目录下类。 您的文件看起来像:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
  <bean id="myOracleQueryBean" parent="baseJavaScriptExtension" 
        class="com.my.comany.namespace.alfresco.OracleScriptQuery">
    <!-- What it should be called in JS -->
    <property name="extensionName">
        <value>oracleQuery</value>
    </property>
    <!-- Inject any other things that your bean needs here -->
    <!-- eg some Oracle stuff from Spring -->
</bean>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM