关于在OracleAPEX中集成SpreadJS和oracle的apex如何的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于#OracleAPEX系列文章8:如何从APEX5.1.4升级到
关于在 Oracle APEX 中集成 SpreadJS和oracle的apex如何的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于# Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到最新的 APEX 18.1、Apex 5.1插件不起作用-oracle-apex-5、Async Apex - 异步 Apex 概述、Oracle APEX 20.2 电子邮件发送等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- 在 Oracle APEX 中集成 SpreadJS(oracle的apex如何)
- # Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到最新的 APEX 18.1
- Apex 5.1插件不起作用-oracle-apex-5
- Async Apex - 异步 Apex 概述
- Oracle APEX 20.2 电子邮件发送
在 Oracle APEX 中集成 SpreadJS(oracle的apex如何)
如何解决在 Oracle APEX 中集成 SpreadJS
我是 Oracle APEX 的新手,我使用的是 apex 版本 21.1.0,我只想上传受密码保护的 excel 文件,所以我使用了 Spread JS java 脚本插件,而我正在尝试集成我得到了这个以下错误附加在屏幕截图中。
我有一个如下所示的 Oracle APEX 表单:
我创建了一个区域和三个页面项
- 文件上传类型 - 文件
- 密码输入类型 - 密码
- 按钮类型 - 按钮
页面属性如下:
我在 HTML Header 中添加了以下代码
<head>
<Meta charset="utf-8" />
<Meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="https://www.grapecity.com/spreadjs/demos/en/purejs /node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
<script src="https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script>
<script src="https://www.grapecity.com/spreadjs/demos/spread/source/js/FileSaver.js" type="text/javascript"></script>
<script src="https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-excelio/dist/gc.spread.excelio.min.js" type="text/javascript"></script>
<script src="https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js" type="text/javascript"></script>
<script src="https://www.grapecity.com/spreadjs/demos/spread/source/js/license.js" type="text/javascript"></script>
<script src="https://www.grapecity.com/spreadjs/demos/spread/source/data/excel_data.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("append"),{calcondemand: true});
spread.fromJSON(jsonData);
var excelIo = new GC.Spread.Excel.IO();
document.getElementById(''B43349412666678933129'').onclick = function () {
var excelFile = document.getElementById("P2_UPLOAD_FILE").files[0];
var password = document.getElementById(''P2_PASSWORD'').value;
// here is excel IO API
excelIo.open(excelFile,function (json) {
var workbookObj = json;
spread.fromJSON(workbookObj);
},function (e) {
// process error
alert(e.errorMessage);
if (e.errorCode === 2/*nopassword*/ || e.errorCode === 3 /*invalidPassword*/) {
document.getElementById(''P2_PASSWORD'').onselect = null;
}
},{password: password});
};
};
</script>
</head>
<body>
<div id="append"></div>
</body>
如果我错了或遗漏了什么,请纠正我。
谢谢,
解决方法
我是 GrapeCity 的一名技术参与工程师,支持 SpreadJS。我想指出的是,从当前版本(V14.1.0)开始,SpreadJS 没有针对或使用 APEX 软件进行测试。如果您遇到任何问题,请在此处向 SpreadJS 团队报告:https://www.grapecity.com/my-account/my-support/
我能够按照以下步骤将 SpreadJS 集成到 APEX 应用程序中:
- 我们必须首先包含 SpreadJS JS 和 CSS 文件。在应用构建器中,选择呈现选项卡下树中的根元素,然后在右侧窗格中向下滚动属性,直到找到 JavaScript 属性部分。
- 在JavaScript属性下包含SpreadJS在指定区域的JS和CSS文件url:
以下是必要的 SpreadJS 链接:
JS:
https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js
https://www.grapecity.com/spreadjs/demos/spread/source/js/FileSaver.js
https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-excelio/dist/gc.spread.excelio.min.js
https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js
CSS:
- https://www.grapecity.com/spreadjs/demos/en/purejs/node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css
- 接下来,创建一个名为 SpreadJS 的区域
- 在 SpreadJS 区域内,右键单击并创建以下内容:
名为 P1_UPLOAD_FILE
的文件浏览器类型名为 P1_PASSWORD
的密码类型项目一个名为 Import 的按钮,其静态 ID 为 import,静态 ID 属性可以在高级属性下找到:
- 名为 ss 且静态 ID 设置为 ss 的子区域:
- 接下来,确保选择树的根元素并导航到右侧窗格中的 JavaScript 部分
- 在函数和全局变量声明部分下初始化SpreadJS。这是我使用的代码片段,它将显示 spreadjs 到 ss 子区域并使用按钮、文件浏览器和密码触发导入:
GC.Spread.Sheets.LicenseKey = "sjs-distribution key";
window.onload = function () {
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"),{calcOnDemand: true});
var excelIo = new GC.Spread.Excel.IO();
document.getElementById(''import'').onclick = function () {
var excelFile = document.getElementById("P1_UPLOAD_FILE").files[0];
var password = document.getElementById(''P1_PASSWORD'').value;
// here is excel IO API
excelIo.open(excelFile,function (json) {
var workbookObj = json;
spread.fromJSON(workbookObj);
},function (e) {
// process error
alert(e.errorMessage);
if (e.errorCode === 2/*noPassword*/ || e.errorCode === 3 /*invalidPassword*/) {
document.getElementById(''password'').onselect = null;
}
},{password: password});
};
}
正如我之前在帖子中分享的那样,请记住,SpreadJS 尚未在 APEX 应用程序中进行测试,因此可能会出现一些意外行为。如果您遇到任何问题,请联系 SpreadJS 的团队!
最好,
麦肯齐·阿尔比茨 | GrapeCity 的技术参与工程师 |传播JS
# Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到最新的 APEX 18.1
本文是钢哥的 Oracle APEX 系列文章的第8篇,完整文章目录如下:
- Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技
- Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完整开发环境 (安装 CentOS)
- Oracle APEX 系列文章3:在阿里云上打造属于你自己的APEX完整开发环境 (安装 Tomcat, Nginx)
- Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX)
- Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)
- Oracle APEX 系列文章6:Oracle APEX 到底适不适合企业环境?
- Oracle APEX 系列文章7:Oracle APEX 18.1 新特性
- Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到 最新的 APEX 18.1
引言
Oracle APEX 18.1 发布已经有几天了,相信很多搞APEX的同学都尝过鲜了,接下来需要面临的问题就是如何从早期的 APEX 版本升级到最新的 APEX 18.1。
简单看了一下 APEX 18.1 的文档,并没有提到有现成的升级脚本文件可以跑(虽然安装目录下也有个叫apxpatch.sql
的鬼)。由于新版本的 APEX 的 DB Schema 已经变成了APEX_180100
,猜测跟之前 APEX 4 升到 5 一样,没办法直接升级。
以下升级过程是跑在 CentOS 6 上的,数据库用的是 Oracle Database 11gR2,APEX 版本是 5.1.4。
另外如果不更换数据库,已有的 APEX Application 应用、Workspace 及 Schema 都不需要改,升级后还可以使用,这一点要为 APEX 研发部门点赞!!
闲话少说,以下就是涉及到的组件:
-
APEX
:这个自不必说,不管之前用的是 3、4 还是 5 版本的,都要升级到最新的18.1
; -
ORDS
:同步升级到最新的 18.1 版本,并重新配置部署到 Tomcat 8.5 上; -
JAVA
:ORDS 18.1 要求 JDK/JRE 最低版本1.8
以上; -
Tomcat
:ORDS 18.1 要求 Tomcat 最低版本8.5
以上; -
Nignx
:需要重新配置参数(SSL证书、静态文件路径等);
下面就让钢哥带你开始今天的 APEX 升级(踩坑)之旅!
准备工作
上传安装包
首先将升级需要用到的安装包上传到服务器上,比如:/u02/Media
。
停止当前 nginx,tomcat 服务。
## 停止 nginx 服务
service nginx stop
## 停止 tomcat 服务
service tomcat stop
升级 JDK / JRE
利用java -version
查看当前 JDK 版本,从下图可知,当前系统 JDK 版本是 1.7 的,不满足 ORDS 的需要,必须升级 Java 版本。
安装 JDK 1.8
yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
安装完 JDK,将环境变量添加到 ~/.bash_profile
文件中;
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export NLS_LANG=American_America.AL32UTF8
export JAVA_HOME=/u01/java/jdk1.8.0_162
export JRE_HOME=/u01/java/jdk1.8.0_162/jre
export ORACLE_SID=XE
PATH=/bin:/sbin:/usr/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$HOME/bin
export PATH
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export CLASSPATH
手动初始化一下环境变量。
source ~/.bash_profile
## 再次查看JDK版本
java -version
JDK 版本应该已经变成1.8了。
升级 Tomcat
由于我当前用的 tomcat 版本是 7 的,ORDS 18.1 要求 tomcat 8.5 以上版本,所以需要更新一下 tomcat。
下载 Tomcat 8.5
## 切换到安装包目录
cd /u02/Media
## 下载tomcat 8.5以上版本
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.zip
## 解压缩安装包
unzip apache-tomcat-8.5.31.zip
## 将解压完的文件移动到 /u01/tomcat8 目录下
mv apache-tomcat-8.5.31/* /u01/tomcat8
## 授权
chown -Rf tomcat:tomcat /u01/tomcat8
chmod -Rf 755 /u01/tomcat8/bin/*
由于我用的是 CentOS 6,用的脚本启动 Tomcat,所以需要修改下/etc/init.d/tomcat
文件。
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/u01/java/jdk1.8.0_162
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/u01/tomcat8
case $1 in
start)
/bin/su tomcat $CATALINA_HOME/bin/startup.sh
;;
stop)
/bin/su tomcat $CATALINA_HOME/bin/shutdown.sh
;;
restart)
/bin/su tomcat $CATALINA_HOME/bin/shutdown.sh
/bin/su tomcat $CATALINA_HOME/bin/startup.sh
;;
esac
. /root/firewall.sh
exit 0
验证 tomcat 是否安装成功
service tomcat start
可以看到 tomcat 8 服务已经启动了,并且使用的是 jdk 1.8。
用浏览器访问 http://xxx.xxx.xxx.xxx:8080,也可以看到 tomcat 页面。
升级 APEX 18.1
解压缩安装包
## 切换到安装包目录
cd /u02/Media/
## 将安装包解压缩
unzip apex_18.1.zip
执行脚本安装 APEX 18.1
## 切换到 oracle 用户
su - oracle
cd /u02/Media/apex
以超级管理员身份登录数据库,这里以 Oracle Database 11g 数据库举例,12c 安装步骤类似。
sqlplus / as sysdba
-- 创建单独的 tablespace(不建议用系统默认的表空间)
SQL> create tablespace APEX181 DATAFILE ''/u03/oradata/apex181.dbf'' SIZE 1024m REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
-- 安装 APEX 18.1,安装过程可能会持续5-10分钟
-- 这里的 APEX181 是刚刚创建的 tablespace
SQL> @apexins APEX181 APEX181 temp /i/
-- 重置 APEX 管理控制台账号密码
SQL> @apxchpwd
-- 配置RESTful Services服务
SQL> @apex_rest_config.sql
-- 禁用数据库内置的PL/SQL网关
SQL> exec dbms_xdb.sethttpport(0);
SQL> exec dbms_xdb.setftpport(0);
-- 解锁ORDS用户账号
SQL> alter user apex_public_user account unlock;
SQL> alter user apex_public_user identified by "your password";
-- 断开数据库会话
SQL> exit
将静态文件部署到 tomcat
## 切换到root用户
su - root
## 在 Tomcat 的 webapps 目录下新建一个名为`i`的文件夹
mkdir -p /u01/tomcat8/webapps/i/
## 将APEX静态文件部署到tomcat目录下
cp -a /u02/Media/apex/images/* /u01/tomcat8/webapps/i/
## 授予相应权限
chown -Rf tomcat:tomcat /u01/tomcat8/webapps/
升级 ORDS 18.1
解压缩安装包
mkdir -p /u01/ords
unzip /u02/Media/ords.18.1.1.95.1251.zip -d /u01/ords/
执行安装脚本
cd /u01/ords
java -jar ords.war install advanced
为 tomcat 账号授权,确保 tomcat 账号可以读取/u01/ords/conf
目录内文件。
chown -R tomcat:tomcat /u01/ords/conf
将 ords.war 部署到 Tomcat
cp -a /u01/ords/ords.war /u01/tomcat8/webapps/
chown -Rf tomcat:tomcat /u01/tomcat8/webapps/
## 重启 tomcat 服务
service tomcat restart
验证 ORDS 已部署成功
打开浏览器,访问 http://xxx.xxx.xxx.xxx:8080/ords,如果部署成功,APEX 应该就可以访问了。
钢哥注:如果想把 url 里的ords
替换成别的,比如qingxi
,需要在先将ords.war
重命名为qingxi.war
,然后再跑java -jar qingxi.war install advanced
命令完成安装和部署动作。如果想重装 ORDS,可以执行
java -jar ords.war uninstall
命令,卸载成功后在删除安装目录的所有文件即可。
配置 Nginx (可选)
检查 nginx.conf 里是否有需要修改的地方,比如更新i
目录
测试升级后的环境
打开浏览器,访问 http://xxx.xxx.xxx.xxx/ords,如果部署成功,APEX 应该就可以访问了。
登录到管理控制台,查看现有的工作空间(Existed Workspace),发现老铁都还在。
输入对应的账号后,检查之前的应用也都能正常运行,完美!!
结语
以上就是如何从之前的 APEX 升级到最新的 APEX 18.1 版本的实操,希望老铁们喜欢。
Apex 5.1插件不起作用-oracle-apex-5
如何解决Apex 5.1插件不起作用-oracle-apex-5
我对oracle apex 5.1有问题。 我已经导入了一些插件(super lov,PersianDatePicker,APEX Spotlight Search)并正常工作。今天,我意识到他们所有人都存在问题,例如,超级lov无法打开(如这张图片)。
我该如何解决?
enter image description here
Async Apex - 异步 Apex 概述
异步 Apex 概述
到目前为止,前面所做的一切都属于同步操作,这意味着每当用户执行特定操作时,它都会真实的发生,如果该操作需要一些时间,则用户必须等待该操作完成并查看结果,但您并不需要始终执行同步操作。 例如,假设您下了一些订单,而订单处理需要一些时间,用户不应该等待订单处理,他应该能够同时浏览其他产品。 对不对?
或者说,如果您要下载某个文件,而该文件非常大,可能有几 GB, 那么下载该文件将需要一些时间。那么,您认为用户应该等待下载完成吗?不,用户应该能够继续他正在做的任何事情,并且此文件下载不应该以任何方式阻止他。 因此,我们可以借助异步操作来实现这一点。
异步操作是在后台运行的操作,用户不必等待该操作完成。
因此,它不会以任何方式阻止用户的当前操作。 Apex 提供了多种异步运行 Apex 代码的方法,我们将在接下来的文章中讨论所有这些方法。
首先,让我们了解一下 Salesforce 中的正常操作是如何执行的。 首先启动操作,然后该操作背后的代码开始执行。 因此,您可能有一些代码要执行,然后可能在代码处理过程中发生了一些错误。现在,每当发生此错误时,您希望锁定此错误,并将此错误发送到第三方系统,以便第三方系统可以分析这些日志。因此,这可能是一个庞大的操作,用户不应等待此操作完成并查看结果。 因此,在这种情况下,你可以做的是,你可以有一个异步操作,将这个错误发送到错误日志记录系统,并进行所有的处理。
这样,您的执行将不会阻塞,并且此异步操作将在后台运行,您的用户将立即看到结果。 如果是错误,他将立即看到它,而无需等待此异步操作完成。
在本课程中,我们之前已经讨论过普通事务在 Apex 中的工作方式,当我们讨论异步 Apex 时,
它将在自己的事务中执行。 因此,在此操作中,将有两个事务而不是一个事务。 因此,您的同步事务将是第一个,而此异步事务将是第二个。 因此,请记住,无论您要执行何种异步操作,它都将在自己的事务中执行。 现在,让我们看看 async Apex 的一些优点,
async Apex 在后台运行,因此用户不必等待此操作完成。 只要 Salesforce 服务器上的系统资源可用,此异步 Apex 代码将始终执行。 因此,当我们谈到调控器限制时,我们知道,当您执行同步操作时,
有一组特定的调控器限制适用于您的事务。 但在异步 Apex 的情况下,您将获得更高的调控器限制,因为异步 Apex 不会真实的执行,它仅在 Salesforce 服务器有一些可用资源时执行,以便它们可以为此类操作提供更高的调控器限制。
可以计划异步 Apex 代码。 这意味着你可以安排你的代码在特定的时间执行,可能是每周一次或每月一次,或者每天一次或两次。 因此,这取决于您的使用情形。 异步 Apex 代码可以处理更多的记录。
因此,当我们讨论真实的操作或同步操作时,我们必须再次遵循适用于这些事务的调控器限制。
但是在异步 Apex 的情况下,您可以处理更多的记录,我们将知道如何处理。
Apex 中的异步特征
Apex 提供了多种异步运行 Apex 代码的方法,确切地说,有四种方法可以编写异步代码。
第一个特性是 Future 方法,Future 方法是 Salesforce 平台上最常用的异步特性。 可以使用 Future 方法将一个事务处理分成两个不同的事务处理。 因此,这意味着将有一个单独的异步事务沿着您的同步转换,它们可用于执行长时间运行的操作。
例如,如果您希望获取更多的记录,可能超过 50000 条记录,或者如果您希望更新更多的记录,甚至如果您希望调用第三方系统。 所以,你可以在 Future 方法里写这些东西。
第二个最常用的异步功能是 Batch Apex, Batch Apex 是最好的工具,当你想操作数以百万计的记录,因为这个 Batch Apex 将你的记录分成更小的块或批,然后它对这些批进行操作。因此,每当我们谈论数百万条记录时,Batch Apex 都是适合您的工具。
下一个特性是 Queueable Apex, Queueable Apex 与 Future 方法非常相似,但它克服了 Future 方法的一些限制,我们在讨论 Queueable Apex 时可以详细讨论这一点。
最后一个异步功能是 Scheduled Apex, Scheduled Apex 是按特定计划运行的功能。 例如,如果您希望计划某段代码在特定时间运行,或者您希望为此创建一个重复事件,则需要使用计划的 Apex。
Oracle APEX 20.2 电子邮件发送
如何解决Oracle APEX 20.2 电子邮件发送?
我在oracle apex页面完成了email配置和email发送代码,但是无法正常发送邮件,有段时间运行还算顺利,但是突然卡住了,我的邮件出现在邮件队列中,谁能指导我不,这个过程中缺少什么东西?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
今天的关于在 Oracle APEX 中集成 SpreadJS和oracle的apex如何的分享已经结束,谢谢您的关注,如果想了解更多关于# Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到最新的 APEX 18.1、Apex 5.1插件不起作用-oracle-apex-5、Async Apex - 异步 Apex 概述、Oracle APEX 20.2 电子邮件发送的相关知识,请在本站进行查询。
本文标签: