SlideShare uma empresa 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

Mais conteúdo relacionado

Semelhante 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
 

Semelhante 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

IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingMAGNIntelligence
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch TuesdayIvanti
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptxHansamali Gamage
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxNeo4j
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud DataEric D. Schabell
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Libraryshyamraj55
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applicationsnooralam814309
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 

Último (20)

IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced Computing
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch Tuesday
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Library
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applications
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 

Introduction to Robotlegs 2

Notas do 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