Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Java WorkFlow Tooling (JWT) » pb using aspects example
pb using aspects example [message #526893] Tue, 13 April 2010 08:25 Go to next message
Benjamin Isnard is currently offline Benjamin Isnard
Messages: 3
Registered: April 2010
Junior Member
Hello,

I have some difficulties trying to use the aspects extensions in order to add custom properties to the workflow elements (I'd like to add string properties to applications, guards, subprocesses and references to Data). The doc explains there are different ways to add metamodel extensions so I first tried the key-value option. If another option is better for my purpose (see below) I'd be glad you help me choose it.

In the example 'activity_property_edited.workflow' of the jwt-conf-property-model plugin, the _conf file contains 3 aspects declarations where the 'Aspect Instance EType' value is either EBoolean, EString or EInt; so it seems it corresponds to the property's type. Conversely in the wiki page on Metamodel extensions, in the paragraph 'Setting up simple (key-value) additional model extensions' it is said the 'Aspect Instance Type' of the property aspect should be 'property:Property'. Both seem to work but this is a bit unclear.

When I test the example (using v0.7.0 of JWT), some properties appear in the 'Custom Properties' tab of the properties view but not the way I would wait for (property name on the left, value on the right): in the left column I get 3 aspect attribute names (Id, Target Model Element and Value) per aspect, and in the right column the corresponding values of these attributes.
One problem is that it is not possible to set the property for the new nodes I create (no 'Aspect' entry in the 'New Child' menu for Actions); only in the conf editor I can add new Property, but it is not possible to type in the Id and the Value.
Is it possible to have a simpler property view i.e. only property name and value according to the column titles (so one row per property), and how to make it work so that this property appears automatically for all created model elements ?

Another problem is that the 'Custom Properties' tab is not refreshed when the selection changes. It keeps the values of the previously selected object.

Thanks a lot for your help,
Benjamin Isnard
Sysfera <www.sysfera.com>
Re: pb using aspects example [message #527590 is a reply to message #526893] Thu, 15 April 2010 13:17 Go to previous messageGo to next message
Marc Dutoo is currently offline Marc Dutoo
Messages: 71
Registered: July 2009
Member
Hello Benjamin

That's a long email :)

See notes in your text below.

& Could you provide us with your model ? Maybe we'd be able to better
help you.

Again, I'd advise you to send your requests also to the JWT mailing list
at jwt-dev@eclipse.org .

Good luck !

Regards,
Marc

Benjamin Isnard a écrit :
> Hello,
>
> I have some difficulties trying to use the aspects extensions in order
> to add custom properties to the workflow elements (I'd like to add
> string properties to applications, guards, subprocesses and references
> to Data). The doc explains there are different ways to add metamodel
> extensions so I first tried the key-value option. If another option is
> better for my purpose (see below) I'd be glad you help me choose it.

Another option would be designing your own EMF Aspect model (see
http://wiki.eclipse.org/JWT_Metamodel_Extension#For_develope rs_:_developing_complex_additional_model_extensions_using_EM F-generated_code
). So you have to have more knowledge of EMF, and develop it as an
Eclipse plugin on its own. It is required if you need to have a custom
Property UI, or if you need your custom values to be complex, beyond
what mere custom Properties allow, ex.
* an arbitrarily complex EMF subtree
* a Java Enumeration, which allows you to have a drop-down list of
values in the editor. See the Loggin sample at
http://wiki.eclipse.org/JWT_Metamodel_Extension#Logging_Aspe ct_sample

Otherwise, if the value types allowed by custom Properties is enough,
you don't need it.

Usually, you can start using custom Properties since they require less
EMF development, and then switch to designing a custom EMF Aspect model
if custom Properties are not enough.

> In the example 'activity_property_edited.workflow' of the
> jwt-conf-property-model plugin, the _conf file contains 3 aspects
> declarations where the 'Aspect Instance EType' value is either EBoolean,
> EString or EInt; so it seems it corresponds to the property's type.
> Conversely in the wiki page on Metamodel extensions, in the paragraph
> 'Setting up simple (key-value) additional model extensions' it is said
> the 'Aspect Instance Type' of the property aspect should be
> 'property:Property'. Both seem to work but this is a bit unclear.

I agree there's not much information about it on the wiki, but it's
rather implementation information, which is documented in the source code.

How it works :
* an Aspects is instanciated, according to its Aspect information
(and especially by Aspect Instance EType), by its AspectFactory
* AspectFactories are registered in the AspectFactoryRegistry
through plugin.xml
* for now there are two AspectFactories :
* one that is used if the Aspect Instance EType is an EClass, that
is able to instanciate EClasses. THAT is the one used for custom EMF
Aspect models ! See
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/factor y/internal/?root=Technology_Project
* one that is used if Aspect Instance EType is a primitive type i.e.
EDataType (like EInt), that is able to instanciate EDataTypes - THAT is
the one used by custom Properties ! See
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-property-model/src/org/eclipse/jwt/we/conf/aspec ts/factory/?root=Technology_Project

>
> When I test the example (using v0.7.0 of JWT), some properties appear in
> the 'Custom Properties' tab of the properties view but not the way I
> would wait for (property name on the left, value on the right): in the
> left column I get 3 aspect attribute names (Id, Target Model Element and
> Value) per aspect, and in the right column the corresponding values of
> these attributes.

What displays custom Properties in the Property view is the
"PropertyTabbedPropertySheetPage" i.e. the custom Property specific
property sheet, which is added in the jwt-we-conf-model plugin :
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model.we/plugin.xml?root=Technology_Project& view=markup

Alas, this "PropertyTabbedPropertySheetPage" is a "hack" of some
EMF.Edit code, so it does not display names on the left and values on
the right, but lists all properties, each one their id (name), element
and value in its own block. (name, value) would be better, but REALLY
harder to do in a generic manner (for any kind of Aspect).

I think it would be far easier for you to design a custom Aspect and
write your own property sheet in SWT than make the existing one work...
There's a sample showing how to do it :
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-plugins/jwt-we-sample-staticaspect/?root=Technology_P roject

there are several ways, ex. you can base your Aspect Property Section on
AbstractSingleStaticAspectPropertySection, and maybe hide the Id and
Elements by adding a proxy PropertySource .

I've added 2 screenshots at
http://wiki.eclipse.org/JWT_Metamodel_Extension .

> One problem is that it is not possible to set the property for the new
> nodes I create (no 'Aspect' entry in the 'New Child' menu for Actions);
> only in the conf editor I can add new Property, but it is not possible
> to type in the Id and the Value.

If there's none yet and" "multiple" is at true in the Aspect definition,
there should be a "New child" entry. Weird ? Works for me, but maybe
I'll have to try that again on a fresh install...

NB. The conf editor is mainly here to help design Aspects, not
instanciate them.

> Is it possible to have a simpler property view i.e. only property name
> and value according to the column titles (so one row per property), and
> how to make it work so that this property appears automatically for all
> created model elements ?

As said above, either you're an EMF UI guru and you'll hack our
"PropertyTabbedPropertySheetPage", or you'll design your own Aspect EMF
and SWT UI in its own plugin.

>
> Another problem is that the 'Custom Properties' tab is not refreshed
> when the selection changes. It keeps the values of the previously
> selected object.

Again, works for me, I'll have to try it on a fresh install. Events are
handled in the AspectEventManager
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/event/ AspectEventManager.java?root=Technology_Project&view=mar kup
you could try putting a breakpoint there.

>
> Thanks a lot for your help,
> Benjamin Isnard
> Sysfera <www.sysfera.com>
>
Re: pb using aspects example [message #528365 is a reply to message #527590] Tue, 20 April 2010 05:26 Go to previous messageGo to next message
Benjamin Isnard is currently offline Benjamin Isnard
Messages: 3
Registered: April 2010
Junior Member
Hi Marc,

Thanks a lot for your long answer Smile
I got the fact that it would be better in my situation to use custom EMF Aspect Model and am working on it.
Still some issues/questions about the examples... and the answers to your questions are in the text below.
- About the logging example: it works well! Smile Just one question: the user who creates a new workflow must activate the profile and the aspect manually. Is there a way to activate a profile by default for all workflows?

- About the dynamic aspect example: What is the difference with static? I tried to make the example plugin work but nothing appears in the 'Custom Properties' tab (for an Action object), after activating the profile/aspect in the 'Manage Workflow Profiles' sheet. I tried to modify the registereddynamicaspect.conf file (in the plugin) by adding to the aspect element the following attributes: autocreated="true" multiple="true". But this didn't change anything. I still don' have the 'New child' entry for aspects when right-clicking on an action.

- About the static aspect example: some errors at startup:
"The activator org.eclipse.jwt.sample.staticaspect.provider.StaticaspectEdi tPlugin$Implementation for bundle org.eclipse.jwt.sample.staticaspect.edit is invalid"
"Section org.eclipse.jwt.sample.staticaspect.edit declares non-existing filter or section class."
"Plug-in org.eclipse.jwt.sample.staticaspect.edit was unable to load class org.eclipse.jwt.we.modelext.editors.properties.tabbedPage.Sa mpleStaticAspectPropertySection. "

- About making my own property sheet: if I understood well I should extend class AbstractSingleStaticAspectPropertySection by overriding createControls(..) to change the way my aspect is displayed (eg I want only its name and value). It seems to me I should replace the creation of a ModelPropertySourceProvider object by another one. Is it a good option?

Best regards,
Benjamin

Marc Dutoo wrote:
> Hello Benjamin
>
> That's a long email Smile
>
> See notes in your text below.
>
> & Could you provide us with your model ? Maybe we'd be able to better help you.

the model I am using is targeted at scientific applications (it derives from a research project: http://gwendia.polytech.unice.fr/doku.php). It uses data flows instead of control flows therefore has many differences with the one used in JWT. For ex. data flows are modeled by links connecting activity (actions) data ports. Each input or output port is typed and has got an additional integer attribute that represents the depth of the data tree (nested arrays of data) that is either produced or used by the port.
The data link can be represented in JWT using data items and two reference links, one from the source action, one to the destination; but I don't know yet where to store the integer as there is no concept of port. If an attribute could be added to a reference link that could work.
>
> Again, I'd advise you to send your requests also to the JWT mailing list at jwt-dev@eclipse.org .
OK I'll copy it there.
>
> Good luck !
>
> Regards,
> Marc
>
> Benjamin Isnard a écrit :
>> Hello,
>>
>> I have some difficulties trying to use the aspects extensions in order to add custom properties to the workflow elements (I'd like to add string properties to applications, guards, subprocesses and references to Data). The doc explains there are different ways to add metamodel extensions so I first tried the key-value option. If another option is better for my purpose (see below) I'd be glad you help me choose it.
>
> Another option would be designing your own EMF Aspect model (see http://wiki.eclipse.org/JWT_Metamodel_Extension#For_develope rs_:_developing_complex_additional_model_extensions_using_EM F-generated_code ). So you have to have more knowledge of EMF, and develop it as an Eclipse plugin on its own. It is required if you need to have a custom Property UI, or if you need your custom values to be complex, beyond what mere custom Properties allow, ex.
> * an arbitrarily complex EMF subtree
> * a Java Enumeration, which allows you to have a drop-down list of values in the editor. See the Loggin sample at http://wiki.eclipse.org/JWT_Metamodel_Extension#Logging_Aspe ct_sample
>
> Otherwise, if the value types allowed by custom Properties is enough, you don't need it.
>
> Usually, you can start using custom Properties since they require less EMF development, and then switch to designing a custom EMF Aspect model if custom Properties are not enough.
>
>> In the example 'activity_property_edited.workflow' of the jwt-conf-property-model plugin, the _conf file contains 3 aspects declarations where the 'Aspect Instance EType' value is either EBoolean, EString or EInt; so it seems it corresponds to the property's type. Conversely in the wiki page on Metamodel extensions, in the paragraph 'Setting up simple (key-value) additional model extensions' it is said the 'Aspect Instance Type' of the property aspect should be 'property:Property'. Both seem to work but this is a bit unclear.
>
> I agree there's not much information about it on the wiki, but it's rather implementation information, which is documented in the source code.
>
> How it works :
> * an Aspects is instanciated, according to its Aspect information (and especially by Aspect Instance EType), by its AspectFactory
> * AspectFactories are registered in the AspectFactoryRegistry through plugin.xml
> * for now there are two AspectFactories :
> * one that is used if the Aspect Instance EType is an EClass, that is able to instanciate EClasses. THAT is the one used for custom EMF Aspect models ! See http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/factor y/internal/?root=Technology_Project
> * one that is used if Aspect Instance EType is a primitive type i.e. EDataType (like EInt), that is able to instanciate EDataTypes - THAT is the one used by custom Properties ! See http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-property-model/src/org/eclipse/jwt/we/conf/aspec ts/factory/?root=Technology_Project
>
>>
>> When I test the example (using v0.7.0 of JWT), some properties appear in the 'Custom Properties' tab of the properties view but not the way I would wait for (property name on the left, value on the right): in the left column I get 3 aspect attribute names (Id, Target Model Element and Value) per aspect, and in the right column the corresponding values of these attributes.
>
> What displays custom Properties in the Property view is the "PropertyTabbedPropertySheetPage" i.e. the custom Property specific property sheet, which is added in the jwt-we-conf-model plugin :
> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model.we/plugin.xml?root=Technology_Project& view=markup
>
> Alas, this "PropertyTabbedPropertySheetPage" is a "hack" of some EMF.Edit code, so it does not display names on the left and values on the right, but lists all properties, each one their id (name), element and value in its own block. (name, value) would be better, but REALLY harder to do in a generic manner (for any kind of Aspect).
>
> I think it would be far easier for you to design a custom Aspect and write your own property sheet in SWT than make the existing one work... There's a sample showing how to do it : http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-plugins/jwt-we-sample-staticaspect/?root=Technology_P roject
>
> there are several ways, ex. you can base your Aspect Property Section on AbstractSingleStaticAspectPropertySection, and maybe hide the Id and Elements by adding a proxy PropertySource .
>
> I've added 2 screenshots at http://wiki.eclipse.org/JWT_Metamodel_Extension .
>
>> One problem is that it is not possible to set the property for the new nodes I create (no 'Aspect' entry in the 'New Child' menu for Actions); only in the conf editor I can add new Property, but it is not possible to type in the Id and the Value.
>
> If there's none yet and" "multiple" is at true in the Aspect definition, there should be a "New child" entry. Weird ? Works for me, but maybe I'll have to try that again on a fresh install...
>
> NB. The conf editor is mainly here to help design Aspects, not instanciate them.
>
>> Is it possible to have a simpler property view i.e. only property name and value according to the column titles (so one row per property), and how to make it work so that this property appears automatically for all created model elements ?
>
> As said above, either you're an EMF UI guru and you'll hack our "PropertyTabbedPropertySheetPage", or you'll design your own Aspect EMF and SWT UI in its own plugin.
>
>>
>> Another problem is that the 'Custom Properties' tab is not refreshed when the selection changes. It keeps the values of the previously selected object.
>
> Again, works for me, I'll have to try it on a fresh install. Events are handled in the AspectEventManager http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/event/ AspectEventManager.java?root=Technology_Project&view=mar kup
> you could try putting a breakpoint there.
>
>>
>> Thanks a lot for your help,
>> Benjamin Isnard
>> Sysfera <www.sysfera.com>
>>
>

Re: pb using aspects example [message #529172 is a reply to message #528365] Fri, 23 April 2010 04:59 Go to previous messageGo to next message
Marc Dutoo is currently offline Marc Dutoo
Messages: 71
Registered: July 2009
Member
Hi Benjamin

Benjamin Isnard a écrit :
> Hi Marc,
>
> Thanks a lot for your long answer :)
> I got the fact that it would be better in my situation to use custom EMF
> Aspect Model and am working on it.
> Still some issues/questions about the examples... and the answers to
> your questions are in the text below.
> - About the logging example: it works well! :) Just one question: the
> user who creates a new workflow must activate the profile and the aspect
> manually. Is there a way to activate a profile by default for all
> workflows?

Relieved am I about the Logging sample :)

In order to activate a profile "by default", there are workarounds :
* either propose to your users a workflow template that has this
profile activated, see
http://wiki.eclipse.org/JWT_NewNoteworthy_0_6#Workflow_templ ates
* or develop a new "New [custom] workflow" action and plug it in the
action bar using plugin.xml
* if you've got ideas on how it would work, I could even help you
making the last one flexible and configurable, so it could be used by
other people for their own profiles by only configuring the plugin.xml .

>
> - About the dynamic aspect example: What is the difference with static?
> I tried to make the example plugin work but nothing appears in the
> 'Custom Properties' tab (for an Action object), after activating the
> profile/aspect in the 'Manage Workflow Profiles' sheet. I tried to
> modify the registereddynamicaspect.conf file (in the plugin) by adding
> to the aspect element the following attributes: autocreated="true"
> multiple="true". But this didn't change anything. I still don' have the
> 'New child' entry for aspects when right-clicking on an action.

"Dynamic" custom aspects are an attempt to use "dynamic" EMF, i.e. that
is loaded by EMF's generic, reflective API rather than by
genmodel-generated java code. Its benefits are that it doesn't require
genmodel-configured generation, but to be really useful it would have to
make the other plugin stuff easier, for instance by generating a
plugin.xml...

>
> - About the static aspect example: some errors at startup:
> "The activator
> org.eclipse.jwt.sample.staticaspect.provider.StaticaspectEdi
> tPlugin$Implementation for bundle
> org.eclipse.jwt.sample.staticaspect.edit is invalid"
> "Section org.eclipse.jwt.sample.staticaspect.edit declares non-existing
> filter or section class."
> "Plug-in org.eclipse.jwt.sample.staticaspect.edit was unable to load
> class org.eclipse.jwt.we.modelext.editors.properties.tabbedPage.Sa
> mpleStaticAspectPropertySection. "

I guess we didn't test it on 0.7.0 . But if LoggingAspect works you
won't miss it. I'll open a bug though.

>
> - About making my own property sheet: if I understood well I should
> extend class AbstractSingleStaticAspectPropertySection by overriding
> createControls(..) to change the way my aspect is displayed (eg I want
> only its name and value). It seems to me I should replace the creation
> of a ModelPropertySourceProvider object by another one. Is it a good
> option?

Yep, even further, replace it by a custom wrapper. In order to do that,
either extend it to customize it, or replace it by your own
PropertySourceProvider implementation that follows the Wrapper pattern
and calls ModelPropertySourceProvider for its implementation, except
where you want it customized.

>
> Best regards,
> Benjamin

Best regards also, and good luck,
Marc


>
> Marc Dutoo wrote:
>> Hello Benjamin
>>
>> That's a long email :)
>>
>> See notes in your text below.
>>
>> & Could you provide us with your model ? Maybe we'd be able to better
>> help you.
>
> the model I am using is targeted at scientific applications (it derives
> from a research project: http://gwendia.polytech.unice.fr/doku.php). It
> uses data flows instead of control flows therefore has many differences
> with the one used in JWT. For ex. data flows are modeled by links
> connecting activity (actions) data ports. Each input or output port is
> typed and has got an additional integer attribute that represents the
> depth of the data tree (nested arrays of data) that is either produced
> or used by the port.
> The data link can be represented in JWT using data items and two
> reference links, one from the source action, one to the destination; but
> I don't know yet where to store the integer as there is no concept of
> port. If an attribute could be added to a reference link that could work.
>>
>> Again, I'd advise you to send your requests also to the JWT mailing
>> list at mailto:jwt-dev@eclipse.org .
> OK I'll copy it there.
>>
>> Good luck !
>>
>> Regards,
>> Marc
>>
>> Benjamin Isnard a écrit :
>>> Hello,
>>>
>>> I have some difficulties trying to use the aspects extensions in
>>> order to add custom properties to the workflow elements (I'd like to
>>> add string properties to applications, guards, subprocesses and
>>> references to Data). The doc explains there are different ways to add
>>> metamodel extensions so I first tried the key-value option. If
>>> another option is better for my purpose (see below) I'd be glad you
>>> help me choose it.
>>
>> Another option would be designing your own EMF Aspect model (see
>> http://wiki.eclipse.org/JWT_Metamodel_Extension#For_develope rs_:_developing_complex_additional_model_extensions_using_EM F-generated_code
>> ). So you have to have more knowledge of EMF, and develop it as an
>> Eclipse plugin on its own. It is required if you need to have a custom
>> Property UI, or if you need your custom values to be complex, beyond
>> what mere custom Properties allow, ex.
>> * an arbitrarily complex EMF subtree
>> * a Java Enumeration, which allows you to have a drop-down list of
>> values in the editor. See the Loggin sample at
>> http://wiki.eclipse.org/JWT_Metamodel_Extension#Logging_Aspe ct_sample
>>
>> Otherwise, if the value types allowed by custom Properties is enough,
>> you don't need it.
>>
>> Usually, you can start using custom Properties since they require less
>> EMF development, and then switch to designing a custom EMF Aspect
>> model if custom Properties are not enough.
>>
>>> In the example 'activity_property_edited.workflow' of the
>>> jwt-conf-property-model plugin, the _conf file contains 3 aspects
>>> declarations where the 'Aspect Instance EType' value is either
>>> EBoolean, EString or EInt; so it seems it corresponds to the
>>> property's type. Conversely in the wiki page on Metamodel extensions,
>>> in the paragraph 'Setting up simple (key-value) additional model
>>> extensions' it is said the 'Aspect Instance Type' of the property
>>> aspect should be 'property:Property'. Both seem to work but this is a
>>> bit unclear.
>>
>> I agree there's not much information about it on the wiki, but it's
>> rather implementation information, which is documented in the source
>> code.
>>
>> How it works :
>> * an Aspects is instanciated, according to its Aspect information
>> (and especially by Aspect Instance EType), by its AspectFactory
>> * AspectFactories are registered in the AspectFactoryRegistry
>> through plugin.xml
>> * for now there are two AspectFactories :
>> * one that is used if the Aspect Instance EType is an EClass, that
>> is able to instanciate EClasses. THAT is the one used for custom EMF
>> Aspect models ! See
>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/factor y/internal/?root=Technology_Project
>>
>> * one that is used if Aspect Instance EType is a primitive type
>> i.e. EDataType (like EInt), that is able to instanciate EDataTypes -
>> THAT is the one used by custom Properties ! See
>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-property-model/src/org/eclipse/jwt/we/conf/aspec ts/factory/?root=Technology_Project
>>
>>
>>>
>>> When I test the example (using v0.7.0 of JWT), some properties appear
>>> in the 'Custom Properties' tab of the properties view but not the way
>>> I would wait for (property name on the left, value on the right): in
>>> the left column I get 3 aspect attribute names (Id, Target Model
>>> Element and Value) per aspect, and in the right column the
>>> corresponding values of these attributes.
>>
>> What displays custom Properties in the Property view is the
>> "PropertyTabbedPropertySheetPage" i.e. the custom Property specific
>> property sheet, which is added in the jwt-we-conf-model plugin :
>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model.we/plugin.xml?root=Technology_Project& view=markup
>>
>>
>> Alas, this "PropertyTabbedPropertySheetPage" is a "hack" of some
>> EMF.Edit code, so it does not display names on the left and values on
>> the right, but lists all properties, each one their id (name), element
>> and value in its own block. (name, value) would be better, but REALLY
>> harder to do in a generic manner (for any kind of Aspect).
>>
>> I think it would be far easier for you to design a custom Aspect and
>> write your own property sheet in SWT than make the existing one
>> work... There's a sample showing how to do it :
>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-plugins/jwt-we-sample-staticaspect/?root=Technology_P roject
>>
>>
>> there are several ways, ex. you can base your Aspect Property Section
>> on AbstractSingleStaticAspectPropertySection, and maybe hide the Id
>> and Elements by adding a proxy PropertySource .
>>
>> I've added 2 screenshots at
>> http://wiki.eclipse.org/JWT_Metamodel_Extension .
>>
>>> One problem is that it is not possible to set the property for the
>>> new nodes I create (no 'Aspect' entry in the 'New Child' menu for
>>> Actions); only in the conf editor I can add new Property, but it is
>>> not possible to type in the Id and the Value.
>>
>> If there's none yet and" "multiple" is at true in the Aspect
>> definition, there should be a "New child" entry. Weird ? Works for me,
>> but maybe I'll have to try that again on a fresh install...
>>
>> NB. The conf editor is mainly here to help design Aspects, not
>> instanciate them.
>>
>>> Is it possible to have a simpler property view i.e. only property
>>> name and value according to the column titles (so one row per
>>> property), and how to make it work so that this property appears
>>> automatically for all created model elements ?
>>
>> As said above, either you're an EMF UI guru and you'll hack our
>> "PropertyTabbedPropertySheetPage", or you'll design your own Aspect
>> EMF and SWT UI in its own plugin.
>>
>>>
>>> Another problem is that the 'Custom Properties' tab is not refreshed
>>> when the selection changes. It keeps the values of the previously
>>> selected object.
>>
>> Again, works for me, I'll have to try it on a fresh install. Events
>> are handled in the AspectEventManager
>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/event/ AspectEventManager.java?root=Technology_Project&view=mar kup
>>
>> you could try putting a breakpoint there.
>>
>>>
>>> Thanks a lot for your help,
>>> Benjamin Isnard
>>> Sysfera <www.sysfera.com>
>>>
>>
>
>
Re: pb using aspects example [message #532990 is a reply to message #529172] Tue, 11 May 2010 14:51 Go to previous message
Marc Dutoo is currently offline Marc Dutoo
Messages: 71
Registered: July 2009
Member
Hi Benjamin

Following our discussion, it appears that JWT 0.7 (and possibly 0.6) was
not packaged with all aspect features, which explains why you couldn't
do a right click > New child aspect in your JWT installation, while I'm
able to do it using the JWT codebase.

Please find details, solution and workarounds at
https://bugs.eclipse.org/bugs/show_bug.cgi?id=312485

Regards,
Marc

Marc Dutoo a écrit :
> Hi Benjamin
>
> Benjamin Isnard a écrit :
>> Hi Marc,
>>
>> Thanks a lot for your long answer :)
>> I got the fact that it would be better in my situation to use custom
>> EMF Aspect Model and am working on it.
>> Still some issues/questions about the examples... and the answers to
>> your questions are in the text below.
>> - About the logging example: it works well! :) Just one question: the
>> user who creates a new workflow must activate the profile and the
>> aspect manually. Is there a way to activate a profile by default for
>> all workflows?
>
> Relieved am I about the Logging sample :)
>
> In order to activate a profile "by default", there are workarounds :
> * either propose to your users a workflow template that has this
> profile activated, see
> http://wiki.eclipse.org/JWT_NewNoteworthy_0_6#Workflow_templ ates
> * or develop a new "New [custom] workflow" action and plug it in the
> action bar using plugin.xml
> * if you've got ideas on how it would work, I could even help you
> making the last one flexible and configurable, so it could be used by
> other people for their own profiles by only configuring the plugin.xml .
>
>>
>> - About the dynamic aspect example: What is the difference with
>> static? I tried to make the example plugin work but nothing appears in
>> the 'Custom Properties' tab (for an Action object), after activating
>> the profile/aspect in the 'Manage Workflow Profiles' sheet. I tried to
>> modify the registereddynamicaspect.conf file (in the plugin) by adding
>> to the aspect element the following attributes: autocreated="true"
>> multiple="true". But this didn't change anything. I still don' have
>> the 'New child' entry for aspects when right-clicking on an action.
>
> "Dynamic" custom aspects are an attempt to use "dynamic" EMF, i.e. that
> is loaded by EMF's generic, reflective API rather than by
> genmodel-generated java code. Its benefits are that it doesn't require
> genmodel-configured generation, but to be really useful it would have to
> make the other plugin stuff easier, for instance by generating a
> plugin.xml...
>
>>
>> - About the static aspect example: some errors at startup:
>> "The activator
>> org.eclipse.jwt.sample.staticaspect.provider.StaticaspectEdi
>> tPlugin$Implementation for bundle
>> org.eclipse.jwt.sample.staticaspect.edit is invalid"
>> "Section org.eclipse.jwt.sample.staticaspect.edit declares
>> non-existing filter or section class."
>> "Plug-in org.eclipse.jwt.sample.staticaspect.edit was unable to load
>> class org.eclipse.jwt.we.modelext.editors.properties.tabbedPage.Sa
>> mpleStaticAspectPropertySection. "
>
> I guess we didn't test it on 0.7.0 . But if LoggingAspect works you
> won't miss it. I'll open a bug though.
>
>>
>> - About making my own property sheet: if I understood well I should
>> extend class AbstractSingleStaticAspectPropertySection by overriding
>> createControls(..) to change the way my aspect is displayed (eg I want
>> only its name and value). It seems to me I should replace the creation
>> of a ModelPropertySourceProvider object by another one. Is it a good
>> option?
>
> Yep, even further, replace it by a custom wrapper. In order to do that,
> either extend it to customize it, or replace it by your own
> PropertySourceProvider implementation that follows the Wrapper pattern
> and calls ModelPropertySourceProvider for its implementation, except
> where you want it customized.
>
>>
>> Best regards,
>> Benjamin
>
> Best regards also, and good luck,
> Marc
>
>
>>
>> Marc Dutoo wrote:
>>> Hello Benjamin
>>>
>>> That's a long email :)
>>>
>>> See notes in your text below.
>>>
>>> & Could you provide us with your model ? Maybe we'd be able to better
>>> help you.
>>
>> the model I am using is targeted at scientific applications (it
>> derives from a research project:
>> http://gwendia.polytech.unice.fr/doku.php). It uses data flows instead
>> of control flows therefore has many differences with the one used in
>> JWT. For ex. data flows are modeled by links connecting activity
>> (actions) data ports. Each input or output port is typed and has got
>> an additional integer attribute that represents the depth of the data
>> tree (nested arrays of data) that is either produced or used by the port.
>> The data link can be represented in JWT using data items and two
>> reference links, one from the source action, one to the destination;
>> but I don't know yet where to store the integer as there is no concept
>> of port. If an attribute could be added to a reference link that could
>> work.
>>>
>>> Again, I'd advise you to send your requests also to the JWT mailing
>>> list at mailto:jwt-dev@eclipse.org .
>> OK I'll copy it there.
>>>
>>> Good luck !
>>>
>>> Regards,
>>> Marc
>>>
>>> Benjamin Isnard a écrit :
>>>> Hello,
>>>>
>>>> I have some difficulties trying to use the aspects extensions in
>>>> order to add custom properties to the workflow elements (I'd like to
>>>> add string properties to applications, guards, subprocesses and
>>>> references to Data). The doc explains there are different ways to
>>>> add metamodel extensions so I first tried the key-value option. If
>>>> another option is better for my purpose (see below) I'd be glad you
>>>> help me choose it.
>>>
>>> Another option would be designing your own EMF Aspect model (see
>>> http://wiki.eclipse.org/JWT_Metamodel_Extension#For_develope rs_:_developing_complex_additional_model_extensions_using_EM F-generated_code
>>> ). So you have to have more knowledge of EMF, and develop it as an
>>> Eclipse plugin on its own. It is required if you need to have a
>>> custom Property UI, or if you need your custom values to be complex,
>>> beyond what mere custom Properties allow, ex.
>>> * an arbitrarily complex EMF subtree
>>> * a Java Enumeration, which allows you to have a drop-down list of
>>> values in the editor. See the Loggin sample at
>>> http://wiki.eclipse.org/JWT_Metamodel_Extension#Logging_Aspe ct_sample
>>>
>>> Otherwise, if the value types allowed by custom Properties is enough,
>>> you don't need it.
>>>
>>> Usually, you can start using custom Properties since they require
>>> less EMF development, and then switch to designing a custom EMF
>>> Aspect model if custom Properties are not enough.
>>>
>>>> In the example 'activity_property_edited.workflow' of the
>>>> jwt-conf-property-model plugin, the _conf file contains 3 aspects
>>>> declarations where the 'Aspect Instance EType' value is either
>>>> EBoolean, EString or EInt; so it seems it corresponds to the
>>>> property's type. Conversely in the wiki page on Metamodel
>>>> extensions, in the paragraph 'Setting up simple (key-value)
>>>> additional model extensions' it is said the 'Aspect Instance Type'
>>>> of the property aspect should be 'property:Property'. Both seem to
>>>> work but this is a bit unclear.
>>>
>>> I agree there's not much information about it on the wiki, but it's
>>> rather implementation information, which is documented in the source
>>> code.
>>>
>>> How it works :
>>> * an Aspects is instanciated, according to its Aspect information
>>> (and especially by Aspect Instance EType), by its AspectFactory
>>> * AspectFactories are registered in the AspectFactoryRegistry
>>> through plugin.xml
>>> * for now there are two AspectFactories :
>>> * one that is used if the Aspect Instance EType is an EClass, that
>>> is able to instanciate EClasses. THAT is the one used for custom EMF
>>> Aspect models ! See
>>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/factor y/internal/?root=Technology_Project
>>>
>>> * one that is used if Aspect Instance EType is a primitive type
>>> i.e. EDataType (like EInt), that is able to instanciate EDataTypes -
>>> THAT is the one used by custom Properties ! See
>>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-property-model/src/org/eclipse/jwt/we/conf/aspec ts/factory/?root=Technology_Project
>>>
>>>
>>>>
>>>> When I test the example (using v0.7.0 of JWT), some properties
>>>> appear in the 'Custom Properties' tab of the properties view but not
>>>> the way I would wait for (property name on the left, value on the
>>>> right): in the left column I get 3 aspect attribute names (Id,
>>>> Target Model Element and Value) per aspect, and in the right column
>>>> the corresponding values of these attributes.
>>>
>>> What displays custom Properties in the Property view is the
>>> "PropertyTabbedPropertySheetPage" i.e. the custom Property specific
>>> property sheet, which is added in the jwt-we-conf-model plugin :
>>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model.we/plugin.xml?root=Technology_Project& view=markup
>>>
>>>
>>> Alas, this "PropertyTabbedPropertySheetPage" is a "hack" of some
>>> EMF.Edit code, so it does not display names on the left and values on
>>> the right, but lists all properties, each one their id (name),
>>> element and value in its own block. (name, value) would be better,
>>> but REALLY harder to do in a generic manner (for any kind of Aspect).
>>>
>>> I think it would be far easier for you to design a custom Aspect and
>>> write your own property sheet in SWT than make the existing one
>>> work... There's a sample showing how to do it :
>>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-plugins/jwt-we-sample-staticaspect/?root=Technology_P roject
>>>
>>>
>>> there are several ways, ex. you can base your Aspect Property Section
>>> on AbstractSingleStaticAspectPropertySection, and maybe hide the Id
>>> and Elements by adding a proxy PropertySource .
>>>
>>> I've added 2 screenshots at
>>> http://wiki.eclipse.org/JWT_Metamodel_Extension .
>>>
>>>> One problem is that it is not possible to set the property for the
>>>> new nodes I create (no 'Aspect' entry in the 'New Child' menu for
>>>> Actions); only in the conf editor I can add new Property, but it is
>>>> not possible to type in the Id and the Value.
>>>
>>> If there's none yet and" "multiple" is at true in the Aspect
>>> definition, there should be a "New child" entry. Weird ? Works for
>>> me, but maybe I'll have to try that again on a fresh install...
>>>
>>> NB. The conf editor is mainly here to help design Aspects, not
>>> instanciate them.
>>>
>>>> Is it possible to have a simpler property view i.e. only property
>>>> name and value according to the column titles (so one row per
>>>> property), and how to make it work so that this property appears
>>>> automatically for all created model elements ?
>>>
>>> As said above, either you're an EMF UI guru and you'll hack our
>>> "PropertyTabbedPropertySheetPage", or you'll design your own Aspect
>>> EMF and SWT UI in its own plugin.
>>>
>>>>
>>>> Another problem is that the 'Custom Properties' tab is not refreshed
>>>> when the selection changes. It keeps the values of the previously
>>>> selected object.
>>>
>>> Again, works for me, I'll have to try it on a fresh install. Events
>>> are handled in the AspectEventManager
>>> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jwt/we/ jwt-we-conf-model/src/org/eclipse/jwt/we/conf/aspects/event/ AspectEventManager.java?root=Technology_Project&view=mar kup
>>>
>>> you could try putting a breakpoint there.
>>>
>>>>
>>>> Thanks a lot for your help,
>>>> Benjamin Isnard
>>>> Sysfera <www.sysfera.com>
>>>>
>>>
>>
>>
Previous Topic:[Fwd: [jwt-dev] Re: newbie with editor problems]
Next Topic:Run a modified version of JWT
Goto Forum:
  


Current Time: Sat Aug 23 13:22:30 EDT 2014

Powered by FUDForum. Page generated in 0.01838 seconds