ECO JumpStart
I've been up quite late working out what I want to cover in the "ECO jump start" document.  The trick is to start at a level where the user knows absolutely nothing, and end up where they know enough to decide whether or not they wish to spend some time learning how to use ECO or not.
I think I should start off explaining why multi-tiered app development is a good idea; then I think I should go on to creating a package in a DLL; then onto creating a non-persistent WinForm app using that package; then make it persistent; and so on. My problem is that ECO just does so much!
I'll paste what I have so far at the bottom of this blog entry to get any feedback. As the list progresses the subjects become more advanced and I am worried that the jump start might actually frighten people off by making them feel overwhelmed. Maybe I should just take it so far and then leave the more advanced items out? Maybe I should just include a section at the end of the document explaining what advanced features are available without demonstrating how to use them? Then maybe do an "Advanced ECO" document in which I follow on where I left off and demonstrate the more advanced stuff.
At the moment I am undecided, what do you think? Remember, this document is really intended to server two purposes; it should be there to help new users to understand ECO, and also to act as a promotional ("marketing" if you like) document to boast how good ECO is without scaring people away.
And now the table of contents:
I think I should start off explaining why multi-tiered app development is a good idea; then I think I should go on to creating a package in a DLL; then onto creating a non-persistent WinForm app using that package; then make it persistent; and so on. My problem is that ECO just does so much!
I'll paste what I have so far at the bottom of this blog entry to get any feedback. As the list progresses the subjects become more advanced and I am worried that the jump start might actually frighten people off by making them feel overwhelmed. Maybe I should just take it so far and then leave the more advanced items out? Maybe I should just include a section at the end of the document explaining what advanced features are available without demonstrating how to use them? Then maybe do an "Advanced ECO" document in which I follow on where I left off and demonstrate the more advanced stuff.
At the moment I am undecided, what do you think? Remember, this document is really intended to server two purposes; it should be there to help new users to understand ECO, and also to act as a promotional ("marketing" if you like) document to boast how good ECO is without scaring people away.
And now the table of contents:
Overview
 Why create separate layers (GUI / Business / Data access)
 An overview of how ECO uses UML as the design tool to sepcify the business layer
 Explain that ECO can persist those business objects in a number of ways, the DB being switched in a matter of seconds
 
Creating a business classes package
 Create project
 Add references
 Configure package settings
 Add 2 classes with n--m association
 Add properties
 Add association
 Generate code
Creating a non-persistent WinForm app
 Create ECO WinForm project
 Add reference
 Select packages
 
Adding some simple GUI
 Delete all but rhRoot
 (Design support)
 Set EcoSpace type 
 Add DataGrid
 Set EcoSpaceType
 Add ExpressionHandle (allInstances)
 Bind the datagrid to the ExpressionHandle
Adding new objects
 Add EcoListActions
 Set RootHandle
 Add button
 Set the ListAction to Add
Drag and drop
 Add another ExpressionHandle
 Add another DataGrid
 Add another "Add" button   
 Add CurrencyManagerHandle, set parent = DataGrid1
 Add ExpressionHandle, expression = "self.AssociationToOtherClass"
 Add a DataGrid
 Add DragDrop extender
 DataGrid2 = DragSource
 DataGrid3 = DropTarget
 Run + create + drag/drop
Making the objects persistent
 Add XML persistence to EcoSpace
 Add EcoGlobalActions to form
 Connect to RootHandle
 Add button
 Set GlobalAction to UpdateDatabase
 Run, create, save, close, run
Creating a database
 Remove the XmlPersistence
 Add DB persistence + set configuration
 Add connection
 Generate DB
 Run, create data, save
Evolving a database
 Add new properties
 Rename a property + set FormerName
 Add new super class + move property up
 Evolve DB
 Run, show same data
Quick prototyping the model
 Set AutoForm = True on grids
 Run app, show auto forms
 Add button
 Set GlobalAction = debugger
 Run app, show debugger, show access to auto forms
State machines
 A simple state machine with triggers
 Triggers with paramters
 Transitions with guards
 Multiple transitions out of a single state with guards (explain how only 1 must be true)
 Multiple transitions out of a single state with the same trigger
 Nested regions
 Concurrent regions
 Final state
Multi user
 Unloading the cache to see changes by other users
 Turning on optimistic locking 
 Getting conflict information
 ChangeActionKind
 Locking regions
Remote persistence
 Creating the remote persistence server
 Registering as a remotable server
 Registering as a HTTP remotable server available via IIS
 Switching the WinForm to RemotePersistenceClient
Multi user synchronization server
 What it is, how it works
 Adding it to the remote persistence server
 Requesting changes from the WinForm client
 Run two apps, show the propagation of changes between them
ECO and ASP .NET
 Create ECO web application
 Reference the same model
 Explain why we have a PersistenceMapperProvider component (only about caching the mapping information for now)
 Show how to generate DB / evolve from PersistenceMapperProvider instead of the EcoSpace
 ECO ASP .NET autoforms for protoyping in ASP .NET
 Show the ECO WebForm
 Recreate the same WinForm gui in a WebForm
 
ASP .NET performance
 Show the pool size in Web.Config
 Explain what happens when more people request pages than there are EcoSpaces in the pool
 Explain the SessionStrategy
 Explain the maximum lifetime setting in Web.Config
ASP .NET multi-user
 Explain how EcoSpaces are kept in sync with each other via the PersistenceMapperProvider
 Demonstrate how WebForm data is in sync
 Demonstrate how the WinForm / WebForm apps do not stay in sync with each other
 Migrate the ASP .NET app to use the persistence server
 Demonstrate WinForm app reflecting changes to data made in a WebForm app
Overview of each of the ECO components
ECO in code
 Switching between Object and IObject
 Overview of some of the ECO services
  UndoService, In-memory transactions + undo blocks
  DirtyListService
  PersistenceService
  OCLPS Service
  OCL service
  OCL action language service
  
Advanced modeling techniques
 HasUserCode = true
 OCL derived attributes
 Overriding OCL derived attributes in subclasses
 Code derived attributes
 Code reverse derived attributes
 Derived associations
 Transient properties
 Transient classes
 Transient associations
 Association classes
 Platform independant property types
  AutoInc
  Blob
  Memo
 Delayed fetch properties
 Referencing other packages
  Extending classes
  Adding associations
 Adding class constraints
  Enforcing in a WinForm application
  Enforcing the same constraints in a webform application
  Disabling the auto-generated multiplicity constraints
 Object versioning
  Navigating historical data
  Retrieving all historical versions of an object
Advanced database techniques
 Reverse engineering a database
 Cusomizing the mapping information to fit an existing database
 Evolving the structure of an existing database
 Using a single model to pull data from multiple databases (including mixed servers) and updating the data too
Comments
Sure it will be a must have to me, just a beginner.
I’d like to see using Treeview; it’s so useful in many applications.
I’m interested also in XML in database (DB2 Expression-C, …). I’ve heard it’s fine using hierarchical structures, and those are just what I need.
Marketing also is VERY important. ECO world needs much users to be alive and on top also in future.
I think it’s good idea to be separate “Jump Start” and “Advanced ECO” documents.
Thanks Peter
Greetings Pena
/Kjell Rilbe
Personally I would like to see as much as possible of "advanced techniques" in ECO.
But many times I was explaining people why ECO should be used they say I can use NHibernate, DevExpress', Microsoft's tools (including LINQ).
They at least say to search Internet for "Object Relational Mapping".
It would be good to describe that ECO is not only ORM tool and compare it to some of others. So people just see a comparison table and do their decision.
Cheers.
Best regards,
Daniel Rail
>> ...Marketing also is VERY important. ECO world needs much users to be alive and on top also in future.
- Ok, You have to introduce all good things ECO accomplishes, why we should use it ? Examples of projects ? Small and big. I want to be conviced in the way why I didn't use it before.
>> I'd stop at "Quick prototyping the model".
- Ok, for "Jump Start",
>>...good to divide the documentation in two "Jump Start" and "Advanced ECO". But, if you can keep it under 750 pages, do just one book, otherwise separate them into two books.
- No, does "Jump Start" need a
book, it's a tutorial. All stuffs need to be in one book.
>>...would like to see as much as possible of "advanced techniques" in ECO.
- Ok
Best regards
Thanks
Greetings Pena