iks auf der ElipseCon 2011: Tickling the shoulders of giants
Upcoming SlideShare
Loading in...5
×
 

iks auf der ElipseCon 2011: Tickling the shoulders of giants

on

  • 1,656 views

Unser Mitarbeiter Herr Holger Grosse-Plankermann berichtete von einem Projekt, das die iks für einen Finanzdienstleister durchgeführt hat. Es galt, eine hostbasierte Altanwendung durch eine neue ...

Unser Mitarbeiter Herr Holger Grosse-Plankermann berichtete von einem Projekt, das die iks für einen Finanzdienstleister durchgeführt hat. Es galt, eine hostbasierte Altanwendung durch eine neue RCP-Anwendung abzulösen. Die Geschäftslogik der RCP-Anwendung ist komplett im JEE-Backend abgebildet. Elementare Validierungsregeln sind im Client untergebracht.

Statistics

Views

Total Views
1,656
Views on SlideShare
1,219
Embed Views
437

Actions

Likes
0
Downloads
5
Comments
0

3 Embeds 437

http://grosse-plankermann.com 415
http://www.iks-gmbh.com 21
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

iks auf der ElipseCon 2011: Tickling the shoulders of giants iks auf der ElipseCon 2011: Tickling the shoulders of giants Presentation Transcript

  • Building industry solutions Tickling the shoulders of giants An internal client for financial services based on Eclipse RCP 04.11.2011 Holger Grosse-Plankermann h.grosse-plankermann@iks-gmbh.com
  • About meHolger Grosse-PlankermannDeveloper @ iks since 2006Has been implementing Eclipse RCP applications for 4 yearsHas published articles about Eclipse RCPLikes loud guitar tunes and kitchen tools@holgergp
  • Challenge AreasEclipse RCP Component Challenge DegreeEclipse RuntimeSWTJFaceWorkbenchOther prerequisites for the WorkbenchTest/Build
  • RoadmapProjectChallengesReview
  • ProjectForm-based Business application5.000.000 data records5 Java Developers starting with basic RCP knowledgeProject has been going for 2 1/2 yearsComplex problem domain ~ 400 CRs
  • The RCP ClientEclipse RCP 3.5Menu View List applicationsEditor Area Editors similarSearch View
  • Parameters~ 80 screens ~ equally complex~ 30 UI Elements per screen~ 20 UI Behaviour Rules per Screen~ 40 Validation Rules per screen~ 150 different Validation Rule Types
  • Classic context
  • Our context
  • Core ChallengesStructuring code of complex screensConcise definition of numerous UI rulesConsidering specifics of distributed ValidationQuality assurance in a complex project
  • Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  • 1. UI Code StructureHow to structure the user Interface codeStandard approach: ? Define Look Define Behaviour
  • 1. UI Code StructureSeparation of concerns: MVP Pattern
  • 1. UI Code StructureSplit up EditorPart
  • 1. UI Code StructureWhich part should extend from the framework :
  • 1. UI Code StructureStraightforward approach: View extends from the framework.Delegate logic to presenterEasy to implement/refactorKeeps integration with WindowBuilderHowever, too much delegation needed, complex indirection followed.
  • 1. UI Code StructurePresenter extends from the framework.=> framework supplies lifecycle hooks.View is a standalone component.Presenter simply delegates to the createForm method of the viewWorkarounds needed to feed view to Window BuilderSpecial case: Dialogues
  • Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  • 2. UI Rules and JFace DatabindingBehaviour Rules:Behaviour that is triggered when a user keys in a specific value.Mostly specific to only one Use CaseCommands/Actions too cumbersome in that context
  • 2. UI Rules and JFace DatabindingJFace Databinding for UI State definition Model „single source of truth“Concise and central definition of bindingspublic void initDataBindings() { binder.bindBeanToText("model.name", view.getTxtName()); }UI Behaviour Rules should be defined similarly! No out-of-the-box solution available!
  • 2. UI Rules and JFace DatabindingWe implemented a BindableAction
  • 2. UI Rules and JFace DatabindingComplete UI state/behaviour definition in one place in a „declarative“ and clean waypublic void initDataBindings() { binder = new BindingUtil(new DataBindingContext(), this); binder.bindBeanToText("presenter.gp.name1", view.getTxtName1()); binder.bindBeanToCombo("presenter.gp.anredeFachId", view.getCvAnrede()); binder.bindAction(„presenter.gp.lieferantenstatusAktiv", new BindableAction() { public void run() { clearTable(); } );}Generation based on model easily possible
  • Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  • 3. Validation Client BackendTime of validation On Input On SaveAmount of validation Specific input step Complete ModelFocus of validation Speed Complete Validation
  • 3. ValidationComplex and deep Validation Rules
  • 3. ValidationValidation Rules should be reused on client and backend side. Large intersection between rule typesValidation Rules too complex for JFace Validation alone e.g. Validations across domain model=> Tie Validation Rules to the model.
  • 3. ValidationUsing custom Validator
  • 3. ValidationValidations attached to the model via annotationspublic interface IPerson { @ValidationRules( { @ValidationRule(classOfRule = NameRule.class, errorCode = "name.invalid", affectedAttributes = "name") }) void setName(String name);}Further steps:JSR-303 (Beans-Validation)
  • Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  • 4. Headless Build and TestThe complexity of our project required proper quality assurance measuresExecuting SWTBot Test and exporting from workbench grew too tedious
  • 4. Headless Build and TestHeadless build and tests to the rescue!PDEBuild completed quite quick Days/WeeksHeadless SWTBot more complicated ~ 4 months JUnit3/4 related issues
  • 4. Headless Build and TestUI Tests tend to be long running Setup UI/Product Wait for UI components to show Complete run (~ 400 tests) takes 30 – 45 minsUI Tests sometimes behave irregularly Occasional false negatives UI Timing differs between machines Focus related problems
  • 4. Headless Build and TestSplit test suites Continuous Regular NightlyDuration ~ 5 mins ~ 30 mins ~ 45 mins# Tests ~ 50 ~ 300 ~ 400Speed up Build Machines Continuous with SSD Continuous w/o SSDDuration ~ 5 mins ~ 9 mins
  • 4. Headless Build and TestNo satisfying solution for irregular behaviour!UI timing issues require extra care bot.sleep(2000) mostly helps Further steps:Minimize UI related TestsApply Controller/Presenter Tests => Eclipse Riena
  • Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  • Safe on the shoulders of giants? Expectations ExperiencesLearningOut-of-the-boxRequirementsEclipse RCP +Customizing
  • www.iks-gmbh.com
  • Image SourcesRoadmap: http://www.flickr.com/photos/scoobay/3788514070/Mixing desk: http://www.flickr.com/photos/go_freyer/4486482108/Check: http://commons.wikimedia.org/wiki/File:Green_check.svgX-Mark: http://commons.wikimedia.org/wiki/File:X_mark.svgFeather: http://www.flickr.com/photos/n0rthw1nd/4418311590/Plain face: http://commons.wikimedia.org/wiki/File:Face-plain.svgSad face: http://commons.wikimedia.org/wiki/File:Face-sad.svgHappy face: http://commons.wikimedia.org/wiki/File:Face-smile.svgLight Bulb and Warning Icons via Creative Commons Attribution 3.0 Unported by http://shlyapnikova.deviantart.com