Unsupported type EVENT ?

Posted on January 10, 2009 - Filed Under Workflow | Leave a Comment

碰到了估计不会再碰第二次的问题,记录一下。测试环境上载新的工作流时,系统报如下错误: 1406: Workflow definition contains unsupported feature, cannot be uploaded to this database. 1603: Unsupported type EVENT in attribute XMLTRANSFORM/NEWDOCUMENT 1603: Unsupported type EVENT in attribute XMLTRANSFORM/EVENT 1603: Unsupported type EXTJAVA in function WFSTD/XMLTRANSFORM 1603: Unsupported type EVENT in attribute XMLGETTAGVALUE/EVENT 1603: Unsupported type EXTJAVA in function WFSTD/XMLGETTAGVALUE 1603: Unsupported type EVENT in attribute XMLCOMPARETEXT/EVENT [...]

工作流之超时处理

Posted on December 25, 2008 - Filed Under Workflow | Leave a Comment

在用Workflow Builder绘制工作流的时候,说简单点就是做两件事:定义Activity(活动)和Transition(移动)。Activity可以是复杂的逻辑运算,也可以是简单的判断、通知和反馈。对于需要回应的活动(比如审批意见),因为各种因素可能令响应者并未在预想的时间内做出反馈,这时就需要制定超时策略,否则,随着时间的推移,系统中将存在大量的遗留数据,这些数据很可能无法被清理。 例子:如果一天内未审批,则视为拒绝: 如果活动超时,工作流会标识该活动为超时状态。如果是通知,并且要求回应,则会发送一封取消通知的邮件给执行者(Performer)。对于是否接收取消通知邮件,取决于个人首选项是否选择接收电子邮件。如果是EBS内置版本,则可以在全局设置中禁止发送取消通知邮件。 如果活动定义了超时属性但是没有Timeout这个Transition流向下面的活动,则系统会根据该活动或父流程的相关定义来触发错误流程。对于超时处理,必须启动工作流后台流程,一个建议的频率是1到24小时。

Oracle 工作流优化概要

Posted on December 15, 2008 - Filed Under Workflow | Leave a Comment

对于Oracle工作流的优化方式主要分两大类,一类是流程设计上的优化,一类是数据库性能的优化。 流程设计优化: 仔细选择同步处理和异步处理模式。如果选择同步处理模式,则在提交后系统立即进行工作流处理,在流程结束前,前端程序将一直处于等待状态。如果选择异步处理模式,程序提交工作流后控制权立即返回,工作流后台引擎会根据设定的频率在后台进行处理。另外一种很少用到的处理模式是强制同步,系统不将数据插入数据库,直接用一个SQL,并且在一个Session中处理完毕。 尽量减少项目属性(通常用于存储全局变量)。当工作流启动时,系统会将这些属性全部拷贝一份,因而这会直接印影响工作流启动速度。另外,这些属性最好引用或保存静态变量,而不要去引用存放在数据库中的值。 尽量减少消息属性。如果需要在消息中存放不同的变量,也建议用最少的消息属性来实现,比如用Document来动态生成消息内容。 减少子流程,因为这需要消耗额外的DML操作和状态信息拷贝。 延迟活动。这是缩短响应时间最简单有效的办法之一,让一些需要较多处理时间的活动在后台交给工作流引擎处理,主流程则继续。 数据库性能优化: 分区。这通常在安装阶段即可进行,当然,在后期也可以进行。操作步骤可参考之前的文章《给工作流大表分区》。 清理过期数据。清理过期的运行时数据和WF_CONTROL数据,减少数据表大小。 最简单的优化方式,自然是在DB进行优化,比如定期清理。但是从设计角度考虑,同步、异步和延迟处理的配合使用,是更为得体的方式。各种方式,因时而异,因人而异。

工作流之大表分区

Posted on December 12, 2008 - Filed Under Workflow | Leave a Comment

如果打过了Patch 348000 (ORACLE APPLICATIONS RELEASE 11.5.10.2 MAINTENANCE PACK),那么工作流管理员指南(115wfag.pdf)里的对于关键表分区的介绍就过时了。进去看wfupartb.sql,你可以看到它提示已经被新的程序所取代。 新的文件是wfpart.sql,在 $FND_TOP/patch/115/sql 路径下。参考SQL文件头的使用说明执行,会在utl_file_dir目录(需要手工指定一个目录)下生成wfpart.sql,这才是具体的分区创建语句。不过需要留意的是,默认生成的wfpart.sql有个BUG(参见Note:329738.1),创建WF_ITEM_ACTIVITY_STATUSES_N4这个索引时会报错并自动终止退出,因此需要先手工修改wfpart.sql,加上以下Index创建语句: create index WF_ITEM_ACTIVITY_STATUSES_N4 on WF_ITEM_ACTIVITY_STATUSES (ASSIGNED_USER,ITEM_TYPE) pctfree 10 initrans 10 tablespace [your_table_space] storage (initial 40K next 1048576 freelists 32 freelist groups 4 pctincrease 0 ) logging; 注意:需要注释掉原来的Alter语句: alter index WFN_WF_ITEM_ACTIVITY_STATUSES_ rename to WF_ITEM_ACTIVITY_STATUSES_N4 由于执行的都是DDL语句,因此一旦出错将无法自动回滚,在执行前需要备份关键表,分别为: WF_ITEM_ACTIVITY_STATUSES WF_ITEM_ACTIVITY_STATUSES_H WF_ITEM_ATTRIBUTE_VALUES WF_ITEMS 如果是在等到感觉到性能问题了再来进行分区,等待的过程将相当漫长……如果想要撤销分区,则以同样方式执行wfunpart.sql。

Workflow Notification Email charset

Posted on October 31, 2008 - Filed Under Workflow | Leave a Comment

非英语国家阅读电子邮件,最讨厌的莫过于乱码。在工作流邮件中,以前都用Outlook,它对语言编码的兼容性是最好的,所以也没发现过什么问题,最近将客户端迁移到Gmail,才发现工作流邮件的编码有点问题。 直接查看邮件源码。标题: Subject: =?WINDOWS-936?B?(……省略……)==?= 正文编码: Content-Type: text/plain; charset=WINDOWS-936 Content-Transfer-Encoding: quoted-printable Content-Language: en 查询工作流默认语言及编码配置: 1 SELECT wl.nls_codeset 2 FROM wf_languages wl 3 WHERE wl.code = ‘ZHS’; NLS_CODESET —————————— ZHS16CGB231280 在这里,WINDOWS-936 是Windows中的简体中文的字符集,工作流邮件的字符集,是默认为我的邮件客户端应该是运行在Windows上吗?不知道Linux中的Mutt能否正确显示中文……不管它,既然是charset的问题,总是能配置的。 进入Workflow Manager,选择Workflow Notification Mailer并编辑,进入高级编辑选项,一路next到第4步: 选中Rest NLS,意思就是工作流通知邮件根据收件人首选项设置的字符集进行编码。修改完毕后发送测试邮件,看邮件代码: 标题: Subject: =?UTF-8?B?(……省略……)?= 邮件正文: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Language: en OK,告别乱码。

停止发送工作流邮件

Posted on October 31, 2008 - Filed Under Workflow | Leave a Comment

Notification Mailer停用一段时间后,总会积累一些待发送邮件,因此如果有需要重启mailer,需要清理过期的邮件。步骤如下: 更新WF_NOTIFICATIONS 中的STATUS为CLOSED,MAIL_STATUS为SENT。 如果STATUS为OPEN,MAIL_STATUS为MAIL,表示这部分数据将被送入发送队列。因此,此处需要手工标记为已发送。 $FND_TOP/patch/115/sql/wfntfqup.sql 更新队列。 (更新数据到WF_NOTIFICATION_OUT表,这里存放格式化后的邮件发送队列。注意,必须在停止Mailer和相应的Service Container后才能进行此步操作。) 之后用$FND_TOP/sql/wfver.sql检查WF_NOTIFICATION_OUT的Ready数目。 然后重启Workflow Notification Mailer即可。 P.S: 你也可以修改WF_NOTIFICATIONS中的BEGIN_DATE来修改发送日期

« go back keep looking »

  • Recent Tweets

    • “模块就如同人的器官,具有特定的功能。人体中最出色的模块设计之一是手,手只有几种动作,却能做无限多的事情。人体中最糟糕的模块设计之一是嘴巴,嘴巴将最有价值但毫无相干的几种功能如吃饭、说话、亲吻混为一体,使之无法并行处理,真乃人类之不幸。”
      16 minutes ago
    • 本机架设个IMAP服务器可以解决任何客户端的邮件迁移问题,快速,便捷,高效。
      12:16 PM Sep 06, 2010
    • 大智慧新用户注册时提示密码“可以是英文字母或数字,区分大小写”,但是仅限纯粹字母,或者纯粹数字,如果字母加数字竟然被提示不合法。
      12:26 AM Sep 02, 2010
    • 新官上任三把火啊,只是在技术层面依旧停留在ASP/.Net 时代实在有点无语。
      10:44 AM Sep 01, 2010
    • APEX Listener 支持直接上传XLS文件,改天抽空写一点。
      12:32 PM Aug 21, 2010

    Recent Comments

    • lifandong: 学习了,这网站可真清爽,资料也很多...
    • Zeeno: 可以免费的。 他有很多种授权方式,比如写篇博客推荐一番,他也可以给你授权码。...
    • Toney Wu: 有点意思。特别是这种手绘风格即能表达出其际功能,又省得界面开发出和画的不一样让人...
    • 明 强: 今天下班 在说笑中请到了三天假 他问我做什么 随便也提到了谢哥你的博客 我老大说...
    • Zeeno: Oracle ADF 是相对独立的开发框架,目前,ADF没有被EBS应用认证过,...