ABAP domain 里 conversion exit 的设计原理
我们之前用了这个data element。 UI framework的getter 会自动检测data type的domain上是否维护conversion exit,如果有,就自动调用,我们没有写任何代码。
还是这个routine只控制ui field?
Conversion exit 有 in 和 out 这一对,out 负责data 输出的时候,自动被gui call到,
In 负责user input 执行结束触发PAI 时候自动被call到,
但这套东西只针对sap gui的环境,webclient ui里面就只能像现在框架里的getter 那样,由框架的开发人员手动去call 这些conversion exit。
如果正在运行一个transaction,这个时候系统有一个transport request import进来, 这个TR包含了一些DDIC object的change, 并且这些DDIC object正在被当前transaction使用,就会出现这个exception:
SAP的建议是在晚上user很少的时候import TR。用SGEN只能通过在user launch transaction之前预先生成最新的ABAP LOAD来避免这个问题,但是对于TR import之前已经load到memory开始执行的transaction则无能为例。
Hybris不会遇到类似的问题,因为其data type分为design time source和runtime artifact两种:
直接修改items.xml不会对runtime transaction造成任何影响 - items.xml的change必须重新build整个Hybris之后才会生效。
ABAP
使用事务码SM36或者SE80里的右键菜单:
Hybris
所有的cron job handler class必须声明AbstractJobPerformable为父类并重载perform方法。
在方法末尾必须返回执行结果是成果还是失败。
然后在Spring配置文件里注入这个bean:
Bean的id为oldPaymentSubscriptionResultRemovalJob:
执行这段代码:
完了就能在servicelayerjob里查询出来:
update 2018-09-19
Kubernetes也有job的概念:
Job是K8s用来控制批处理型任务的API对象。批处理业务与长期伺服业务的主要区别是
批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管
理的Pod根据用户的设置把任务成功完成就自动退出了。成功完成的标志根据不同的
spec.completions策略而不同:单Pod型任务有一个Pod成功就标志完成;定数成功型任
务保证有N个任务全部成功;工作队列型任务根据应用确认的全局成功而标志成功。
ABAP里的tenant isolation是通过DB table的client ID来区分的.
Hybris也有multi tenant的concept:
Hybris multi tenant典型的使用场景:
(1) Hosting SAP Hybris Commerce for several individual customers
(2) One single, corporate-wide SAP Hybris Commerce serving individual countries with individual product and customer data
(3) Using the SAP Hybris Commerce CMS module to power country-specific versions of a company website
在project folder下的project.properties里定义一个Hybris server上支持哪些tenant:
Hybris里tenant isolation是通过table name prefix来实现的
不同的tenant需要定义不同的table prefix:
配置文件的naming convention: tenant_.properties:
table prefix在.properties里的定义方式:
在admin console里对tenant进行管理:
- 点赞
- 收藏
- 关注作者
评论(0)