VASmalltalk 8.6.1 has been published …

… and after some hours working with it: it looks pretty cool. Switched the whole PUM project to 8.6.1 just by importing the config maps.

Posted in Smalltalk | Tagged , | Leave a comment

PUM 2.0.3 – Gemstone Sorting/Index Definitions

Only minor news:

* with 2.0.3 the first support for SortedCollection within the modeller has been added – but only one attribute level has been added so far – resulting in code like: SortedCollection sortBlock: [ :a :b | a getName < b getName ].

* with 2.0.3 the first support for identity/equality index management definition on associations has been added. Helper methods for audit indices and creating/deleting of indices are now created.

Posted in Smalltalk | Tagged , | Leave a comment

PUM 2.x – Sencha ExtJS Client Code

… after working hard on the server-side code generation for Gemstone, we switched to the client-side code generation for Sencha ExtJS5 library. We use this library in our browser clients – therefore more work was needed to help the Javascript developers with their code base and give them the possibility to react much faster to model changings.

We already created the model definitions for Sencha, we now write these model definitions into the file system within our Sencha project structure.

For all API-operation definitions we create JS-functions which simply ends up with calling “Ext.Ajax.request” … and return the values.

In addition to these “simple” Ajax calls we also create code to define a suitable “data store”, a data structure central to the whole data-management of Sencha. By using a “data store” you enable your application to create, update, reading and destroying of objects on the server side.

After doing this we will return to the Gemstone generator and we have to create the support for “data store” API calls on the server side.

Posted in Smalltalk | Tagged , , , | Leave a comment

PUM 2.x – Modelling Associations in Gemstone

The various possibilities of modelling associations in Gemstone was the main reason to rewrite the whole association support in PUM.

When defining associations you may select :n-association type, the implementation type and add various options to that associations.

Association Type

You can only select three major association types:

* m:n association types (both sides navigation)
* 1:n associaton bidirectional (both sides navigation)
* 1:n association unidirectional (one side navigation)

Implementation Type

After defining the general association type you select among various implementation types: set, bag, dictionary, sort, ordered, indexed

Implementation Options

And then you may select options to that association: unique (memebership), identity (membership), conflict (high conflict possibilities) and large (lot of members).

Due to these various options you end up with the following classes in Gemstone suitable for modelling the association: Array, Bag, IdentityBag, RcIdentityBag, IdentitySet, Set, SortedCollection, IdentityDictionary, StringKeyValueDictionary and IntegerKeyValueDictionary.

The main interesting thing is, that OrderedCollection is not used any more. Instead I use the class Array, which seems to be a faster replacement for OrderedCollection.

Posted in Smalltalk | Tagged , | Leave a comment

PUM 2.x

Ok, the milestone 2.x has been reached and the first live demo was successful (thanks to the both listeners :-)).

The live demo was about

* developing a small model
* define some REST API calls
* create source code for Gemstone
* transfer/import sources to Gemstone
* manually change the Apache2 configuration for the new REST-API
* add one ProxyPass statement in 000-default.conf (:-))
* start HTTP server within Jade
* view and try out the (swagger-based) REST API in a browser
* live coding of the logic of the missing methods
* one JADE (running the HTTP server) points to the missing
methods
* second Jade-IDE is used for programming the logic

Other work has been done in the latest versions:

* The Sencha ExtJS source code generator (client model) has been improved to create the model structure – but it is still far from being the end state. Here the programming model is still searched.

* support for OrderedCollection (in associations) reintroduced

* defining attributes in the APi classes via using access paths in the domain classes

* lots of helper menu commands added (duplicating attributes, copying from/to API classes to/from database classes).

* tests added for the generated source code to get a better feeling

* API class hierarchy rearranged

* introduction of Random class in the modelling tool

* introduction of RcCounter class in the modelling tool

* support for id generation using Random and OOP. But OOP do not seem to be a good solutions for that (if someome has read the discussion in the GLASS group …).

* update mechanims introduced. The user downloads the whole package once and for an update just download the latest icx-image file.

We are now at version 2.02.08 and some points do need more work:

* introduction of SortedCollection

* definition of indices for the model within PUM and creation/management in Gemstone

* much clearer definition which classes are used implementing associations

* better support for the revision counter attribute in the domain models.

* better documentation of the programming model in Gemstone when writing the REST logic methods.

* the whole area of Unicode/UTF-8 and ISO-8859-x

* create a generator for VASmalltalk to have the client side implemented (without swagger).

The progress is promising and we start to refactor our manually coded REST-API software with PUM next week.

Posted in Smalltalk | Tagged , , | 1 Comment

PUM 1.9….

Some days of work and now the version 2.0 is coming up at the horizon.

* The classes are now divided between API classes and domain classes. The domain classes are the classes holding the values within the Gemstone database. The API classes are the ones you are allowed to use in the REST specification. This idea has been introduced to make the external viewable API construct more stable from the rest of the application development. Copying data methods from/to domain/API classes are generated.

* REST APIs can now be modelled in the modelling tool. They can be arranged in APIs and in groups – allowing to create Swagger specification.

More work has to be done to make the GUI better, add some additional helper commands and to create source code which is really a create-and-run source code.

Posted in Smalltalk | Tagged , , | Leave a comment

PUM 1.2.59

More work done towards a general REST generator (model and GUI change):

-> Projects may now have a class prefix attribute. This string is added to all created classes

-> Classes may now have “roles”. The code generators may use this “roles” during code generation.

-> Classes/Attributes have now “shadow” objects.

-> Menu entry added to jump directly to the error definition page

-> Menu entry added to create all classes within the model needed to have initial REST support.

Posted in Smalltalk | Tagged , , | Leave a comment