Sunday, October 28, 2007

Rich Internet Applications, Woko Style !

For a while, the idea of exporting Woko managed POJOs into processable formats has been floating around. This way, the data could be accessed not only by human beings, but also by "third party" code easily...

With the growing integration of AJAX and RIA technologies into web applications, the idea has transformed into a requirement. Dynamicity inside the browser has a price : in addition to HTML, you need your webapp to serve some processable infos for your AJAX or RIA client-side technology. Also, beyond export of objects, client applications might need to access more advanced features, like CRUD, search, or custom biz logic.

But wait...

Woko already serves your POJOs as HTML... why wouldn't it serve them as XML, or JSON ?
Woko already allows a human being to access the application's business logic... why wouldn't it allow another program to do it as well ?

XML/JSON POJO Exports

This is now an out-of-the-box feature ! You can now easily export your POJOs to XML or JSON, via the (xml, profileId, targetType) facet.
It's a command facet, so it can be invoked remotely just be sending an HTTP request to the appropriate URL, like :

http://.../myapp/command/Book/123/xml

Default export is available for all Objects and ROLE_WOKO_DEVELOPER, but of course, you can reuse and tweak the output for your own profiles/objects... via facet override, as usual !

Fat Client API

In addition to XML/JSON export, Woko also allows remote applications to access "functionalities" in the application. It proposes a RPC-style API for invocation of all the features in Woko : CRUD, search, and triggering of Command Facets.

In short, a remote client can virtually do everything a human being can do with the application (depending of course of the facet assignation) !

The Killer AJAX/RIA Backend

This is pretty fat news, as you can guess. The "Fat Client API" enables fast and easy implementation of hybrid webapps, where regular HTML is mixed with AJAX widgets, Flash components, Applets etc.

Last but not least, security isn't a problem either. As all the Fat Client API uses facets that you define, the whole system is consistent. Data and services are tailored to the caller's profile, so you hardly publish a service to the wrong clients without noticing it ! Moreover, the "user profiling" principle applies here too : you probably don't wanna provide the same level of features to everybody...

This feature embraces Woko's Web 2.0 and simplicity principles, and makes it a first class choice for people building AJAX/RIA webapps. Forget about writing all those handlers for your XmlHttpRequest objects, they're already there ! You already have all the plumbing for exporting your data, and deploy new RPC services.

Put your POJOs on the Web !

Monday, May 21, 2007

JFacets 2.1 with Instance Facets !

JFacets 2.1 has just been released, with support for Instance Facets !

Until now, facets were bound to types (Class or Interface), but you could not easily attach a facet to an instance of a given type... Well, now you can, using InstanceFacets !

A new interface has been introduced (IInstanceFacet - javadocs here), that defines a callback method that you have to implement in order to decide if the facet matches the target object or not.

This new release is available for download on sf.net. It doesn't break compatibility, so you can upgrade your jfacets jar without breaking anything to your app.

Enjoy !

Sunday, May 20, 2007

WokoTracker demo available

WokoTracker, a full blown Woko demo, has just been released on sf.net.

It's a simple but functional issue tracker with 3 different roles, that demonstrates some advanced features of Woko, such as :

  • Custom users (part of the Domain Model)

  • CRUD features customization (instance-based permissions and the like)

  • Page Templates and Object Renderer extension

  • Filtered search, extended results page

  • Commands on objects

  • ...and more !



Read more...

Saturday, April 14, 2007

JFacets 2.0 released

JFacets 2.0 has just been released.

Here's the change list :

  • enabled use of plain POJOs : facets don't even need to implement the IFacet interface any more !

  • Added a getFacet(facetName, profileId) method to JFacets : allows easier use when you don't need any target object

  • Added access to the FacetDescriptor used for retrieving the facets from the facet context (deprecated one method in IFacetContextFactory and added a new one)

  • Added INavigableProfileRepository (and upgraded Acegi integration layer) : enables full nav on the Profiles Graph from IDEs, tools etc.

  • Refactored WebFacets for greater flexibility (now you can obtain request-scoped JFacets beans from the Spring context, in your Spring apps)

  • Upgraded Spring version, now uses 2.0.2, but still compatible with earlier versions


Those changes should not break backward compatibility (unless you have developed custom facet context factories etc.), so don't hesitate to upgrade to this new release !

Full sources + maven2 build is available (in a zip) as well as a compiled jar on sf.net downloads (plus demos of WebFacets and Acegi integration).

Also, the core JFacets project is now managed with SVN on sf.net (moved from the CVS).

Enjoy !

Thursday, March 08, 2007

Woko 0.5 released

I've just released a 0.5 of the Woko project template. It includes several enhancements :

  • Merged ROLE_READ and ROLE_WRITE into a single ROLE_USER as this makes the overall stuff simpler. ROLE_USER is appropriate for demos, or really simple apps only. For more advanced stuff, it's better to extend the profiles graph as you want !

  • Improved association editing : now you can create new objects and associate them directly to other objects. This is much more user friendly than the previous version where you had to create objects separatly and then associate them.

  • Localized all messages and texts, and provided a French translation. More languages could be supported easily just by creating new resource files.

  • Improved search page : now search results are grouped by class, and the score is shown.

  • Fixed property specific overriding : now it's really easy, and reliable :-)

  • Included a calendar widget for date properties by default (uses jscalendar)

  • Fixed some bugs and made small improvements here and there...


The docs in the wiki will be updated soon to reflect the current status of development.

Grab the project template from sourceforge, and enjoy the ride !

Cheers

Remi

Sunday, January 07, 2007

JFacets 1.3.6 released

JFacets v1.3.6 has just been released. It's a minor evolution that includes "behind-the-scenes" enhancements, and maven2-based build.

You can get it from sourceforge, or use maven2 dependencies (thanks to the maven team for uploading the bundle !).

Change list :
  • Maven2 used for the build in replacement of ant
  • Profiles cache in the JFacets bean : profiles can be kept in a map for avoiding calls on the ProfileRepository and gain lots of performance (e.g. if your Profile Repository is making calls on some DB). Configurable via Spring using the "useProfilesCache" property.
  • Lowered some logs (too many INFOs !)
  • added "dumpFacetsAsXml()" method in JFacets : allows to retrieve a list of all descriptors as XML (can be useful in order to know about active facets and/or to reassign them to other profiles/object types)
  • MetaFacetDescriptorManager : removed caching of descriptors, this allows to have dynamic facets easier (see Woko's Dynamic DB facets)
  • Finally created a few unit tests (to be continued) !
Enjoy !