SlideShare una empresa de Scribd logo
1 de 136
Introduction to Robotlegs 2
robotlegs
robotlegs 2.0
Introduction to Robotlegs 2
the goals
configurable
 because every project is unique
versatile
    rigidity sucks
concise
use only what you need
fluent
make(tea).with(milk).butNot(sugar)
Introduction to Robotlegs 2
govt health warning
these examples are subject to change
Introduction to Robotlegs 2
the features
Introduction to Robotlegs 2
.context builder
Contexts in robotlegs circa v1
Contexts in robotlegs circa v1
public class Context
{
	 	 protected var _injector:IInjector;

	 	 protected var _reflector:IReflector;

	 	 protected var _contextView:DisplayObjectContainer;

	 	 protected var _commandMap:ICommandMap;

	 	 protected var _mediatorMap:IMediatorMap;

	 	 protected var _viewMap:IViewMap;
}
Introduction to Robotlegs 2
public class Container
{
   private var youCantSeeMe:SoLetsHopeIKnowWhatImDoing;

    protected var sureYouCanOverrideMe:ButYouAintGettingRidOfMe;
}
public class Container
{
   private var youCantSeeMe:SoLetsHopeIKnowWhatImDoing;

    protected var sureYouCanOverrideMe:ButYouAintGettingRidOfMe;
}




in version one,
features were bound to the context.
RL2 contexts are created with what you need
                          not extended with what you don’t
Introducing the context builder
Introducing the context builder
public interface IContextBuilder
{
  build():IContext;

    withBundle(bundle:IContextBuilderBundle):IContextBuilder;

    withConfig(config:IContextConfig):IContextBuilder;

    withContextView(value:DisplayObjectContainer):IContextBuilder;

    withDispatcher(value:IEventDispatcher):IContextBuilder;

    withExtension(extension:IContextExtension):IContextBuilder;

    withInjector(value:Injector):IContextBuilder;

    withParent(value:IContext):IContextBuilder;

    withProcessor(processor:IContextProcessor):IContextBuilder;
}
.withConfig
.withConfig
public interface IContextConfig
{
   function configure(context:IContext):void;
}




setup your configuration to execute once at build.
.withExtension
.withExtension
public interface IContextExtension
{
	 function initialize(context:IContext):void;

	   function install(context:IContext):void;

	   function uninstall(context:IContext):void;
}




extensions add functionality at any time.
.withProcessor
.withProcessor
public interface IContextProcessor
{
	 function process(context:IContext, callback:Function):void;
}




processors asynchronously affect the build state.
Introduction to Robotlegs 2
.pre-configured bundles
four tasty flavours of robotlegs
         each representing a context builder bundle
Introduction to Robotlegs 2
Original
»
when plain old vanilla is just right.
Introduction to Robotlegs 2
light
»   when size and performance are paramount.
Introduction to Robotlegs 2
rapid
»
when time is of the essence.
Introduction to Robotlegs 2
»
 smart
 views
when you simply can’t live without view injection.
Introduction to Robotlegs 2
.type matching
Definion
Definion
public class   TypeMatcher
{
    function   anyOf(... params):TypeMatcher;
    function   noneOf(... params):TypeMatcher;
    function   allOf(... params):TypeMatcher;
}


Usage
new TypeMatcher()
  .allOf(ISpaceShip, IEnemy)
  .noneOf(DeathStar)




flexible and fluent type matching syntax
Introduction to Robotlegs 2
.view management
Introduction to Robotlegs 2
viewManager.addContainer(contextView);
	    viewManager.addHandler(mediatorMap);
	    viewManager.addWatcher(stageWatcher);
 	   viewManager.addContainer(myPopUp);

     wire view handlers to view watchers
viewManager.addContainer(contextView);
	    viewManager.addHandler(mediatorMap);
	    viewManager.addWatcher(stageWatcher);
 	   viewManager.addContainer(myPopUp);

     wire view handlers to view watchers




                                  viewManager.addContainer(myPopUp);
                              viewManager.addContainer(myAIRWindow);
         native support for flex popups and air windows.
Introduction to Robotlegs 2
.mediate anything
Introduction to Robotlegs 2
mediatorMap.map(UserDetailsMediator).toView(IUserDetailsAware);

            map mediators to interfaces rather than
                                 concrete classes.
mediatorMap.map(UserDetailsMediator).toView(IUserDetailsAware);

              map mediators to interfaces rather than
                                   concrete classes.



mediatorMap
	 .map(SomeMenuMediator)
	 .toMatcher()
	 	 .anyOf(TopLevelMenu, AdminMenu, FootMenu);

use type-matching to refine your mapping
Introduction to Robotlegs 2
.guards and hooks
possible use-cases for a guard:
possible use-cases for a guard:
•   prevent mediation when ...
possible use-cases for a guard:
• prevent mediation when ...
• prevent command execution when ...
possible use-cases for a guard:
• prevent mediation when ...
• prevent command execution when ...




mediatorMap
	 .map(UserDetailsMediator)
   .toView(IUserDetailsAware)
	 .withGuard(UserIsAdminGuard);




a guard represents conditional logic for an
action to occur.
scenarios for using a hook:
scenarios for using a hook:
•   customised logging
scenarios for using a hook:
• customised logging
• view skinning
scenarios for using a hook:
• customised logging
• view skinning

• view localisation
scenarios for using a hook:
• customised logging
• view skinning

• view localisation

• instance configuration prior to command execution
scenarios for using a hook:
• customised logging
• view skinning

• view localisation

• instance configuration prior to command execution


commandMap
	 .map(UserLoginCommand)
   .toEvent(UserLoginEvent.LOGIN, UserLoginEvent)
	 .withHook(ConfigureUserDetails)
scenarios for using a hook:
• customised logging
• view skinning

• view localisation

• instance configuration prior to command execution


commandMap
	 .map(UserLoginCommand)
   .toEvent(UserLoginEvent.LOGIN, UserLoginEvent)
	 .withHook(ConfigureUserDetails)



a hook enables pre-processing on an action.
Introduction to Robotlegs 2
.rule sets and command flow
possible uses of a rule:
possible uses of a rule:
•   adding or removing mediators
possible uses of a rule:
• adding or removing mediators
• loading or unloading commands
possible uses of a rule:
• adding or removing mediators
• loading or unloading commands




a rule can prevent or ensure an action’s occurrence.
command flows:
command flows:
create a workflow of commands to represent a
complex sequence
command flows:
create a workflow of commands to represent a
complex sequence




flows are pathways between commands
Introduction to Robotlegs 2
.swift-suspenders integration
Introduction to Robotlegs 2
//creates a new instance per injection
injector.map(SomeType); //or injector.map(SomeType, ‘named’);

//create new instance per injection and map to
injector.map(IService).toType(SomeService); //or value .toValue(someInstance)

//map as singleton instance
injector.map(SomeService).asSingleton(); //or .toSingleton(SomeService);

//allows to easily specify custom providers to use for a mapping
injector.map(IService).toProvider(new CustomProvider());

//prevents sharing the mapping with child injectors;
injector.map(SomeService).local(); // .shared() reverts it

//allow child injector to map if none exists
injector.map(SomeService).soft(); // .strong() maps regardless

//prevents changes to the mapping; returns a unique key object
injector.map(SomeService).seal(); //can revert with key and .unseal()



full integration with swift suspenders 2
leverages the entire toolkit.
Introduction to Robotlegs 2
.module integration
integrated module automation:
integrated module automation:
•   context wired up by parent once added to stage
integrated module automation:
•   context wired up by parent once added to stage
•   view events are collated in the one view manager
integrated module automation:
•   context wired up by parent once added to stage
•   view events are collated in the one view manager
•   child injectors created and wired to the parent
integrated module automation:
•   context wired up by parent once added to stage
•   view events are collated in the one view manager
•   child injectors created and wired to the parent
• default injections to ensure modules work both
standalone and when integrated.
integrated module automation:
•   context wired up by parent once added to stage
•   view events are collated in the one view manager
•   child injectors created and wired to the parent
• default injections to ensure modules work both
standalone and when integrated.




in robotlegs 2, modules just work.
Introduction to Robotlegs 2
.robotlegs inspector
new inspector
             gadget tool to
             help you with
             your
             robotlegging.



info here.
Introduction to Robotlegs 2
an example in covariance
         mediate behaviours not views
for comparison
for comparison
let’s look at a simple robotlegs v1 application
invariant mediation (via classes)
invariant mediation (via classes)



                            View
invariant mediation (via classes)



                            View


         Mediator
invariant mediation (via classes)



                            View


         Mediator
invariant mediation (via classes)

                    events



                             View


         Mediator
invariant mediation (via classes)

                    events



                             View


         Mediator




             one mediator per view.
what’s wrong with this approach?
what’s wrong with this approach?

•   the mediator is tightly coupled to the view
what’s wrong with this approach?

•   the mediator is tightly coupled to the view
•   view is restricted to one mediator
what’s wrong with this approach?

•   the mediator is tightly coupled to the view
•   view is restricted to one mediator
•   no reuse of mediation
how to fix this in v1?
how to fix this in v1?
using the variance utility
covariant mediation (via interfaces)
covariant mediation (via interfaces)



                     View
covariant mediation (via interfaces)



                        View

                   IBehaviour A


                             IBehaviour B


                  IBehaviour C
covariant mediation (via interfaces)



                        View
   Mediator A

                   IBehaviour A


                             IBehaviour B


                   IBehaviour C             Mediator B



      Mediator C
covariant mediation (via interfaces)



                        View
   Mediator A

                   IBehaviour A


                             IBehaviour B


                   IBehaviour C             Mediator B



      Mediator C
covariant mediation (via interfaces)

                       e v e n t s



                                     View
   Mediator A
                                                       e v e n t s
                              IBehaviour A


                                        IBehaviour B
         e v e n t s
                              IBehaviour C                           Mediator B



      Mediator C
covariant mediation (via interfaces)

                          e v e n t s



                                        View
   Mediator A
                                                          e v e n t s
                                 IBehaviour A


                                           IBehaviour B
         e v e n t s
                                 IBehaviour C                           Mediator B



      Mediator C




                       n mediators per view.
what is wrong with this contract?
what is wrong with this contract?

 import flash.events.IEventDispatcher;

 [Event(name="doAsync", type="...ControlEvent")]
 public interface IServiceStarter extends IEventDispatcher
 {
 	 function serviceReturned():void;
 }




we have to extend IEventDispatcher and there’s no
                         enforcement of contract.
Introduction to Robotlegs 2
.enter signals, stage right
with signals, we define the contract
with signals, we define the contract
  import org.osflash.signals.ISignal;

  public interface IServiceStarter
  {
  	   function serviceReturned():void;
  	   function get start():ISignal;	
  }



  and force the view to comply
  import org.osflash.signals.ISignal;

  private var startSignal:ISignal = new Signal();
  	      	   	
  public function serviceReturned():void
  {
	     Alert.show("The service returned.","Guess what?");
  }
	   	    	   	   	   	
   public function get start():ISignal { return startSignal; }

  ...

  <s:Button label=”Start” click=”start.dispatch” />
with covariance and signals
with covariance and signals


                      View

                 IBehaviour A


                           IBehaviour B


                 IBehaviour C
with covariance and signals


                            View
   Mediator A

                       IBehaviour A


                                 IBehaviour B


                       IBehaviour C             Mediator B




          Mediator C
with covariance and signals


                            View
   Mediator A

                       IBehaviour A


                                 IBehaviour B


                       IBehaviour C             Mediator B




          Mediator C
with covariance and signals


                            View
   Mediator A

                       IBehaviour A


                                 IBehaviour B


                       IBehaviour C             Mediator B




          Mediator C




      each view is mediated bidirectionally.
to view this sample online
 go to j.mp/covariance

    Libraries used:
    •   robotlegs 1.5.2
    •   robotlegs variance utility 1.1
    •   as3-signals 0.9-beta
Introduction to Robotlegs 2
so when is robotlegs 2
             coming?
Introduction to Robotlegs 2
...now.
Introduction to Robotlegs 2
as of this afternoon
robotlegs 2 is in open beta.
Stay updated.
Stay updated.


  Add you name to the RL2 beta list by commenting on:
  j.mp/robotlegs2

  Join the robotlegs google group

  Follow @robotlegs_as3 on Twitter.
Introduction to Robotlegs 2
fin.
about.me/justinj
@justinjmoses

Más contenido relacionado

Similar a Introduction to Robotlegs 2

Declarative presentations UIKonf
Declarative presentations UIKonfDeclarative presentations UIKonf
Declarative presentations UIKonfNataliya Patsovska
 
Introducing PanelKit
Introducing PanelKitIntroducing PanelKit
Introducing PanelKitLouis D'hauwe
 
Loadrunner interview questions and answers
Loadrunner interview questions and answersLoadrunner interview questions and answers
Loadrunner interview questions and answersGaruda Trainings
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleMarcio Klepacz
 
Dependency Inversion in large-scale TypeScript applications with InversifyJS
Dependency Inversion in large-scale TypeScript applications with InversifyJSDependency Inversion in large-scale TypeScript applications with InversifyJS
Dependency Inversion in large-scale TypeScript applications with InversifyJSRemo Jansen
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Riacon swiz
Riacon swizRiacon swiz
Riacon swizntunney
 
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJava Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJAX London
 
MVC pattern for widgets
MVC pattern for widgetsMVC pattern for widgets
MVC pattern for widgetsBehnam Taraghi
 
A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018Yegor Malyshev
 
Dependency Injection in .NET applications
Dependency Injection in .NET applicationsDependency Injection in .NET applications
Dependency Injection in .NET applicationsBabak Naffas
 

Similar a Introduction to Robotlegs 2 (20)

Angular VS FORWARD
Angular VS FORWARDAngular VS FORWARD
Angular VS FORWARD
 
Angular vs FORWARD
Angular vs FORWARDAngular vs FORWARD
Angular vs FORWARD
 
Swiz DAO
Swiz DAOSwiz DAO
Swiz DAO
 
Declarative presentations UIKonf
Declarative presentations UIKonfDeclarative presentations UIKonf
Declarative presentations UIKonf
 
Introducing PanelKit
Introducing PanelKitIntroducing PanelKit
Introducing PanelKit
 
Loadrunner interview questions and answers
Loadrunner interview questions and answersLoadrunner interview questions and answers
Loadrunner interview questions and answers
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and Nimble
 
mvcExpress training course : part1
mvcExpress training course : part1mvcExpress training course : part1
mvcExpress training course : part1
 
Dependency Inversion in large-scale TypeScript applications with InversifyJS
Dependency Inversion in large-scale TypeScript applications with InversifyJSDependency Inversion in large-scale TypeScript applications with InversifyJS
Dependency Inversion in large-scale TypeScript applications with InversifyJS
 
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Riacon swiz
Riacon swizRiacon swiz
Riacon swiz
 
Conductor vs Fragments
Conductor vs FragmentsConductor vs Fragments
Conductor vs Fragments
 
Monorail Introduction
Monorail IntroductionMonorail Introduction
Monorail Introduction
 
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJava Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
 
iOS (7) Workshop
iOS (7) WorkshopiOS (7) Workshop
iOS (7) Workshop
 
MVC pattern for widgets
MVC pattern for widgetsMVC pattern for widgets
MVC pattern for widgets
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
 
A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018
 
Dependency Injection in .NET applications
Dependency Injection in .NET applicationsDependency Injection in .NET applications
Dependency Injection in .NET applications
 

Último

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncObject Automation
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxYounusS2
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdfJamie (Taka) Wang
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceMartin Humpolec
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfAnna Loughnan Colquhoun
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 

Último (20)

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation Inc
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptx
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
20200723_insight_release_plan_v6.pdf20200723_insight_release_plan_v6.pdf
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your Salesforce
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Spring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdfSpring24-Release Overview - Wellingtion User Group-1.pdf
Spring24-Release Overview - Wellingtion User Group-1.pdf
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 

Introduction to Robotlegs 2

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. uses fluent interface, for readability. think jQuery. each chained method returns context for the next call. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. for example, a Context View Watcher, which waits for ADDED TO STAGE.\n
  18. for example, a Context View Watcher, which waits for ADDED TO STAGE.\n
  19. for example, the View Manager, Stage Watcher, Logging mechanism\n
  20. for example, the View Manager, Stage Watcher, Logging mechanism\n
  21. for example, the Parent Context Finder - the context checks to see if a parent exists during the creation process. \n
  22. for example, the Parent Context Finder - the context checks to see if a parent exists during the creation process. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. show Mediate Classes examples.\n
  87. when done, see Mediate Classes &gt; Mediators &gt; console output.\n
  88. when done, see Mediate Classes &gt; Mediators &gt; console output.\n
  89. when done, see Mediate Classes &gt; Mediators &gt; console output.\n
  90. when done, see Mediate Classes &gt; Mediators &gt; console output.\n
  91. when done, see Mediate Classes &gt; Mediators &gt; console output.\n
  92. when done, see Mediate Classes &gt; Mediators &gt; console output.\n
  93. \n
  94. \n
  95. \n
  96. show the Mediate Middle example. Show variant mediator map.\n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n