Archives for 2009

Oracle Workflow 终篇

众所周知,在EBS历代版本中,Workflow的应用(包括业务事件)非常广泛。我觉得它最有价值的地方就在于,它采用的是PL/SQL语言开发。 Oracle Workflow内置于数据库中,拥有独立版本,也有EBS内置版本,通常用的都是EBS内置版本。所谓的内置,其实也只是除了工作流引擎之外的一套管理界面和工具。所以从版本上讲,Workflow版本是单独来讲,和EBS毫无关系。目前,EBS 11i和R12使用的Workflow版本都是一样的,最新版本是2.6.4。并且,该版本不会再有升级。如果EBS有R13版,如果R13还有Workflow,那它的版本依旧是2.6.4。当然,每个EBS版本都对此进行了少量改进,R12的Workflow增强了Web Services1相关功能(仅仅是相关功能)。 现在,公开可下载的Workflow是2.6.3,2.6.4版本的Workflow包含在RDBMS 10.2中。在新的应用中,Oracle推荐用BPEL,这是一套基于Java的工作流引擎,运行在Oracle SOA Suite上,但不是免费的。 如果你对PL/SQL情有独钟,或者认为它已经足够强大并且足够简单,可以继续使用Oracle Workflow 2.6版本,不过它已不再内置于新的数据库中,11g开始就没有了。 一款同样基于PL/SQL的工作流PL/FLOW,有兴趣的可以一看。如果不在乎是否免费,则完全可以转向BPEL。如果是一名Oracle ERP实施顾问,也可以开始深入学习BPEL了。 仅针对2.6.3版本及以上才有,因为2.6.2及以下版本没有相关的API。见Note. 363025.1 [↩]

Oracle CertView

今天在Oracle博客上讨论最多的话题是什么?就是CertView。 数日之前,Oracle宣布解除和Prometric的合作关系,转之以Pearson VUE。原先Prometric的数据需要自行转移到CertView。相对于之前更加方便的一点是:它提供了认证历史查看和证书外发功能。记得寻找第一份工作时,面试要带上所有的证书复印件,真是麻烦。虽然好多年没经历过了,但是那种拿着文件夹傻兮兮的样子,真是终生难忘。 基本上,有个OCP和OCE认证,除非真想做个Oracle数据库大师级人物,一般来讲,是不会去升级认证的了。不过,花点时间把Prometric数据转移到CertView还是值得的,至少也是职业生涯中的一段历史,保留一下也好。

APEX与EBS登录权限集成

APEX的访问权限主要分为两种:Authentication和Authorization,简单来说,前者控制登录权限,一次登录各处可用;后者控制各页面或模块的权限。事实上,APEX应用中甚至无需管理用户数据,你所需要的是管理逻辑上的权限,而不需要存储权限数据本身,如此,登录权限的管理便可以非常灵活。 而EBS的权限控制稍微复杂一点,但是从登录权限来看却简单许多,主要是通过包FND_WEB_SEC来进行验证,如: SQL> set serveroutput on SQL> exec dbms_output.put_line(fnd_web_sec.validate_login(‘ZEENO’, ‘PW123′)); Y PL/SQL procedure successfully completed 只需要调用该过程,即可直接使用EBS的用户登录了。如果APEX和EBS分处不同的数据库中,则可以使用远程过程调用方式: fnd_web_sec.validate_login@DBLINK(‘ZEENO’, ‘PW123′); 首先,APEX本地库中创建验证函数: CREATE FUNCTION ebs_auth(p_username IN VARCHAR2, p_password IN VARCHAR2) RETURN BOOLEAN AS BEGIN — 使用EBS远程验证 IF fnd_web_sec.validate_login@dblink(p_username, p_password) = ‘Y’ THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END ebs_auth; 按照规范,需要添加p_username和p_password两个参数。 接下来,在APEX中创建新的Authentication Scheme,一切按正常方式进行,所需要改动的,是将上面的验证函数添加到Authentication Function: 如此,即可使用EBS用户、密码进行登录了。

为什么要学APEX

why-learn-apex

XDB取消浏览器认证

APEX安装后,默认访问路径为http://host:port/apex/,如果直接访问根目录,会弹出浏览器认证窗口要求登录。对于多数浏览器,比如IE或者Firefox都没有问题,但是少数浏览器,会自动访问网站根目录,比如查找默认favicon,此时会时常弹出浏览器登录认证窗口,虽然可以直接取消,但是非常烦人。原因便是XDB对用户ANONYMOUS账号权限的设定,访问apex之外的目录需要登录。这个认证窗口,是可以取消的。 在安装APEX时,最后步骤要求UNLOCK ANONYMOUS账号: ALTER USER ANONYMOUS ACCOUNT UNLOCK; 该操作启用了ANONYMOUS账号,但是并没有赋予匿名访问XDB Repository的权限。 进入$ORACLE_HOME/RDBMS/Admin,用sysdba权限登录执行: SQL>@epgstat 检查Allow repository anonymouse access值,默认为false,即默认禁止匿名访问根目录。我们需要将该值修改为true。 所有XDB的配置都存放在xdbconfig.xml中,但是该文件需要编程修改。查看路径为: 1. EM用sysdba登录。 2. Database Instance > XML Database Resources > View XML Database Resource: xdbconfig.xml 默认httpconfig节点中并没有allow-repository-anonymous-access的配置,EM中无法修改该文件,我们需要用以下代码添加节点: DECLARE l_configxml xmltype; l_value VARCHAR2(5) := ‘true’; — (true/false) BEGIN l_configxml := dbms_xdb.cfg_get(); IF l_configxml.existsnode(‘/xdbconfig/sysconfig/protocolconfig/httpconfig/allow-repository-anonymous-access’) = 0 THEN — Add missing element. [...]