SlideShare a Scribd company logo
Cloud-to-Intranet messaging
by Force.com Streaming API

        Shinichi Tomita
           @stomita
        Mashmatrix, Inc.
Cloud-to-Intranet
messaging in Force.com
•   HTTP callout / Outbound Messaging
    -   Open inbound HTTP port on firewall
        (Almost impossible for usual companies)
•   API Polling
    -   Not realtime / Consumes a lot of API quotas
•   Force.com Streaming API
    -   No need to open inbound port on firewall
    -   Almost realtime
Force.com Streaming API
• Enables push notification from Server
  to subscribed client(s)
• GA in Spring ’12
• Standard based (Bayeux protocol)
 - Client libraries available in various
    languages
Message flow
   for generic request clients
1. SecureConnect request client creates a record which includes
   request message to Intranet resource server
2. Force.com publishes a notification to its request channel
   subscribers (= SecureConnect resource server)
3. Resource server processes the request and access to the
   resource data behind the firewall
4. Resource server returns response by updating the request
   record
5. Force.com publishes a notification to its response channel
   subscribers (= SecureConnect request client), and
   SecureConnect request client receives response
Message flow
 for generic request clients

                                                3. resource
                                                  accesss

                                4. response
                  1. request

                                                  Resource
                                                   Server

                 5. Streaming    2. Streaming
Request Client
Callout from Apex
• On submitting request, register an object
  which implements ResponseListener
  interface
  -   Both request message and response listener
      object are serialized and inserted as a record

• Registered response listener is callbacked
  by Apex trigger when the response arrived
Callout from Apex

                                              3. resource
                                                access
                               4. response
                 1. request
 Apex Class

                                                 Resource
  Response
   Listener       5. trigger                      Server
                               2. Streaming
Request Client
Sample code
/**
 * An example client which link opportunity information to intranet system via SecureConnect
 */
public class OpportunitySynchronizer {

	   public static void linkToExternalSystem(Opportunity opp) {
	   	    String oppJson = JSON.serialize(opp);
	   	    SecureConnect.request('opps/link', opp.Id, new PropagateResponseListener(opp.Id));
	   }
	
	   /**
	     * Callbacked when the response arrived from intranet server
	     */
	   public class LinkResponseListener implements SecureConnect.ResponseListener {
	   	     public Id oppId { get; set; }

	   	    public LinkResponseListener(Id oppId) {
	   	    	    this.oppId = oppId;
	   	    }

    	    	public Type getClassType() {
    		        	return LinkResponseListener.class;
    	    	}
    	
    	    	public void onResponse(String responseCode, String responseData) {
    		        	if (responseCode == 'success') {
	        		        	String extId = responseData;
	        		        	Opportunity opp = new Opportunity(Id=this.oppId, ExtId__c=extId);
	        		        	update opp;
    		        	}
	        	}
    	}
}
Project on GitHub

• http://github.com/stomita/fdc-secureconnect

More Related Content

Viewers also liked

Peoplelink Videoconference
Peoplelink VideoconferencePeoplelink Videoconference
Peoplelink VideoconferenceRenju7
 
Engaging lawyers in a social intranet
Engaging lawyers in a social intranetEngaging lawyers in a social intranet
Engaging lawyers in a social intranetVanessa Toholka
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryAlek Davis
 
Intranets In The Cloud: What You Need To Know - SPSToronto
Intranets In The Cloud: What You Need To Know - SPSTorontoIntranets In The Cloud: What You Need To Know - SPSToronto
Intranets In The Cloud: What You Need To Know - SPSTorontoRichard Harbridge
 
Intranet mailing system
Intranet mailing systemIntranet mailing system
Intranet mailing systemsaili mane
 
Intranet Mailing System Rahul Raj
Intranet Mailing System Rahul RajIntranet Mailing System Rahul Raj
Intranet Mailing System Rahul Rajvishnu56
 

Viewers also liked (9)

GLOBAL CLIMATE CHANGE
GLOBAL CLIMATE CHANGEGLOBAL CLIMATE CHANGE
GLOBAL CLIMATE CHANGE
 
Intranet Files Sharing Communication -Antony Vincent Sacred Heart College
Intranet Files Sharing Communication -Antony Vincent Sacred Heart CollegeIntranet Files Sharing Communication -Antony Vincent Sacred Heart College
Intranet Files Sharing Communication -Antony Vincent Sacred Heart College
 
Peoplelink Videoconference
Peoplelink VideoconferencePeoplelink Videoconference
Peoplelink Videoconference
 
Engaging lawyers in a social intranet
Engaging lawyers in a social intranetEngaging lawyers in a social intranet
Engaging lawyers in a social intranet
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
 
Intranets In The Cloud: What You Need To Know - SPSToronto
Intranets In The Cloud: What You Need To Know - SPSTorontoIntranets In The Cloud: What You Need To Know - SPSToronto
Intranets In The Cloud: What You Need To Know - SPSToronto
 
Intranet mailing system
Intranet mailing systemIntranet mailing system
Intranet mailing system
 
Intranet Mailing System Rahul Raj
Intranet Mailing System Rahul RajIntranet Mailing System Rahul Raj
Intranet Mailing System Rahul Raj
 
Slideshare ppt
Slideshare pptSlideshare ppt
Slideshare ppt
 

Similar to Cloud-to-Intranet messaging by Force.com Streaming API

CIS 2012 - Going Mobile with PingFederate and OAuth 2
CIS 2012 - Going Mobile with PingFederate and OAuth 2CIS 2012 - Going Mobile with PingFederate and OAuth 2
CIS 2012 - Going Mobile with PingFederate and OAuth 2scotttomilson
 
Performance #4 network
Performance #4  networkPerformance #4  network
Performance #4 networkVitali Pekelis
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveBin Chen
 
Networked APIs with swift
Networked APIs with swiftNetworked APIs with swift
Networked APIs with swiftTim Burks
 
JWT - Sécurisez vos APIs
JWT - Sécurisez vos APIsJWT - Sécurisez vos APIs
JWT - Sécurisez vos APIsAndré Tapia
 
Sécurisation de vos applications web à l’aide du composant Security de Symfony
Sécurisation de vos applications web  à l’aide du composant Security de SymfonySécurisation de vos applications web  à l’aide du composant Security de Symfony
Sécurisation de vos applications web à l’aide du composant Security de SymfonyVladyslav Riabchenko
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...VMware Tanzu
 
Beyond API Authorization
Beyond API AuthorizationBeyond API Authorization
Beyond API AuthorizationJared Hanson
 
Api testing bible using postman
Api testing bible using postmanApi testing bible using postman
Api testing bible using postmanAbhishek Saxena
 
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...Brian Campbell
 
HTTP Protocol Basic
HTTP Protocol BasicHTTP Protocol Basic
HTTP Protocol BasicChuong Mai
 
DF12 - Process Orchestration using Streaming API and Heroku
DF12 - Process Orchestration using Streaming API and HerokuDF12 - Process Orchestration using Streaming API and Heroku
DF12 - Process Orchestration using Streaming API and Herokuafawcett
 
MS TechDays 2011 - WCF Web APis There's a URI for That
MS TechDays 2011 - WCF Web APis There's a URI for ThatMS TechDays 2011 - WCF Web APis There's a URI for That
MS TechDays 2011 - WCF Web APis There's a URI for ThatSpiffy
 

Similar to Cloud-to-Intranet messaging by Force.com Streaming API (20)

CIS 2012 - Going Mobile with PingFederate and OAuth 2
CIS 2012 - Going Mobile with PingFederate and OAuth 2CIS 2012 - Going Mobile with PingFederate and OAuth 2
CIS 2012 - Going Mobile with PingFederate and OAuth 2
 
RESTing with JAX-RS
RESTing with JAX-RSRESTing with JAX-RS
RESTing with JAX-RS
 
Android Programming
Android ProgrammingAndroid Programming
Android Programming
 
Performance #4 network
Performance #4  networkPerformance #4  network
Performance #4 network
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Servlet
ServletServlet
Servlet
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
 
Networked APIs with swift
Networked APIs with swiftNetworked APIs with swift
Networked APIs with swift
 
JWT - Sécurisez vos APIs
JWT - Sécurisez vos APIsJWT - Sécurisez vos APIs
JWT - Sécurisez vos APIs
 
RMI (Remote Method Invocation)
RMI (Remote Method Invocation)RMI (Remote Method Invocation)
RMI (Remote Method Invocation)
 
Sécurisation de vos applications web à l’aide du composant Security de Symfony
Sécurisation de vos applications web  à l’aide du composant Security de SymfonySécurisation de vos applications web  à l’aide du composant Security de Symfony
Sécurisation de vos applications web à l’aide du composant Security de Symfony
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
 
Beyond API Authorization
Beyond API AuthorizationBeyond API Authorization
Beyond API Authorization
 
Api testing bible using postman
Api testing bible using postmanApi testing bible using postman
Api testing bible using postman
 
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
 
HTTP Protocol Basic
HTTP Protocol BasicHTTP Protocol Basic
HTTP Protocol Basic
 
DF12 - Process Orchestration using Streaming API and Heroku
DF12 - Process Orchestration using Streaming API and HerokuDF12 - Process Orchestration using Streaming API and Heroku
DF12 - Process Orchestration using Streaming API and Heroku
 
MS TechDays 2011 - WCF Web APis There's a URI for That
MS TechDays 2011 - WCF Web APis There's a URI for ThatMS TechDays 2011 - WCF Web APis There's a URI for That
MS TechDays 2011 - WCF Web APis There's a URI for That
 
Cache poisoning
Cache poisoningCache poisoning
Cache poisoning
 

More from Shinichi Tomita

SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)Shinichi Tomita
 
SalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAMLSalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAMLShinichi Tomita
 
Developing SLDS Apps with React.js
Developing SLDS Apps with React.jsDeveloping SLDS Apps with React.js
Developing SLDS Apps with React.jsShinichi Tomita
 
Spring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running CalloutSpring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running CalloutShinichi Tomita
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~Shinichi Tomita
 
Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -Shinichi Tomita
 
アイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID Connectアイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID ConnectShinichi Tomita
 
モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)Shinichi Tomita
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりShinichi Tomita
 
モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)Shinichi Tomita
 
(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile Applications(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile ApplicationsShinichi Tomita
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用Shinichi Tomita
 
クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告Shinichi Tomita
 
Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Shinichi Tomita
 
Herokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバHerokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバShinichi Tomita
 
Force.com とか @ PaaS祭り
Force.com とか @ PaaS祭りForce.com とか @ PaaS祭り
Force.com とか @ PaaS祭りShinichi Tomita
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Shinichi Tomita
 
Phantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on HerokuPhantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on HerokuShinichi Tomita
 

More from Shinichi Tomita (20)

SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
 
SalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAMLSalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAML
 
Developing SLDS Apps with React.js
Developing SLDS Apps with React.jsDeveloping SLDS Apps with React.js
Developing SLDS Apps with React.js
 
Spring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running CalloutSpring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running Callout
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
 
Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -
 
アイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID Connectアイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID Connect
 
モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
Salesforce1最速経路
Salesforce1最速経路Salesforce1最速経路
Salesforce1最速経路
 
モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)
 
(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile Applications(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile Applications
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
 
クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告
 
Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~
 
Intro to JFDG
Intro to JFDGIntro to JFDG
Intro to JFDG
 
Herokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバHerokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバ
 
Force.com とか @ PaaS祭り
Force.com とか @ PaaS祭りForce.com とか @ PaaS祭り
Force.com とか @ PaaS祭り
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携
 
Phantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on HerokuPhantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on Heroku
 

Recently uploaded

Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1DianaGray10
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsPaul Groth
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 

Recently uploaded (20)

Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 

Cloud-to-Intranet messaging by Force.com Streaming API

  • 1. Cloud-to-Intranet messaging by Force.com Streaming API Shinichi Tomita @stomita Mashmatrix, Inc.
  • 2. Cloud-to-Intranet messaging in Force.com • HTTP callout / Outbound Messaging - Open inbound HTTP port on firewall (Almost impossible for usual companies) • API Polling - Not realtime / Consumes a lot of API quotas • Force.com Streaming API - No need to open inbound port on firewall - Almost realtime
  • 3. Force.com Streaming API • Enables push notification from Server to subscribed client(s) • GA in Spring ’12 • Standard based (Bayeux protocol) - Client libraries available in various languages
  • 4. Message flow for generic request clients 1. SecureConnect request client creates a record which includes request message to Intranet resource server 2. Force.com publishes a notification to its request channel subscribers (= SecureConnect resource server) 3. Resource server processes the request and access to the resource data behind the firewall 4. Resource server returns response by updating the request record 5. Force.com publishes a notification to its response channel subscribers (= SecureConnect request client), and SecureConnect request client receives response
  • 5. Message flow for generic request clients 3. resource accesss 4. response 1. request Resource Server 5. Streaming 2. Streaming Request Client
  • 6. Callout from Apex • On submitting request, register an object which implements ResponseListener interface - Both request message and response listener object are serialized and inserted as a record • Registered response listener is callbacked by Apex trigger when the response arrived
  • 7. Callout from Apex 3. resource access 4. response 1. request Apex Class Resource Response Listener 5. trigger Server 2. Streaming Request Client
  • 8. Sample code /** * An example client which link opportunity information to intranet system via SecureConnect */ public class OpportunitySynchronizer { public static void linkToExternalSystem(Opportunity opp) { String oppJson = JSON.serialize(opp); SecureConnect.request('opps/link', opp.Id, new PropagateResponseListener(opp.Id)); } /** * Callbacked when the response arrived from intranet server */ public class LinkResponseListener implements SecureConnect.ResponseListener { public Id oppId { get; set; } public LinkResponseListener(Id oppId) { this.oppId = oppId; } public Type getClassType() { return LinkResponseListener.class; } public void onResponse(String responseCode, String responseData) { if (responseCode == 'success') { String extId = responseData; Opportunity opp = new Opportunity(Id=this.oppId, ExtId__c=extId); update opp; } } } }
  • 9. Project on GitHub • http://github.com/stomita/fdc-secureconnect