没有合适的资源?快使用搜索试试~ 我知道了~
首页Siebel编码最佳实践Siebel Scripting Best Practices Resource Document
资源详情
资源评论
资源推荐
Siebel 编码最佳实践
摘译自 Siebel Scripting Best Practices Resource Document
译者:罗勇 欢迎反馈意见至 luoyong@hitachi-helc.com
编码基础
编码:从何处开始?
基本处理流程,如图所示:
目的是:最需要的地方写最少的代码,且只写一次!
1. 找找看是否可用声明式配置的方法解决。在写代码前,开发人员应该先看看是否有其他的替代方法(不写代码的
方法)——声明式配置的方法。这是一个重要的步骤。这样就可以确保开发人员在没有配置方法可以解决的前提
下再写代码,因此来减少代码的数量。
2. 决定代码放在哪个对象上。共用代码一般应实现为 business service (后文将简写为 BS),这样可以从 applet,
Business Componet (后文将简写为 BC),BS 方便的调用共用代码,这样代码便是撰写一次,多处调用了。可以取
代在 BS 上写方法(method)的方法就是在应用程序级上写方法。Siebel 系统鼓励开发人员使用 BS,因为它可以被
工作流进程(workflow process)调用,但工作流进程不能调用自定义的应用程序级别的方法。如果某个方法处理
的是特定 BC 上的数据,那么代码最好写在这个 BC 上,这样做可以避免在使用该 BC 的 Applet 上多次复制类似
代码。如果类似的代码应用于多个 BC 上,那么将它移到 BS 上,BC 上使用不同的参数调用它。如果方法只是控
制 applet 的行为,比如控制一个按钮是否可用或者显示或者隐藏列,那么请作为 applet 服务器端代码(applet
Server script)来写。如果代码是跟客户端的桌面交互,那么请作为 applet 浏览器端代码(applet browser script)
来写。
3. 决定代码放在哪个事件上。对 BS 而言有两大类事件,分别是 Pre-event 类事件和 reactive 类事件。如果你只是
想执行某些验证,不会更改除了当前记录以外的任何记录的值,那么请使用 Pre-event 类事件,比如 PreQuery,
PreSetFieldValue, PreWriteRecord 等。你在用户的行为导致严重的后果前阻止它或者更改某些东西。永远不要使
用 Pre-event 类事件来更改除了当前记录以外的记录的值,因为这样做有可能导致程序处于不一致状态。如果记
录更改后还想做进一步操作的话,请使用 reactive 代码,该类代码一般用于 WriteRecord 事件,这在工作流
处理中比较常见,这类代码可以处理除了当前记录之外的其他记录的更改。对于 applet 而言,大部分 applet
浏览器端代码一般写在 Applet_PreInvokeMethod 事件中,在这个事件中开发人员可以捕获 applet 触发的
方法。用于和用户的桌面、用户、applet 外观交互的代码都应该写在 Applet_PreInvokeMethod 事件中。
Siebel 系统建议不要将所有方法的代码都写在 Applet_PreInvokeMethod 事件中,而是用来创建自定义方
法,并调用这些自定义方法。如果需要访问当前记录或者活动 BC 之外的记录,那么在服务器端的
WebApplet_PreInvokeMethod 事件中撰写代码。如果方法是处理某个 BC 的数据,那么,那么将代码放到
BC 上更好。然后,如果方法只是针对某个 applet 的数据,将代码写在 applet 上。对于 BS 而言,这是撰
写可被其他地方代码调用方法的理想地方。一般应撰写接受参数的方法来处理一类的需求。这将大大减少
在不同的对象和事件中复制代码的需要。因为任何代码,包括浏览器端代码都可以调用 BS,所以将代码
放到 BS 中是个理想的地方。Siebel 系统建议您不要把所有的方法代码都放到 Service_PreInvokeMethod
事件中,而是将方法代码分成多个小块代码,而从 Service_PreInvokeMethod 事件中调用它们。应用程序
(application)级别的代码也是放置共用代码的好地方,将共用代码放在应用程序级中还是 BS 中根据需求而
定。虽然应用程序级代码也是放置共用代码的好地方,但有些限制:应用程序级的浏览器端代码只能被其
他的浏览器端代码调用,应用程序级的服务器端代码只能被其他的服务器端代码调用。工作流进程不能访
问应用程序级代码。所以,如果希望代码能被浏览器端代码和服务器端代码调用,或者希望工作流进程能
调用,那么写在 BS 中更好。
4. 添加错误处理模版。在撰写任何代码前先在合适的地方添加错误/异常处理策略,主要是添加错误处理模版应用
于事件中。在撰写方法代码前先应用错误处理框架能保证两件事:1. 错误处理块存在;2. 对方法的处理(调用)
不会产生没有意识到的运行时错误。
5. 添加方法主体。将方法主体代码添加在错误处理框架中,这样你就能捕获任何运行时错误。
6. 测试。这是编码最后一步也是很重要的一步。确保测试是充分的,囊括了所有可能的情况。
编码最佳实践
什么时候才使用编码来解决问题?
把编码当成最后一个解决问题的方法。如果通过配置能满足需求请不要编码来解决。声明式的配置更加容易维护和
升级,拥有成本更低。
遵循标准的命名规范
数据类型命名规范
数据类型名
数据类型名(中文名称)
变量命名前缀
Integer
整型
I
String
字符形
S
Boolean
布尔型
B
Float
浮点型
f
不同作用域范围变量的修饰符
作用域
修饰符
全局作用域(仅适用于 Siebel VB)
G_
模块/实例 范围
M_ 或者 i_
函数或者局部作用域
不需要修饰符或者 l_
为代码添加注释
团队最好达成一致的注释风格。在方法的头部包括注释来说明方法的用途和修改历史,而且一定要维护好,否则将
来可能会令人迷惑或者使人误解或者变成错误的。注释示例:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name: MyProcedure()
' Module: BusComp [Account]
' Arguments:
' oBC1BusComp BusComp for ABC (positioned)
' oBC2BusComp BusComp for XYZ (not yet ' positioned)
'
' Return Value: Integer ContinueOperation -> Relationship is OK
' CancelOperation -> Relationship is not OK
'
' Used Globals: gintCheckIt Set to 1 in
' [Quote].[BusComp_ChangeRecord]
' Evaluated and Reset here
'
' Static Vars: mintChecked Set to 0 in [Account].
' [BusComp_ChangeRecord]
' Evaluated and Set to 1 here
'
' NOTE: Procedure might be called recursively!!!
' History
' Date Author Purpose
' 8/14/03 SBoetigOriginal Creation
'
' Description: This procedure contacts Webline and retrieves
' a bunch of data that is stored on the
' Action BC in Siebel to maintain a sort of audit record.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
知道何时使用浏览器端代码,何时使用服务器端代码
浏览器端代码建议在如下场合使用:
1. 与用户交互
2. 与桌面应用程序交互
3. 对当前记录的验证与处理
服务器端代码建议在如下场合使用:
1. 查询、插入、更新和删除操作
2. 访问本条记录之外其他记录的数据
将代码放到合适的事件中
写代码出现最多的问题是将代码放到不合适的事件中。不 要 使 用 应 用 程 序 级 的 Pre 类事件( 比如
PreQuery,PreSetFieldValue,和 PreWriteRecord)来处理非代码所在的对象中的数据。伴随事件(companion event),比
如 Query, SetFieldValue, 和 WriteRecord 是在内部和字段级的验证通过后才触发,所以是放置处理数据代码的好地方。
比如,WriteRecord 事件是记录成功保存后才触发的,当这个事件触发时,可以确定该记录的存在了,你就可以在其
他对象中安全的创建或者处理数据了,不用担心孤立数据或者程序状态的不一致。
eScript 事件及常用用途:
事件
常用用途
事件发生时间说明(罗勇补充)
BusComp_PreSetFieldValue
字段级别的验证
发 生 在 用 户 手 动 输 入 或 者 通 过 调 用
SetFieldValue 将值写入到 BC 之前触发
BusComp_PreWriteRecord
记录级别的验证
在记录被保存到数据库之前触发,可用于在
保存记录前执行必须的最终的验证
BusComp_SetFieldValue
字段触发的动作
发 生 在 用 户 手 动 输 入 或 者 通 过 调 用
SetFieldValue 将值写入到 BC 之后触发
BusComp_WriteRecord
记录触发的动作(比如用来同步
两个 BC 或者创建活动)
记录被保存到数据库之后触发
BusComp_PreQuery
代码用来控制 SearchSpecs
(译文:查询条件)
查询执行前触发
在频繁触发的事件处理器中使用快速代码
应该避免在频繁触发的事件处理器中使用复杂的代码,比如在事件 BusComp_PreGetFieldValue(罗勇补注:该事
件在 BC 字段的值可以访问时触发)中使用复杂代码,因为这样会降低系统性能。
PreGetFieldValue 会为每个字段获取到值时至少触发一次,可能会发出该事件数百次,在该触发器中使用复杂的
代码会降低系统的性能。
开发人员一般在 PreGetFieldValue 事件中使用代码返回一个不同于数据库中存储值的其他值,一种替代方法,
就是使用计算字段。计算字段使用计算表达式来执行逻辑,然后显示计算后的值。在这种情况下,siebel 显示的是
计算字段的值,而非真实的字段值。
对于其他经常触发的事件,尽量使用配置来代替编码,如果配置不能解决一定要使用代码时,代码一定要尽量
简单。一个可以替代复杂的计算表达式的方法是创建一个使用 InvokeServiceMethod 函数的计算字段。这个函数允许
你通过计算字段调用某个 BS,并将该 BS 的输出值作为该计算字段的值。值得注意的是,不要在列表式 Applet 中使
用调用 BS 的计算字段,因为它可能对性能带来负面影响。
使用运行时 BS 还是编译后的 BS
BS 是在 Siebel Tools 中定义的,可以随.srf 文件一起编译,或者被创建为存在于客户端用户界面中的运行时 BS。
是使用编译后的 BS 还是运行时 BS 处决于你要 BS 做什么以及 BS 中的代码更改是否频繁。
运行时 BS 不会编译到.srf 文件中,这种 BS 的代码保存在数据库中,你可以随时更改它。这种 BS 代码运行时都
是使用最新的 BS 定义。这种特征使它适合于编写逻辑经常变化的 BS 代码或者需要在不发布新.srf 文件的情况下发
布 BS。这种 BS 的缺陷是任何具有访问商务服务管理员视图(Business Service Administration view)的人都可以看
见代码,这可能会导致安全性问题。
运行时 BS 在开发环境下通过 BS 模拟器(business service simulator)来测试经常变更的代码非常有用。因为不
需要编译,所以代码部署要快得多。一旦代码完成并且通过模拟器进行了测试,开发人员还可以选择 BS 继续保存
为运行时 BS 还是整合到 Siebel Tools。
编译后的 BS 是在 Siebel Tools 中定义的,它适用于需要更高安全性和不怎么更改的功能。你需要编译它,并且
通过一个新的.srf 来应用更改。因为这种 BS 是编译好的,所以具有更高的安全性,且装载的速度更快。
注意:如果你定义了一个名称为 MyService 的运行时 BS,同时还将其定义为编译后的 BS,那么将会执行编译后
的 BS,而运行时的 BS 将会被忽略。为了更加清楚的表达你的意思,你将一个 BS 从运行时整成编译后 BS,你应该
禁用运行时 BS 或者干脆删除它,这样就明白无误的告诉他人运行时 BS 不再使用了。
剩余17页未读,继续阅读
罗勇爱分享
- 粉丝: 10
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2