What’s New in ECO III

What’s New in ECO III (Malcolm Groves)


A Brief History of ECO (since they cleverly scheduled the What’s New session for today, and the Introduction session for tomorrow)

  • Borland bought BoldSoft, ported Bold to .NET, and renamed it ECO.
  • When you move up from C++ to Delphi, there’s a lot of code you don’t have to worry about anymore – you don’t have to write message handlers anymore, etc. ECO does the same thing: raise the level of abstraction, free you up from writing plumbing code.
  • Modeling tool at design time (the Together part). ECO is a runtime framework that executes that model at runtime. Because you have that modeling info at runtime, it can provide a bunch of services for you.
  • The actual introduction session will be tomorrow.
  • ECO is a model powered framework. .NET only. First showed up in C#Builder. ECO 1.1 in Delphi 8. Delphi 2005 added ECO II with lots of new stuff: people said “I can use this for real”.
  • ECO III is available in all editions: Professional, Enterprise, and Architect. (Used to just be in Architect) Feedback from people saying this makes them dramatically more productive. Not all features are in all editions (will have list at the end of the session).

What’s New?

  • Option to create one file/unit per class (used to be one file per UML package)
    • This option is turned off by default
    • Can define the naming convention for the file
    • Potentially much nicer for team development
    • Applies to both Delphi and C#
  • ECO Package in a Package wizard (i.e., put the ECO classes in a separate assembly)
    • No ECO space, no UI
    • Create a new ECO application, add a reference to your package, edit the ECO space, add the package
    • Can have a Customer object in the package, and use it or descend from it in the EXE
  • Improved OCL Editor
    • Harder to confuse the parser
    • Editor available in Modeling surface
    • Categorized right-hand stuff
  • Domain Pattern support
    • Right-click on surface, Create by Pattern
    • Create Custom Patterns – select a set of classes, right-click, Save As Pattern; give it a name, description, etc.
  • Design surface is cleaner – doesn’t display names where there are no names, etc.
    • Auto-names associations – adds plurals when you make it one-to-many
  • Type names configuration
    • Allow user specification of type, models language independent
    • Example: if you declare an attribute as type “Integer”, it won’t compile in C#
    • Fun: if you often mistype “Integer” as “Intgeer”, you can tell ECO that’s an alternate name for the same type, and it’ll change it back to the canonical name
      • Also fun: You can do the same thing in the Code Editor with LiveTemplates
  • Overloaded OCL Operations
  • ECO Action Language
    • Derivative of OCL to allow side-effects (adds “:=”; can call methods)
    • Implement more business logic in your model, instead of in Delphi or C# code
    • Suggest using OCL when the logic is easy, and use Delphi/C# code if it’s complicated or you might want a debugger
    • Can call other methods (including methods implemented in Delphi/C#)
  • Extenders Extended
    • Supports menu items (TMainMenu, etc.)
    • EnableOCL and VisibleOCL – evaluated, must return Boolean. Think TAction.OnUpdate, but not centralized like actions – defined on each button/etc.
    • Execute Action Language
    • Invoke Debugger
  • Multiple DB support
    • Persist some classes via one PersistenceMapper and others via another PersistenceMapper
    • Combine this with Package In Package, and you can start building domain components
  • Enhanced DB reverse engineering
  • State Machine execution
    • State Diagram with Effects, Triggers, Guards, etc.
    • Define even more of your business logic graphically, and the framework executes it.
    • Define states (e.g., Requested, Canceled, Approved, Denied, Completed), then define triggers on each transition (Approve, Deny, Cancel, Complete). It knows which triggers are available based on the current state.
    • Effects are code that’s fired on a state change.
    • Guards say, “Don’t take this transition unless this expression evaluates to True.” Detects which triggers will violate guards, and will automatically disable those triggers.
    • States can also have entry actions and exit actions.
  • ASP.NET AutoForms
    • Go from model to execution in one step in ASP.NET (functionality already exists for GUI; this adds it for Web)
    • Add New > Other > ASP.NET AutoForm
    • Helps you start testing the model, see what it means. Shortens the feedback loop.
  • ECO in every version of Delphi
    • Professional: Class modeling, WinForms only (not ASP.NET), O/R mapping, OCL, XML persistence
    • Enterprise: WinForms, WebServices, WebForms, Database persistence (1 database, 1 ECO server)
    • Architect: State diagramming/execution, multi database, multi-ECO servers

Too bad. That state stuff was looking fairly interesting, but I think buying a dozen copies of Architect is probably a bit out of our reach right now. And the Professional version can’t even do databases. Sigh.

Leave a Reply

Your email address will not be published. Required fields are marked *