0
Building industry solutions   Tickling the shoulders of giants   An internal client for financial services   based on Ecli...
About meHolger Grosse-PlankermannDeveloper @ iks since 2006Has been implementing Eclipse RCP applications for 4 yearsHas p...
Challenge AreasEclipse RCP Component                   Challenge DegreeEclipse RuntimeSWTJFaceWorkbenchOther prerequisites...
RoadmapProjectChallengesReview
ProjectForm-based Business  application5.000.000 data records5 Java Developers  starting with basic  RCP knowledgeProject ...
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 Ru...
Classic context
Our context
Core ChallengesStructuring code of complex screensConcise definition of numerous UI rulesConsidering specifics of distribu...
Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed...
1. UI Code StructureHow to structure the user Interface codeStandard approach:                                            ...
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 implemen...
1. UI Code StructurePresenter extends from the framework.=> framework supplies lifecycle hooks.View is a standalone compon...
Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed...
2. UI Rules and JFace DatabindingBehaviour Rules:Behaviour that is triggered when a user keys in a specific value.Mostly s...
2. UI Rules and JFace DatabindingJFace Databinding for UI State definition  Model „single source of truth“Concise and cent...
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 waypubli...
Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed...
3. Validation                       Client            BackendTime of validation     On Input          On SaveAmount of val...
3. ValidationComplex and deep Validation Rules
3. ValidationValidation Rules should be reused on client  and backend side.  Large intersection between rule typesValidati...
3. ValidationUsing custom Validator
3. ValidationValidations attached to the model via annotationspublic interface IPerson {    @ValidationRules( {     @Valid...
Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed...
4. Headless Build and TestThe complexity of our project required proper  quality assurance measuresExecuting SWTBot Test  ...
4. Headless Build and TestHeadless build and tests to the rescue!PDEBuild completed quite quick Days/WeeksHeadless SWTBot ...
4. Headless Build and TestUI Tests tend to be long running  Setup UI/Product  Wait for UI components to show  Complete run...
4. Headless Build and TestSplit test suites             Continuous   Regular        NightlyDuration     ~ 5 mins     ~ 30 ...
4. Headless Build and TestNo satisfying solution for irregular behaviour!UI timing issues require extra care  bot.sleep(20...
Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed...
Safe on the shoulders of giants?                 Expectations ExperiencesLearningOut-of-the-boxRequirementsEclipse RCP +Cu...
www.iks-gmbh.com
Image SourcesRoadmap:       http://www.flickr.com/photos/scoobay/3788514070/Mixing desk:   http://www.flickr.com/photos/go...
Upcoming SlideShare
Loading in...5
×

iks auf der ElipseCon 2011: Tickling the shoulders of giants

1,682

Published on

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.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,682
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. 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
  2. 2. 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
  3. 3. Challenge AreasEclipse RCP Component Challenge DegreeEclipse RuntimeSWTJFaceWorkbenchOther prerequisites for the WorkbenchTest/Build
  4. 4. RoadmapProjectChallengesReview
  5. 5. 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
  6. 6. The RCP ClientEclipse RCP 3.5Menu View List applicationsEditor Area Editors similarSearch View
  7. 7. 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
  8. 8. Classic context
  9. 9. Our context
  10. 10. Core ChallengesStructuring code of complex screensConcise definition of numerous UI rulesConsidering specifics of distributed ValidationQuality assurance in a complex project
  11. 11. Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  12. 12. 1. UI Code StructureHow to structure the user Interface codeStandard approach: ? Define Look Define Behaviour
  13. 13. 1. UI Code StructureSeparation of concerns: MVP Pattern
  14. 14. 1. UI Code StructureSplit up EditorPart
  15. 15. 1. UI Code StructureWhich part should extend from the framework :
  16. 16. 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.
  17. 17. 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
  18. 18. Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  19. 19. 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
  20. 20. 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!
  21. 21. 2. UI Rules and JFace DatabindingWe implemented a BindableAction
  22. 22. 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
  23. 23. Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  24. 24. 3. Validation Client BackendTime of validation On Input On SaveAmount of validation Specific input step Complete ModelFocus of validation Speed Complete Validation
  25. 25. 3. ValidationComplex and deep Validation Rules
  26. 26. 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.
  27. 27. 3. ValidationUsing custom Validator
  28. 28. 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)
  29. 29. Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  30. 30. 4. Headless Build and TestThe complexity of our project required proper quality assurance measuresExecuting SWTBot Test and exporting from workbench grew too tedious
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. Core ChallengesStructuring code of complex screensConcise Definition of numerous UI rulesConsider specifics of distributed ValidationQuality assurance in a complex project
  36. 36. Safe on the shoulders of giants? Expectations ExperiencesLearningOut-of-the-boxRequirementsEclipse RCP +Customizing
  37. 37. www.iks-gmbh.com
  38. 38. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×