SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
User Task
Delegation in
Applications
Friedger Müffke
OpenIntents.org

Campus Party 2012 Berlin
Getting a 3-
Months Job
Done in 30
Minutes
Friedger Müffke
OpenIntents.org

Campus Party 2012 Berlin
Context


Task-driven software engineering

User task
Interaction design

Application platform with monolithic
applications that perform user tasks
History of
Sharing between Application
Interprocess communication (IPC)

● Objects
  ○ Windows: DDE/COM
  ○ J2EE: JavaBeans
● Functionality
  ○ WebServices + UDDI
  ○ RPC
● Graphical User Interface
  ○ Dynvoker, TU Dresden (WS/GUI annotations)
Problem Description



User Task Delegation is an architecture
pattern designed to address the problem of a
Component (Site/App) wanting to do a certain
User Task (Action) with a Partner known to the
User but not the Component.
NASCAR problem
Examples
● Share                                ● LogIn
  Twitter, Email,..                      OpenId

● Pick                                 ● Subscribe
  Picasa, Flickr, Youtube, Webcam,..     Notifications by e-mail, sms, ..

● Edit                                 ● Search
  image, document, ..                    Wikipedia, dictionary, ..

● Save                                 ● Check-in and other
  Google Drive, locally, ..              Activity Stream
● Props                                  verbs
  Like, praise, +1, ..

● Print
  Fax, pdf, ..
Android: Intents



●   Freely definable actions
●   Central repository in platform
●   Registration on install time
●   PackageManagerService class
●   No official discovery, but openintents.
    org/en/registry
Android: Intents

                   in Manifest.xml

                   <intent-filter>
                     <action
                       android:name= "android.intent.VIEW"/>
                     <data
                       android:scheme = "http"/>
                   </intent-filter>




                   in Application

                   Intent intent = new Intent();
                   intent.setAction(Intent.ACTION_VIEW);
                   intent.setData("http://campus-party.eu");
                   context.startActivity(intent);
Web Apps: WebIntents/WebActivities



●   Specified as W3C draft and Mozilla proposal
●   User agent manages registry
●   Registration on visit or programmatically
●   Suggestions via Chrome Web Store
●   discovery maybe via openintents.
    org/en/registry
Web Apps: WebIntents/WebActivities




         Available in Chrome Canary Build
Web Apps: WebIntents/WebActivities

var startActivity =
 window.navigator.startActivity ||
 window.navigator.webkitStartActivity;

var imageUrl =
 document.getElementById("main-image").src;

var intent = new
 Intent("http://webintents.org/share",
                  "image/*", imageUrl);

var onSuccess = function(data) { /* woot */ };
var onError = function(data) { /* boooo */ };

startActivity.call(intent, onSuccess, onError);
WP7 / Win 8: Contracts/Extensions

● Defined by platform
● More specific tasks (e.g. account picture)
● Agreement between two apps or between
  app and Windows
● Different API (code) for each user task
● Declarative registration for serving apps
● Event handlers
● No discovery
WP7 / Win 8: Contracts/Extensions
in client app (sharing)
var dataTransferManager =
   Windows.ApplicationModel.DataTransfer.
          DataTransferManager.getForCurrentView();
dataTransferManager.addEventListener("datarequested",
   function (e) {
       // Code to handle event goes here.
   });
in serving app (file picker)
<Extension Category="windows.fileOpenPicker"
                     StartPage="fileOpenPicker.html">
   <FileOpenPicker>
               <SupportedFileTypes>
                    <SupportsAnyFileType />
               </SupportedFileTypes>
   </FileOpenPicker>
Definition
User Task Delegation is an architecture
pattern where semantically defined tasks are
performed by third-party components.

1.   Task definition
2.   Registration of serving components
3.   Invocation by client component
4.   Selection from registry by platform with help of user
5.   Delivery to service
6.   Response from serving component to client component
Further topics

● Discovery for developers and users
● Dependency Management

● Implicit vs. explicit delegation
● Delegation architecture vs.
   trusted subsystem
● Data flow and security/privacy
● Remote Delegation (e.g. PLAY_TO)
● Between Native and Web
Android Meets WebIntents
● Google Summer of Code 2012 project
● Cheng Zheng, mentored by OpenIntents
● Deliverables:
  ○ User agent with registry and native app integration
  ○ Helper lib for extended chooser dialog
  ○ Sample app

           https://github.com/openintents/gsoc2012/wiki
Android Meets Web
Questions ?




              Friedger Müffke
              openintents.org

                     @fmdroid
              gplus.to/friedger
Links

Android Intents

WebIntents Specification
WebActivities

Windows 8 Contracts and Extensions

Contenu connexe

En vedette

Open Governance in Mobile - SFD 2013 - HSBXL
Open Governance in Mobile -  SFD 2013 - HSBXLOpen Governance in Mobile -  SFD 2013 - HSBXL
Open Governance in Mobile - SFD 2013 - HSBXLFriedger Müffke
 
Level Up Your Android Build -Droidcon Berlin 2015
Level Up Your Android Build -Droidcon Berlin 2015Level Up Your Android Build -Droidcon Berlin 2015
Level Up Your Android Build -Droidcon Berlin 2015Friedger Müffke
 
Open intents Aggregating Apps
Open intents Aggregating AppsOpen intents Aggregating Apps
Open intents Aggregating AppsFriedger Müffke
 
Android Evolution, AppForum 2014, Brussels, Friedger Müffke
Android Evolution, AppForum 2014, Brussels, Friedger MüffkeAndroid Evolution, AppForum 2014, Brussels, Friedger Müffke
Android Evolution, AppForum 2014, Brussels, Friedger MüffkeFriedger Müffke
 
Google Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 CebitGoogle Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 CebitFriedger Müffke
 
Serverless Apps - droidcon london 2012
Serverless Apps - droidcon london 2012Serverless Apps - droidcon london 2012
Serverless Apps - droidcon london 2012Friedger Müffke
 

En vedette (6)

Open Governance in Mobile - SFD 2013 - HSBXL
Open Governance in Mobile -  SFD 2013 - HSBXLOpen Governance in Mobile -  SFD 2013 - HSBXL
Open Governance in Mobile - SFD 2013 - HSBXL
 
Level Up Your Android Build -Droidcon Berlin 2015
Level Up Your Android Build -Droidcon Berlin 2015Level Up Your Android Build -Droidcon Berlin 2015
Level Up Your Android Build -Droidcon Berlin 2015
 
Open intents Aggregating Apps
Open intents Aggregating AppsOpen intents Aggregating Apps
Open intents Aggregating Apps
 
Android Evolution, AppForum 2014, Brussels, Friedger Müffke
Android Evolution, AppForum 2014, Brussels, Friedger MüffkeAndroid Evolution, AppForum 2014, Brussels, Friedger Müffke
Android Evolution, AppForum 2014, Brussels, Friedger Müffke
 
Google Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 CebitGoogle Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 Cebit
 
Serverless Apps - droidcon london 2012
Serverless Apps - droidcon london 2012Serverless Apps - droidcon london 2012
Serverless Apps - droidcon london 2012
 

Similaire à Delegating user tasks in applications

Open Intents - Android Intents Mechanism and Dependency Management
Open Intents - Android Intents Mechanism and Dependency ManagementOpen Intents - Android Intents Mechanism and Dependency Management
Open Intents - Android Intents Mechanism and Dependency ManagementFriedger Müffke
 
Android Jump Start
Android Jump StartAndroid Jump Start
Android Jump StartHaim Michael
 
Android workshop material
Android workshop materialAndroid workshop material
Android workshop materialReza Yogaswara
 
Android App Development - 01 Introduction
Android App Development - 01 IntroductionAndroid App Development - 01 Introduction
Android App Development - 01 IntroductionDiego Grancini
 
[Wroclaw #1] Android Security Workshop
[Wroclaw #1] Android Security Workshop[Wroclaw #1] Android Security Workshop
[Wroclaw #1] Android Security WorkshopOWASP
 
Developing advanced universal apps using html & js
Developing advanced universal apps using html & jsDeveloping advanced universal apps using html & js
Developing advanced universal apps using html & jsSenthamil Selvan
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneursRodrigo Gil
 
Google Dev Fest Presentation
Google Dev Fest PresentationGoogle Dev Fest Presentation
Google Dev Fest PresentationAndrew Mackenzie
 
Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012
Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012
Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012Andrew Mackenzie
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentAly Abdelkareem
 
Mobile application development
Mobile application developmentMobile application development
Mobile application developmentumesh patil
 
Android overview
Android overviewAndroid overview
Android overviewHas Taiar
 
google drive and the google drive sdk
google drive and the google drive sdkgoogle drive and the google drive sdk
google drive and the google drive sdkfirenze-gtug
 
Android Development in a Nutshell
Android Development in a NutshellAndroid Development in a Nutshell
Android Development in a NutshellAleix Solé
 

Similaire à Delegating user tasks in applications (20)

Open Intents - Android Intents Mechanism and Dependency Management
Open Intents - Android Intents Mechanism and Dependency ManagementOpen Intents - Android Intents Mechanism and Dependency Management
Open Intents - Android Intents Mechanism and Dependency Management
 
Android Jump Start
Android Jump StartAndroid Jump Start
Android Jump Start
 
Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
 
Best android classes in mumbai
Best android classes in mumbaiBest android classes in mumbai
Best android classes in mumbai
 
Android workshop material
Android workshop materialAndroid workshop material
Android workshop material
 
Android App Development - 01 Introduction
Android App Development - 01 IntroductionAndroid App Development - 01 Introduction
Android App Development - 01 Introduction
 
[Wroclaw #1] Android Security Workshop
[Wroclaw #1] Android Security Workshop[Wroclaw #1] Android Security Workshop
[Wroclaw #1] Android Security Workshop
 
Developing advanced universal apps using html & js
Developing advanced universal apps using html & jsDeveloping advanced universal apps using html & js
Developing advanced universal apps using html & js
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
Google Dev Fest Presentation
Google Dev Fest PresentationGoogle Dev Fest Presentation
Google Dev Fest Presentation
 
Google DevFest 2012 Presentation
Google DevFest 2012 PresentationGoogle DevFest 2012 Presentation
Google DevFest 2012 Presentation
 
Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012
Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012
Developing TouchActive with GAE and GWT - Google DevFest Barcelona 2012
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Mobile application development
Mobile application developmentMobile application development
Mobile application development
 
Android overview
Android overviewAndroid overview
Android overview
 
google drive and the google drive sdk
google drive and the google drive sdkgoogle drive and the google drive sdk
google drive and the google drive sdk
 
Android Development in a Nutshell
Android Development in a NutshellAndroid Development in a Nutshell
Android Development in a Nutshell
 
Android development
Android developmentAndroid development
Android development
 

Plus de Friedger Müffke

Open intents Open Governance
Open intents Open GovernanceOpen intents Open Governance
Open intents Open GovernanceFriedger Müffke
 
Highlights Google I/O 2011
Highlights Google I/O 2011Highlights Google I/O 2011
Highlights Google I/O 2011Friedger Müffke
 
Open Android Apps - Hidden Treasures on Android phones
Open Android Apps - Hidden Treasures on Android phonesOpen Android Apps - Hidden Treasures on Android phones
Open Android Apps - Hidden Treasures on Android phonesFriedger Müffke
 
Google Workshop at International Congress of Youth Enterpreneurship by Friedg...
Google Workshop at International Congress of Youth Enterpreneurship by Friedg...Google Workshop at International Congress of Youth Enterpreneurship by Friedg...
Google Workshop at International Congress of Youth Enterpreneurship by Friedg...Friedger Müffke
 
Open intents, open apps and dependencies
Open intents, open apps and dependenciesOpen intents, open apps and dependencies
Open intents, open apps and dependenciesFriedger Müffke
 
App inventor for android and similar tools
App inventor for android and similar toolsApp inventor for android and similar tools
App inventor for android and similar toolsFriedger Müffke
 
Open Intents And Dependencies
Open Intents And DependenciesOpen Intents And Dependencies
Open Intents And DependenciesFriedger Müffke
 

Plus de Friedger Müffke (8)

Open intents Open Governance
Open intents Open GovernanceOpen intents Open Governance
Open intents Open Governance
 
Highlights Google I/O 2011
Highlights Google I/O 2011Highlights Google I/O 2011
Highlights Google I/O 2011
 
Open Android Apps - Hidden Treasures on Android phones
Open Android Apps - Hidden Treasures on Android phonesOpen Android Apps - Hidden Treasures on Android phones
Open Android Apps - Hidden Treasures on Android phones
 
Google Workshop at International Congress of Youth Enterpreneurship by Friedg...
Google Workshop at International Congress of Youth Enterpreneurship by Friedg...Google Workshop at International Congress of Youth Enterpreneurship by Friedg...
Google Workshop at International Congress of Youth Enterpreneurship by Friedg...
 
Open intents, open apps and dependencies
Open intents, open apps and dependenciesOpen intents, open apps and dependencies
Open intents, open apps and dependencies
 
Glass
GlassGlass
Glass
 
App inventor for android and similar tools
App inventor for android and similar toolsApp inventor for android and similar tools
App inventor for android and similar tools
 
Open Intents And Dependencies
Open Intents And DependenciesOpen Intents And Dependencies
Open Intents And Dependencies
 

Dernier

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 

Dernier (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 

Delegating user tasks in applications

  • 1. User Task Delegation in Applications Friedger Müffke OpenIntents.org Campus Party 2012 Berlin
  • 2. Getting a 3- Months Job Done in 30 Minutes Friedger Müffke OpenIntents.org Campus Party 2012 Berlin
  • 3. Context Task-driven software engineering User task Interaction design Application platform with monolithic applications that perform user tasks
  • 4. History of Sharing between Application Interprocess communication (IPC) ● Objects ○ Windows: DDE/COM ○ J2EE: JavaBeans ● Functionality ○ WebServices + UDDI ○ RPC ● Graphical User Interface ○ Dynvoker, TU Dresden (WS/GUI annotations)
  • 5. Problem Description User Task Delegation is an architecture pattern designed to address the problem of a Component (Site/App) wanting to do a certain User Task (Action) with a Partner known to the User but not the Component.
  • 7. Examples ● Share ● LogIn Twitter, Email,.. OpenId ● Pick ● Subscribe Picasa, Flickr, Youtube, Webcam,.. Notifications by e-mail, sms, .. ● Edit ● Search image, document, .. Wikipedia, dictionary, .. ● Save ● Check-in and other Google Drive, locally, .. Activity Stream ● Props verbs Like, praise, +1, .. ● Print Fax, pdf, ..
  • 8. Android: Intents ● Freely definable actions ● Central repository in platform ● Registration on install time ● PackageManagerService class ● No official discovery, but openintents. org/en/registry
  • 9. Android: Intents in Manifest.xml <intent-filter> <action android:name= "android.intent.VIEW"/> <data android:scheme = "http"/> </intent-filter> in Application Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData("http://campus-party.eu"); context.startActivity(intent);
  • 10. Web Apps: WebIntents/WebActivities ● Specified as W3C draft and Mozilla proposal ● User agent manages registry ● Registration on visit or programmatically ● Suggestions via Chrome Web Store ● discovery maybe via openintents. org/en/registry
  • 11. Web Apps: WebIntents/WebActivities Available in Chrome Canary Build
  • 12. Web Apps: WebIntents/WebActivities var startActivity = window.navigator.startActivity || window.navigator.webkitStartActivity; var imageUrl = document.getElementById("main-image").src; var intent = new Intent("http://webintents.org/share", "image/*", imageUrl); var onSuccess = function(data) { /* woot */ }; var onError = function(data) { /* boooo */ }; startActivity.call(intent, onSuccess, onError);
  • 13. WP7 / Win 8: Contracts/Extensions ● Defined by platform ● More specific tasks (e.g. account picture) ● Agreement between two apps or between app and Windows ● Different API (code) for each user task ● Declarative registration for serving apps ● Event handlers ● No discovery
  • 14. WP7 / Win 8: Contracts/Extensions in client app (sharing) var dataTransferManager = Windows.ApplicationModel.DataTransfer. DataTransferManager.getForCurrentView(); dataTransferManager.addEventListener("datarequested", function (e) { // Code to handle event goes here. }); in serving app (file picker) <Extension Category="windows.fileOpenPicker" StartPage="fileOpenPicker.html"> <FileOpenPicker> <SupportedFileTypes> <SupportsAnyFileType /> </SupportedFileTypes> </FileOpenPicker>
  • 15. Definition User Task Delegation is an architecture pattern where semantically defined tasks are performed by third-party components. 1. Task definition 2. Registration of serving components 3. Invocation by client component 4. Selection from registry by platform with help of user 5. Delivery to service 6. Response from serving component to client component
  • 16. Further topics ● Discovery for developers and users ● Dependency Management ● Implicit vs. explicit delegation ● Delegation architecture vs. trusted subsystem ● Data flow and security/privacy ● Remote Delegation (e.g. PLAY_TO) ● Between Native and Web
  • 17. Android Meets WebIntents ● Google Summer of Code 2012 project ● Cheng Zheng, mentored by OpenIntents ● Deliverables: ○ User agent with registry and native app integration ○ Helper lib for extended chooser dialog ○ Sample app https://github.com/openintents/gsoc2012/wiki
  • 19. Questions ? Friedger Müffke openintents.org @fmdroid gplus.to/friedger