原文:Integrate your Cloud Computing Apps with Salesforce.com, Java
作者:Andrew Lawlor
出处:http://www.devx.com/SaaS/Article/44382/0/page/1
[译文] 使用Safesforce.com和Java来整合云计算应用(上)
Force.com的应用控制器层
用户接口层有着很好的“视图”和“控制”的分离,本节着眼于如何充实控制器以调用web service,这样就可以显示适当的数据。
可以注意到<apex:page>包含了扩展的属性,该属性标明了名为AccountServiceController的控制器(MVC中的C)扩展,这就是我们扩展Financial_Account_c对象这一标准Visualforce控制器的行为的地方,通过整合外部的web service来增加检索账户余额这一功能,以下是Apex类的完整清单:
global class AccountServiceController {
Financial_Account__c account;
String balance ='';
//控制器
public AccountServiceController(ApexPages.StandardController stdController) {
this.account = (Financial_Account__c)stdController.getRecord();
}
//设置和获取账户余额
public String getAccountBalance() {
String accountNumber = [Select Account_Number__c from Financial_Account__c where Id=:account.Id].Name;
//调用服务
balance = showBalance(accountNumber);
return balance;
}
public void setAccountBalance(String balance) {
this.balance = balance;
}
//向外调用web service
static String showBalance(String accountNumber) {
String accountBalance = '';
/向外调用验证
String isValid = AuthenticationCallout();
System.debug('Auth Result '+ isValid);
if(isValid == 'true'){
AccountService.AccountServicePort stub = new AccountService.AccountServicePort();
stub.setApexTest(testFlag);
accountBalance = stub.getAccountBalance(accountNumber);
}
return accountBalance;
}
//验证调用 (低成本—真实情况下使用双向SSL)
public static string AuthenticationCallout (){
HttpRequest req = new HttpRequest();
req.setEndpoint('https://aptaria.com:9081/HttpAuthentication/Authenticate');
req.setMethod('POST');
req.setBody('username=admin&password=admin123');
Http http = new Http();
String result = '';
// 既然不是在做测试,我们发起一个真正的调用
HttpResponse res = http.send(req);
System.debug('Authenticateresult'+res.getHeader('authValid'));
result = res.getHeader('authValid');
return result;
}
}
Visualforce在试图为{!AccountBalance}完成变量替换时自动地调用getAccountBalance方法,该方法使用SOQL标明了来自页面上下文的账户号(AccountNumber),并调用了showBalance方法,showBalance方法首先使用简单的身份验证来检查到外部web service的权限,在真实的实现中,你可能会想要更强有力的整合形式——例如双向SSL之类的方式。
一旦验证通过,方法就会调用我们导入WSDL文件时自动生成的AccountService方法,该方法相应地调用外部的web service并返回指定账户的余额,Visualforce随后透明地给用户显示返回的账户余额,仿佛数据是驻留在云一端的。
通力合作
机构内部的账户余额服务是可用的,并通过Apache Axis来启用Web Service,Force.com平台的网络安全设置已经配置成允许向外发送的Web Service调用可以调用这一关键服务,WSDL已被加载到我们的应用中,使得我们的应用能够很容易的调用外部的web service,账户页面上的Visualforce已经修改成使用控制器扩展来提取账户余额,这一控制器扩展被编码成调用由WSDL自动生成的代码来调用外部的AccountBalance这一web service。
当用户登录到理财应用上并浏览到某个指定账户号(例如10001002)的金融账户页面时,屏幕如下显示:
这里的关键之处在于,账户10001002的账户余额($12,345.68)与该账户页面中其他数据看起来没有什么区别(尽管因为网络的等待时间在这一字段显示之前会有轻微的延迟),用户不会知道该数据是由外部的资源提供的,该整合模式的聚合提供了对这一敏感数据的无缝透明的访问。
其他的整合场景
前面的演示重点集中在外出的Web Service调用这一用例上,不过对于一个成功的云提供者(cloud-source)策略来说,其他的场景也是同样重要的。该应用通过调用机构内部应用中的更新数据的服务,可用来完成账户转账的用例。无论何时只要有数据发生变化,你就可以使用内置的Froce.com触发器和工作流功能来执行这一过程,或者使用代码调度器来指定一天或者一周中的某些特定时间中进行这样的转账。
相反,机构内部的应用能够通过传入的整合访问构建在Force.com平台上的应用的业务逻辑和数据,为了启用这一功能,只要简单地把webservice这一关键字添加到任意的Apex方法中就可以了——Force.com栈会处理余下的所有其用来装备web service的工作。例如,机构内部的基础设施可能会调用Force.com的一个web service来返回Force.com组织(org)中的可用账户的总数,一旦Apex方法已做了web service的启用,就可以使用Force.com平台来简单地生成相应的WSDL文件,该文件可被加载到外部的基础设施中,以便能够很容易地与云应用作整合。
使用Force.com进行整合的一个常见用途是同步两个互补的企业系统之间的数据,许多组织机构使用Salesforce.com来建立CRM应用,而使用其他的诸如SAP或者Oracle的应用来构建ERP,至关重要的是,这两个企业系统要正确地同步他们的账户数据,整合通常用于这一目的。由于新的客户被封闭在Salesforce.com的CRM系统中,作为一种实现和支持,可以使用外出的web service调用来通知下游的ERP系统。一种相反的情况则是,客户通常被直接添加到ERP系统中,在这种情况下,ERP系统可通过进来的web service调用来向Force.com上的应用通报新的账户。
其他的整合场景包括电子邮件服务(发送或者接收来自可信任源的电子邮件),当然还有调用基于HTTP的服务而不是本文中使用的SAOP服务这种情况。
小结
本文探讨了如何整合Force.com平台和机构内部的基于Java的基础设施,我们展示了通过把机构内部的Java服务的数据和逻辑直接整合到Force.com应用上,聚合如何被用来无缝安全的利用这些数据和逻辑,然后大概描述了其他的一些整合技术。
Force.com平台提供了无缝整合以云为源的应用到企业中的强大能力,构建在Force.com平台上的应用能够很容易地生产或者消费现有应用的数据和服务,更多的开发者资源可在http://developer.force.com的Developer Force上找到。
- 大小: 42.7 KB
分享到:
相关推荐
世纪大学英语应用型综合教程U译文PPT课件.pptx
21世纪大学英语应用型综合教程2U3译文PPT课件.pptx
《封建论》译文.doc.pdf
Java的虚拟机(JVM)允许编译后的Java代码在任何支持Java的设备上运行,这极大地推动了其在各种领域的应用,包括桌面应用、企业级应用、移动应用(尤其是Android系统)以及云计算等。 在软件开发中,Java语言提供了...
阅微草堂笔记译文+原文.pdf
UnitWhataretheshirtsmadeofSectionB译文PbPPT课件.pptx
孙权劝学译文及注释.pdf
这是一个用于管理多语言资源的译文管理系统,由于用户分布于全球各地,公司的 App 需要显示多语言,Android 和 iOS 有大量的译文需要管理,手工维护极其麻烦,于是这个系统诞生了,方便 translator 在平台翻译,翻译...
40首古诗词译文与赏析.doc
小学必背古诗与译文75首.doc
颜真卿多宝塔的常识碑文及译文V1.01.pdf
InformationWeek为此提供了云计算博客、每周通讯和深度分析报告,帮助读者更好地理解和应用云计算。 总的来说,云计算是一种革新性的IT服务交付模式,为企业带来了新的机遇和挑战。通过深入了解各大供应商的服务,...
《题玄武禅师屋壁》原文译文及赏析.docx
《李广将军列传》原文译文对照文档.pdf
根据提供的文件内容,以下是关于开关型磁阻电动机和步进电动机应用技术的知识点整理。 ### 开关型磁阻电动机译文集知识点 1. **开关型磁阻电机简介**:开关型磁阻电机(SR电机)是一种交流变速传动的新机种。其...
柳宗元《首春逢耕者》译文及注释.pdf
《大学》原文、注释、译文、读解.doc
人教高一英语必修一课文译文PPT教案.pptx
大学英语课后习题答案及TexaA译文精美篇.docx
离骚注释、解义,原文译文对照版.doc