Saurabh's Blog

DCD Extensibility

June 17, 2009 · Leave a Comment

DCDEx2Data Centric Development (DCD) provides the following services (as plugins):-

ColdFusion, PHP, WebService, HTTP, LCDS, BlazeDS

Is that it?

What if we need to connect to some other server technology?

Cant we create services for some other server technology using the DCD workflow and author flex applications for it ? 

Luckily DCD ALSO provides extensiblity mechanism, using which users can write their own plugin for a particular server technology.

This developed plugin can then be used with the Flash Builder to connect to that server, create services and use DCD workflow to develop Flex applications!

Using DCD Extensibility to create plugins?

Lets consider a scenario:

EnterpriseDebbie is a developer in an Enterprise. EnterpriseDebbie often wants to use the enterprise services that are written in Ruby in her web applications. EnterpriseDebbie sees the extensible architecture in Flex Builder and builds a plug-in so that all of the developers in that Enterprise can now use the plug-in to generate client-side code for the Ruby on Rails services.EnterpriseDebbie has these options to do this:# She has a product, which supports AMF communication with Ruby on Rails, example WebOrb for Ruby on Rails (similar to BlazeDS)

  1. She just has a AMF implementation which could be plugged in to any server, example RubyAMF (similar to AMFPHP)
  2. She consumes Ruby on Rails services through HTTPService in Flex  (similar to any other HTTP Service)EnterpriseDebbie builds the plug-in with one of the above options and enables developers in her enterprise to use features in the DCD workflows.

Now, DCDEx supports three “server types” :-

HTTPService, WebService and RemoteObject

Which means if your server-side application is accessible over HTTP, you can connect to a Flex application by using HTTPService. Likewise for other server types.

Extension Points details

There will be some extension points which can be used by plug-in authors to provide their own service implementation as mentioned below:-

1. Extension point details:

  • Services Wizard,
  • Service Introspection (invoked in wizard / services explorer using refresh option),
  • Viewing Service File (As part of the Package Explorer, for example a CF developer can now see the CFC file that he/she has imported/created in the services folder)
  • Service Properties

Extension Point: serviceImplementation

Location: com.adobe.flexbuilder.DCDService

Extension Point Elements

  • serviceWizard: attribute name: class, a Java Class, should implement IServiceWizard
  • serviceIntrospector: attribute name: class, a Java Class, should implement  IServiceIntrospector
  • serviceProperties: attribute name: class, a Java Class, should implement IServiceProperties

2. Extension point details: Right-Click Context Menu

Extension Point: designViewContextMenu

Location: com.adobe.flexbuilder.mxml.editor.design

Extension Point Elements: configuration

  • class: Required, Java Type, must Implement com.adobe.flexbuilder.mxml.editor.design.extensions.IComponentConfiguration
    The component on which right click happened will be set as the component Instance and run() method will be called.
  • fullyQualifiedComponentName: Required, String Type
    The fully qualified class name of the component on which this context menu item needs to be added. For example, mx.controls.DataGrid
  • displayString: Required, String Type
    The string which will be displayed in the context menu item.

3. Extension point details: UI Authoring

Extension Point: componentConfigurator

Location: com.adobe.flexbuilder.dcrad

Extension Point Elements: configuration

  • class: Required, Java Type, must implement Implements com.adobe.flexbuilder.dcrad.extensions.IComponentDataConfiguration
    The component on which Service/Operation is dragged-dropped will be set as the component Instance and run() method will be called.
  • fullyQualifiedComponentName: Required, String Type
    The fully qualified class name of the component on which to associate with this configurator. For example, mx.controls.DataGrid

→ Leave a CommentCategories: Uncategorized