Fighting bird分享 http://blog.sciencenet.cn/u/tonia

博文

Force.com的多租户架构理解(三)

已有 5544 次阅读 2010-5-3 15:18 |系统分类:科研笔记| salesforce, architecture

7. 应用程序开发,逻辑,和处理

Force.com支持两种不同的方法创建和定制应用的个体组件:一是声明的方式,使用本机平台的应用框架,二是编程方式,使用应用程序编程接口(API)。以下部分解释一下每种方法及其相关的应用开发主题。

7.1 应用框架

开发人员可以使用本地”Force.com应用程序框架,以声明的方式构建自定义的Force.com应用程序。该平台的原生的point-and-click界面支持应用开发过程的所有方面,包括应用数据模型的创建(自定义对象及它们的字段、关系等),安全和共享模式(用户、组织等级、资料等),用户界面(屏幕布局,数据录入表格,报告等),以及逻辑和工作流程。Force.com应用程序框架的用户接口很容易建立,因为不涉及编码工作。幕后,它们支持所有常见的数据访问操作,包括查询,插入,更新和删除。每个本地平台应用执行的数据操作一次修改一个对象,并在另一个单独的事务中自动提交每个改变。

Force.com的本机集成开发环境(IDE)提供了轻松访问许多内置平台功能的特性,使它易于实现通用应用的功能而不用写复杂且容易出错代码。这些特性包括声明性工作流,加密/隐藏字段,验证规则,公式字段,上卷汇总字段和跨对象验证规则。

工作流是一个预定义的行为,在插入或更新一个对象实例(行)时触发。工作流可以触发一个任务,电子邮件提示,更新一个数据字段,或发送消息。工作流规则规定了决定何时触发工作流行为的标准。工作流可以被设置为立即或在触发事件之后的间隔内执行。例如,开发人员可以声明一个工作流,记录更新后立即自动将该行的状态字段更新为“modified”,然后发送一个电子邮件提示。所有的工作流操作都在触发工作流的事务范围内发生。系统回滚事务时,所有相关工作流程也被回滚。

当定义对象的文本字段包含敏感数据时,开发人员可以很容易配置该字段,Force.com加密相应的数据并可以选择性地使用输入掩码来隐藏屏幕信息。Force.com加密字段使用AES(高级加密标准)算法的128位密钥。

声明验证规则是组织不通过编程方式强制域完整性规则的一种简单方式。如图9的第二个截屏展示了开发者是怎样使用简单的IDE表单来为LineItem对象添加一个字段,并计算出LineTotal的值。

一个上卷的汇总字段是一个跨对象的字段,使父对象中聚集子字段信息变得简单。如图9中的最后一个截屏,展示了如何使用IDE基于LineItem对象的LineTotal字段,在SalesOrder对象中创建一个OrderTotal汇总字段。

注: 从内部来看,Force.com使用原始数据库的功能实现了公式和上卷汇总字段,并在正在进行的事务中有效地同步重新计算它们的值。

9:声明验证规则、公式字段和上卷汇总字段是简单的配置步骤而非复杂的编码任务。

7.2 元数据和Web服务API

Force.com还提供了卓越的API来构建应用程序。这些API与基于SOAP的发展环境相兼容,包括Visual Studio.NETC#)和Apache AxisJavaC + +)。

应用程序可以利用Force.comAPI与其他环境集成。例如,应用程序可以利用API访问其他系统的数据,建立来自多个数据源的信息整合的mashups,包括作为应用过程一部分的外部系统,或者建立胖客户端与Force.com平台数据库管理系统进行交互。

Force.com 的元数据API对于管理应用程序组件是有益的,创建并修改元数据对应自定义对象的定义,页面布局,工作流等。应用程序可以使用Force.com Web服务的API来创建,检索,更新或删除对象实例(数据行)。

要访问Force.com Web服务,开发者先下载一个Web服务描述语言(WSDL)文件。然后这个开发平台使用WSDL文件生成一个API来访问组织相应的Force.com Web服务(数据模型)。有两种类型的Force.comWSDL文件。企业WSDL文件是为构建组织特定的应用的开发者提供的。一个企业WSDL文件是一个强类型,它代表一个组织的数据模,并提供了有关组织模式、数据类型、字段、开发环境等信息,允许组织与Force.com Web服务之间更紧密的整合。如果自定义字段或自定义对象从一个组织的应用模式中被添加、重命名或删除,那么这个企业WSDL将发生变化。相比之下,合作伙伴WSDL文件是为开发服务于多个组织的客户端应用程序的salesforce.com合作伙伴提供的。合作伙伴WSDLForce.com对象模型中表现为弱类型,并提供了一个用于任何组织内访问数据的API

7.3 批量处理的API调用

对于事务密集型应用,将重复性操作联合起来批量执行,可以减少开销,且执行效果更好。例如,应用加载一个对象的多个实例可能采用两种不同的方式。一个低效率的办法是使用一个例程循环插入单个对象实例,一个插入操作一个API调用。另一种更有效办法是建立一个对象实例数组并在一个API调用中执行插入。

应用型的Force.com Web服务API调用如create()update()delete()均支持批量操作。为了获得最大的效率,一个明确的批量操作所有相关的内部步骤实际上平台都是批量执行的,如图10

10Force.com的批处理引擎将批量操作本身相关的每个内部步骤都作为批量操作执行,

同时有利于继续曾经异常的行操作。

10也显示了Force.com批处理引擎的独特机制,可以考虑任何步骤中遇到的隔离故障。当批量操作在部分保存模式下启动,引擎识别出已知的开始状态,然后尝试执行过程的每个步骤(批量验证字段数据,批量火灾预触发器,批量保存记录等)。如果引擎检测到过程中任何一步发生错误,则回退违规的操作及其副作用,删除故障相关的行,并试图继续批量处理其余的行子集。这一过程在每一阶段迭代,直到该引擎没有任何错误地提交了一个行子集。应用程序可以检查返回的对象,以确定哪些行操作失败了以及它们提出的抛出了何种异常。

注:在谨慎的应用中批量操作也可以全有或全无的模式进行。此外,批量操作过程中触发器的执行受到内部工作量限制的制约。

7.4 删除,恢复删除和回收站

当有人从一个自定义对象删除单个对象实例(即记录)时,Force.com通过修改该对象实例的isDeleted字段(在数据表中)简单地标记其删除,从而有效地将对象放入回收站。Force.com允许用户在数据被永久将删除之前从回收站中查看和恢复达30天的对象实例。该平台基于组织许可的用户总数限制一个组织需要维护的记录总数。

当有人删除包含主从关系的父记录时,Force.com在确保不触犯任何参照完整性规则的前提下自动删除所有相关的子记录。例如,当用户删除一个SalesOrderForce.com自动级联删除依赖的LineItems。只要有人随后从回收站中恢复父记录,该平台将同时自动恢复其所有的孩子对象实例。

相反,当有人删除包含查找关系的引用父记录时,Force.com自动将所有相关项设置为空。如果有人随后恢复父记录,Force.com自动恢复以前清空的查找关系,但对那些被重新分配关系的删除和还原操作除外。

回收站还存储删除的字段及其数据,直到它们被永久删除或已删除超过45天。在此之前,整个字段及其所有的数据都是可以恢复。

7.5 数据定义处理

某些类型的对象定义修改需要更多而不仅仅是简单的UDD元数据的更新。在这种情况下,Force.com使用有效的机制减少多租户应用对平台整体性能的影响。

例如,考虑当有人将某一列的数据类型由picklist修改为text,幕后究竟发生了什么。Force.com首先为列数据分配一个新的slot,将值批量复制到标记为picklist的列上。然后更改列的元数据,使它指向一个新的slot。当这些发生的时候,数据访问仍然正常,应用程序功能上也没有什么明显的影响。

再看一个例子,考虑当有人向表中添加一个上卷汇总字段(roll-up summary field)。在这种情况下,Force.com在后台使用高效的批量操作异步计算初始的汇总值。当进行后台计算的时候,这时用户查看这个新增字段,会收到一个提示说Force.com平台正在计算该字段的值。



https://blog.sciencenet.cn/blog-425672-319232.html

上一篇:Force.com的多租户架构理解(二)
下一篇:Force.com的多租户架构理解(四)
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-3 06:15

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部