Home » Modeling » EMF » [XCore] Can I reference a EAtribute of a Xcore model on another Xcore model (within the same package(Help with basic XCore. Referencing EAtributes from different xcore files)
[XCore] Can I reference a EAtribute of a Xcore model on another Xcore model (within the same package [message #1428983] |
Mon, 22 September 2014 16:33 |
João Bastos Messages: 9 Registered: September 2014 |
Junior Member |
|
|
I have a very simple question. Unfortunately I am very new to EMF, Ecore and Xcore. I started by using Ecore, however, since XCore was text based it was easier for me to work with it.
I made several simple models, but now I want to create a more complex model.
Lets say I want to create a model that defines a System. A System has a Plaform and Activities.
So, I though it would be best to model these two in different Xcore (maybe a mistake)
Now, my problem is:
I have an EClass Resource, within Platform.xcore, that has an attribute String name. I also have a EClass Transfer, within Acitivy.xcore.
Class Transfer
{
contains Resource source
contains Resource target
}
What I want to do know is:
derived String name get
{
source.name + "_" target.name
}
I know I am trying to insert Java code here, but I thought it would work. I get an error, logical, that says this field cannot be applied, there is no type of such in GenModel
I tried also
source.getName()
Error message: no defintion for getName()
I think this might be a stupid question. Maybe I should not have seperated the models. Is there a way of doing this?
OR if this is a simple question and there literature I can read, could you point me to it? I really can only find the wikipedia for XCore and it is not being enough.
|
|
|
Re: [XCore] Can I reference a EAtribute of a Xcore model on another Xcore model (within the same pac [message #1429028 is a reply to message #1428983] |
Mon, 22 September 2014 17:50 |
Ed Merks Messages: 33140 Registered: July 2009 |
Senior Member |
|
|
João,
Comments below.
On 22/09/2014 7:36 PM, João Bastos wrote:
> I have a very simple question. Unfortunately I am very new to EMF,
> Ecore and Xcore. I started by using Ecore, however, since XCore was
> text based it was easier for me to work with it.
Yes, the editing experience is quite a bit nicer...
>
> I made several simple models, but now I want to create a more complex
> model.
>
> Lets say I want to create a model that defines a System. A System has
> a Plaform and Activities.
>
> So, I though it would be best to model these two in different Xcore
> (maybe a mistake)
It's hard to say.
>
> Now, my problem is:
>
> I have an EClass Resource, within Platform.xcore, that has an
> attribute String name. I also have a EClass Transfer, within
> Acitivy.xcore.
>
> Class Transfer
> {
> contains Resource source
> contains Resource target
> }
> What I want to do know is:
>
> derived String name get
> {
> source.name + "_" target.name
> }
> I know I am trying to insert Java code here, but I thought it would work.
It seems sensible...
> I get an error, logical, that says this field cannot be applied, there
> is no type of such in GenModel
I need to see complete example to understand the errors; after all, in
the above you're missing a '+'...
>
> I tried also
>
> source.getName()
> Error message: no defintion for getName()
This is an error message in your *.xcore? Where are the *.xcore's
located? In the same project? Different projects? How are the
projects related (via MANIFEST.MF dependencies) if different?
>
> I think this might be a stupid question. Maybe I should not have
> seperated the models. Is there a way of doing this?
It even works to have two mutually referencing models, if they're in the
same project...
>
> OR if this is a simple question and there literature I can read, could
> you point me to it?
That's it.
> I really can only find the wikipedia for XCore and it is not being
> enough.
I can answer your questions, but you need to provide complete specific
details.
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: [XCore] Can I reference a EAtribute of a Xcore model on another Xcore model (within the same pac [message #1429553 is a reply to message #1429028] |
Tue, 23 September 2014 11:45 |
João Bastos Messages: 9 Registered: September 2014 |
Junior Member |
|
|
I apologize for the lack of information and the simple statement of the problem.
I have both .xcore files in the same package.
I have a resource.xcore which is something like this:
package project1.basic
class Resource
{
String name
int ID
contains Position[1..1] pos
}
And a application.xcore:
package project1.basic
class Transfer
{
String name
contains Resource source
contains Resource target
derived String name get
{
source.name + "_" + target.name
}
}
The error I am getting is the following:
(The error is on the application.xcore file and on the exact line of "source.name + "_" + target.name")
"Could not resolve reference to JvmIdentifiableElement "name""
If I try to do it via an operation, creating an op for Resource getResourceName(). The error is:
"Could not resolve reference method getResourceName()"
I am sorry to bother with this sort of errors, but I cannot find any information about it, I am also the only one in my group working with this.
I expect something like defining the methods public or private in Java,
but I don't know how to define this in Ecore language.
Can you please give me some insight?
Also can you direct me to some literature I can find on XCore or Ecore?
I have an EMF book, which does not help much with this.
Thank you in advance.
Joao Bastos
[Updated on: Tue, 23 September 2014 11:46] Report message to a moderator
|
|
|
Re: [XCore] Can I reference a EAtribute of a Xcore model on another Xcore model (within the same pac [message #1429569 is a reply to message #1429553] |
Tue, 23 September 2014 12:10 |
Ed Merks Messages: 33140 Registered: July 2009 |
Senior Member |
|
|
João,
If I have a file A.xcore containing this:
package project1.basic1
class Resource {
String name
int ID
contains Position[1..1] pos
}
class Position
{
}
And a file B.xcore containing this:
package project1.basic2
import project1.basic1.Resource
class Transfer
{
contains Resource source
contains Resource target
derived String name get
{
source.name + "_" + target.name
}
}
And they're both in the model folder of the same project, it all works
correctly.
So the basic problem with your example is that you can't have two
different *.xcore resources with the same package name, i.e., you can't
split a package across multiple files. You also can't have two features
named "name" in Transfer.
On 23/09/2014 1:45 PM, João Bastos wrote:
> I apologize for the lack of information and the simple statement of
> the problem.
>
> I have both .xcore files in the same package.
>
> I have a resource.xcore which is something like this:
>
> package project1.basic
>
> class Resource {
> String name
> int ID
> contains Position[1..1] pos
> }
>
>
> And a application.xcore:
>
>
> package project1.basic
>
> class Transfer
> {
> String name
> contains Resource source
> contains Resource target
> derived String name get
> {
> source.name + "_" + target.name
> }
> }
>
> The error I am getting is the following:
>
> "Could not resolve reference to JvmIdentifiableElement "name""
>
> If I try to do it via an operation, creating an op for Resource
> getResourceName(). The error is:
>
> "Could not resolve reference method getResourceName()"
>
>
> I am sorry to bother with this sort of errors, but I cannot find any
> information about it, I am also the only one in my group working with
> this.
> I expect something like defining the methods public or private in
> Java, but I don't know how to define this in Ecore language.
> Can you please give me some insight?
> Also can you direct me to some literature I can find on XCore or Ecore?
>
> I have an EMF book, which does not help much with this.
>
> Thank you in advance.
>
> Joao Bastos
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
| | |
Goto Forum:
Current Time: Tue Apr 23 09:47:13 GMT 2024
Powered by FUDForum. Page generated in 0.03073 seconds
|