Hi, Dan for this summary. I agree with Cesar that Eclipse Papyrus can be of help for the initial use case. Just needing to know if it’s only a matter of configuring their profiles or primitive types definition to generate entities, properties, actions, etc. annotated with JDO and Isis annotations.
Thanks, Oscar > El 26 nov 2015, a las 11:01, Dan Haywood <[email protected]> > escribió: > > Just to pull this thread apart a little: > > - there are various tools candidates for Oscar's original use case, ie to > model class diagrams then forward generate into Java, thereafter ideally to > allow reverse engineering. Eclipse Papyrus looks promising for this > - for old-fashioned visualization of existing Java code, there is AgileJ. > I remember this product from a while back, nice to see it still going, and > a very reasonable price I think. > - I've raised ISIS-1267 for my idea of generating either the PlantUML class > diagrams from the Isis metamodel (for visualization thereafter using > Asciidoctor-diagram, or XTextPlantUML), or alternatively umlgraph.org's DSL > - I've raised ISIS-1268 for my idea of generating PlantUML sequence > diagrams by running integration tests. > > Thx > Dan > > https://issues.apache.org/jira/browse/ISIS-1267 > https://issues.apache.org/jira/browse/ISIS-1268 > > > > On 26 November 2015 at 00:04, Stephen Cameron <[email protected]> > wrote: > >> In terms of using UML for after the fact documentation, I like this >> UMLGraph approach: >> >> http://umlgraph.org >> >> On Tue, Nov 24, 2015 at 9:42 AM, Stephen Cameron < >> [email protected] >>> wrote: >> >>> >>> >>> On Tue, Nov 24, 2015 at 9:19 AM, Cesar Lugo <[email protected]> >>> wrote: >>> >>>> Hi Oscar, >>>> >>>> Reverse engineering worked for me just fine, also when you make changes >>>> to the code and update the UMl from it. When you have your UML >> repository >>>> open (diagram canvas open), the you select the java class or classes >> from >>>> Isis repo, click the java reverse button or select the right click - >> java - >>>> reverse option, and it will import the selected classes to the UML >>>> repository. From there you drag and drop the UML classes you want on the >>>> diagram canvas (from the UML repo to the Diagram canvas), and once on >> the >>>> diagram you select the class element and press F4 (or right click for >>>> contextual menu), so it let's you choose the properties and methods you >>>> want to be shown / hidden from the menu. When you make changes to the >> code, >>>> just do the same again and it will update the UML metadata, F4 again on >> the >>>> class and select the new properties or methods you want to be shown on >> the >>>> diagram. >>>> >>>> Hmm, definitely a "missing link" in my case as none of this worked, I >>> will watch the video. >>> >>> >>>> The issue I have found is that if the class contains a java.util.List, >> it >>>> won't import the whole class (typically repositories or menu classes). >>>> Haven't find the time to check why or solve that, but I can see in the >> UML >>>> repository a java element that contains a Java - Util - SortedSet, but >> not >>>> a Java - Util - List element. That might be the reason, just hopping >> there >>>> is a way to add the List to make it work too. >>>> >>>> Cesar. >>>> >>>> -----Original Message----- >>>> From: Óscar Bou - GOVERTIS [mailto:[email protected]] >>>> Sent: Monday, November 23, 2015 2:37 PM >>>> To: [email protected] >>>> Subject: Re: Thinking about re-introducing UML in our workflow >>>> >>>> H, Cesar. >>>> >>>> Thanks here also. >>>> >>>> I’ve seen the video, but need to find time to install and test it >> locally. >>>> >>>> Seems interesting for direct generation. >>>> No example is given for reverse-engineering. >>>> >>>> As I see, customizing for Apache Isis would be a matter of defining >>>> - a custom profile for Apache Isis (perhaps it would be enough with the >>>> Java one). >>>> - and an Apache-Isis specific Library (for generating the properties, >>>> actions, etc. with the proper annotations). >>>> >>>> It remembers me quite well the Spring Roo customization on SparxSystem’s >>>> Enterprise Arquitect. >>>> >>>> There I implemented also a custom toolbox, in order to avoid to first >>>> create the attribute and after that assign to the specific library item >>>> (instead of 2 different steps). >>>> >>>> Perhaps all that is also possible here. >>>> >>>> >>>> Thanks, >>>> >>>> Oscar >>>> >>>> >>>> >>>> >>>> >>>> >>>>> El 23 nov 2015, a las 21:18, Stephen Cameron < >>>> [email protected]> escribió: >>>>> >>>>> Thanks Cesar, I will give it a go, but don't have alot of time now >>>>> this week. They use myeclipse at work and its cheap to buy a licence, >>>>> so I'll find out why the activity diagrams are missing. >>>>> >>>>> I am also keen to take a closer look at IFML [1] in terms of it being >>>>> integated with the workflow addon in Apache-Isis. This is instead of >>>>> UML Activity diagrams. >>>>> >>>>> [1] http://www.ifml.org >>>>> >>>>> On Tue, Nov 24, 2015 at 3:00 AM, Cesar Lugo <[email protected] >>> >>>>> wrote: >>>>> >>>>>> Hi. I also tried Papyrus, it works but the installation is a little >>>>>> tricky. Best guidance I got was this YouTube video, which adds the >>>>>> "missing link" to make it work. It's actually a part of a quite nice >>>>>> series with Papyrus and UML tutorial videos. I hope that helps. >>>>>> >>>>>> https://www.youtube.com/watch?v=gmf8CswqKcs >>>>>> >>>>>> Cesar. >>>>>> >>>>>> -----Original Message----- >>>>>> From: Stephen Cameron [mailto:[email protected]] >>>>>> Sent: Monday, November 23, 2015 4:42 AM >>>>>> To: [email protected] >>>>>> Subject: Re: Thinking about re-introducing UML in our workflow >>>>>> >>>>>> Spent some time on this today, but did not get far. I tried Papyrus >>>>>> but without success, couldn't get it to reverse engineer my code that >>>>>> is. Then I tried myeclipse which does support UML2 and does reverse >>>>>> engineer Java code to UML class diagrams and also updates these >>>>>> diagrams from any (code) 'Model' changes afterwards. However the >>>>>> trial strangelly doesn't support Activity diagrams despite them being >>>>>> in the documentation. So all in all not time well spent. >>>>>> >>>>>> On Sat, Nov 21, 2015 at 9:31 AM, Stephen Cameron < >>>>>> [email protected] >>>>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Related to this thread, my new job involves maintenance of a Struts >>>>>>> 2 based website, in thinking about the best way to approach this >>>>>>> task, both to learn how it has been put together and potentially >>>>>>> make life easier into the future I thought the best place to start >>>>>>> is creating some diagrams, maybe even UML diagrams . >>>>>>> >>>>>>> Then I remembered something called AndroMDA [1] from my past reading >>>>>>> on UML/MDA, it has a 'cartridge' for generating a Struts >>>>>>> web-application off a UML class model [2]. Just reading the >>>>>>> documentation now, it can also make use of an UML Activity diagram >>>>>>> for designing page navigation[3], also, it consume a BPMN diagram as >>>>>>> a design model too (Hmm, just maybe this has more potential than I >>>>>> imagined). >>>>>>> >>>>>>> I'll have a play with this myself soon (It seems like a fun way to >>>>>>> learn about Struts and JBOSS), but thought in worth mentioning in >>>>>>> this discussion. If I was starting from scratch to build such a >>>>>>> 'public >>>>>> facing' >>>>>>> website, an approach that I can see working is to first develop an >>>>>>> Apache Isis based domain model in Java and get all the systems >>>>>>> integrations needed working with that. Then, to generate UML class >>>>>>> diagrams off that design, add in the page navigation design (UML >>>>>>> Activity diagram?), and use that combination to generate the >>>>>>> skeleton of a tradition request/response type website using >> AndroMDA. >>>>>>> >>>>>>> If this all worked, it would provide something very close to a >>>>>>> commercial MDA suite that I was interested in supporting called >>>>>>> WebRatio [4], for which the public website design [5] market seems >>>>>>> quite large. They talk about web-applications, but I like the Isis >>>>>>> coded model approach better for real applications (as opposed to >>>>>>> database back web-sites). For public facing web-sites, a templates >>>>>>> based approach does still seem to be valid, such as Struts/JSP, and >>>>>>> using a MDA probably a good way to manage that complexity. >>>>>>> >>>>>>> The WebRatio folk have designed a specific graphical web-site design >>>>>>> language called Interacton Flow Modelling Language (IFML) [6] (but >>>>>>> AndroMDA is UML focused). There is an open-source Eclipse plugin for >>>>>>> IFML that they have contributed to [7]. >>>>>>> >>>>>>> Interested to hear thoughts, maybe a dead-end, but maybe not. >>>>>>> >>>>>>> Cheers >>>>>>> >>>>>>> >>>>>>> [1] http://www.andromda.org/ >>>>>>> [2] >>>>>>> >> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart >>>>>>> ri >>>>>>> dge/index.html >>>>>>> [3] >>>>>>> >> http://www.andromda.org/andromda-cartridges/andromda-bpm4struts-cart >>>>>>> ri >>>>>>> dge/howto2.html >>>>>>> [4] http://www.webratio.com >>>>>>> [5] >>>>>>> http://www.webratio.com/site/content/en/web-application-development >>>>>>> [6] http://www.ifml.org/ >>>>>>> [7] http://ifml.github.io/ >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Nov 20, 2015 at 1:48 AM, Cesar Lugo >>>>>>> <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi. >>>>>>>> >>>>>>>> I just wanted to let you guys know that I have tried Papyro in >>>>>>>> eclipse. I have been able to reverse engineer java code and create >>>>>>>> UML Class Diagrams (supports most of the UML types of diagrams >>>>>>>> including use cases, state machine, activity and many more). I >>>>>>>> tried adding a property within a domain object class, then redo >>>>>>>> java engineer and it keeps my diagram and was able to include the >>>>>>>> new property. I haven't been able to do the opposite, adding a >>>>>>>> property within the UML and have it add it to the existing java >>>> class though. >>>>>>>> Adding a new UML class generates java code just fine. I haven’t >>>>>>>> been able to reverse engineer some repository classes, anything >>>>>>>> that uses java.util.List fails to be imported into the UML model, I >>>>>>>> haven't find the solution yet (sortedSet works fine). It doesn't >>>>>>>> automatically create the diagram (like other simpler tools do), but >>>>>>>> once you import your java code into the UML model, it's just a >>>>>>>> matter of drag and drop and into the diagram canvas and select >>>>>>>> which properties and operations (actions) you want to be shown, >>>>>>>> very convenient to exclude the obvious from the diagram, like >>>>>>>> getters and >>>>>> setters, maybe disableXxx / hideXxx / defaultxXX methods, your >> choice. >>>>>>>> >>>>>>>> I will keep working on it, looking good so far. >>>>>>>> >>>>>>>> Cesar. >>>>>>>> >>>>>>>> -----Original Message----- >>>>>>>> From: Óscar Bou - GOVERTIS [mailto:[email protected]] >>>>>>>> Sent: Monday, November 16, 2015 4:53 AM >>>>>>>> To: users >>>>>>>> Subject: Re: Thinking about re-introducing UML in our workflow >>>>>>>> >>>>>>>> >>>>>>>> For you to know. >>>>>>>> >>>>>>>> I was just reading about “AgileJ” [1] (the video at [2] is >> excellent. >>>>>>>> It perfectly summarizes the points-of-view expressed here about the >>>>>>>> evolution last years of UML usage in dev teams). >>>>>>>> >>>>>>>> But I’ve also found the Papyrus Eclipse project [3]. Seems to be >>>>>>>> really alive (there has been a conference this month). >>>>>>>> >>>>>>>> And It also seems to have full code synch from Java … See [4]. >>>>>>>> >>>>>>>> Any experience out there with Papyrus? >>>>>>>> Could it be a good match for Apache Isis? >>>>>>>> >>>>>>>> >>>>>>>> Cheers, >>>>>>>> >>>>>>>> Oscar >>>>>>>> >>>>>>>> >>>>>>>> [1] http://www.agilej.com >>>>>>>> [2] https://www.youtube.com/embed/hs9TYFsxkxE?autoplay=1&rel=0 >>>>>>>> [3] http://www.eclipse.org/papyrus/ [4] >>>>>>>> >> https://www.eclipsecon.org/europe2015/session/papyrus4java-uml-diag >>>>>>>> ra >>>>>>>> ms-ordinary-java-developers >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> El 16 nov 2015, a las 11:29, Óscar Bou - GOVERTIS >>>>>>>>> <[email protected]> >>>>>>>> escribió: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi all. >>>>>>>>> >>>>>>>>> First of all, the good news for all romantics: >>>>>>>>> >>>>>>>>> Together is still alive !!! See [1]. >>>>>>>>> >>>>>>>>> [2] says it fully supports Eclipse. >>>>>>>>> >>>>>>>>> Really interesting, Jeroen, introducing Lombok. >>>>>>>>> Look how clear and concise is the Aggregate in [3] expressed in >> C#. >>>>>>>>> >>>>>>>>> >>>>>>>>> For me, my immediate need is to have a visual depiction of the new >>>>>>>> features developers must work on. >>>>>>>>> So an Agile diagramming tool would be ok for it. >>>>>>>>> >>>>>>>>> I’m used to drag-n-drop like interfaces, and I'm there are >> “visual” >>>>>>>> tools out there that support plantuml, so it would be ok to be >>>>>>>> based on >>>>>> it. >>>>>>>>> >>>>>>>>> Also agree that the model "must be" the code (and not “the code is >>>>>>>>> the >>>>>>>> model” MDA approach, despite my experience with Bold for >>>>>>>> Delphi/Capable Objects was REALLY really good). >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> >>>>>>>>> Oscar >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> [1] >>>>>>>>> >> http://www.borland.com/en-GB/Products/Requirements-Management/Toge >>>>>>>>> t >>>>>>>>> her >>>>>>>>> [2[ >>>>>>>>> >> http://www.borland.com/en-GB/Products/Requirements-Management/Toge >>>>>>>>> t >>>>>>>>> her >>>>>>>>> /Plugins-and-integrations [3] >>>>>>>>> >> https://github.com/Lokad/lokad-cqrs/blob/master/SaaS.Domain/Aggreg >>>>>>>>> a >>>>>>>>> tes >>>>>>>>> /Register/RegistrationState.cs >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> El 16 nov 2015, a las 10:57, Mike Burton >>>>>>>>>> <[email protected]> >>>>>>>> escribió: >>>>>>>>>> >>>>>>>>>> Hi Jeroen, >>>>>>>>>> >>>>>>>>>> My experience is similar. I was always suspicious of the "code >>>>>>>> generation " approach, inevitably gives 2 "sources" that get out of >>>>>> step. >>>>>>>>>> >>>>>>>>>> The only good exception I saw was TogetherJ where "the code is >>>>>>>>>> the >>>>>>>> model" >>>>>>>>>> >>>>>>>>>> Best Regards >>>>>>>>>> >>>>>>>>>> Mike Burton >>>>>>>>>> (Sent from my iPhone) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> On 15 Nov 2015, at 23:44, Jeroen van der Wal >>>>>>>>>>> <[email protected]> >>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> All very interesting! >>>>>>>>>>> >>>>>>>>>>> Over the years I tried numerous modelling tools and only the >>>>>>>>>>> low-tech ones >>>>>>>>>>> stayed: drawing on a whiteboard, using coloured index cards [1] >>>>>>>>>>> (learned from Dan) or using a simple online tool like yUML [2]. >>>>>>>>>>> And I only use them to communicate the broad picture or for >>>>>>>>>>> explorative >>>>>>>> purposes. >>>>>>>>>>> >>>>>>>>>>> I gave up on code generators: I always ended up fighting the >>>>>>>>>>> generated code. And the impression that they support rapid >>>>>>>>>>> application development proved wrong: at the point where you had >>>>>>>>>>> to work on more advanced stuff velocity came to a halt. If an >>>>>>>>>>> application is built on lots of repeating code snippets then my >>>>>>>>>>> conclusion is that the underlying framework is not good enough. >>>>>>>>>>> >>>>>>>>>>> I love source code that tells the story of the application. >>>>>>>>>>> Where everything that could be left out of the code is >>>>>>>>>>> eliminated. Very DRY, convention over code. This has drawn me to >>>>>>>>>>> Naked Objects and made me decide to spend my time on Apache >> Isis. >>>>>>>>>>> >>>>>>>>>>> As you imagine by now I would not take the route from diagram to >>>>>>>>>>> code. For me the code editor is the sole canvas to express your >>>>>>>>>>> ideas. And I think that if we keep improving Apache Isis on a >>>>>>>>>>> few points there will never be a need for an additional tool: >>>>>>>>>>> >>>>>>>>>>> 1) Reduce boilerplate and make writing an application skeleton >>>>>>>>>>> as easy as the easiest modelling tool. This has the advantage >>>>>>>>>>> that a software architect can sketch the application and leave >>>>>>>>>>> it to his developers to fill in details. But everyone is working >>>>>>>>>>> on the same code base using the same tools. In this area we >>>>>>>>>>> started using Lombok. Also Dan had an idea to make it possible >>>>>>>>>>> to create your own custom annotations which can combine multiple >>>> annotations. >>>>>>>>>>> >>>>>>>>>>> 2) Visualise the meta model. With contributions and mixins the >>>>>>>>>>> application logic can come from anywhere. This is >>>>>>>>>>> architecturally sane but makes an application hard to grasp. It >>>>>>>>>>> would love to see a maven plugin that generates appealing >>>>>>>>>>> documentation from the meta model of an Isis application. >>>>>>>>>>> >>>>>>>>>>> 3) When taking the visualisation concept a bit further it would >>>>>>>>>>> be very powerful to explore and navigate the meta model within >>>>>>>>>>> the >>>>>> IDE. >>>>>>>>>>> Any plugin developers here? >>>>>>>>>>> >>>>>>>>>>> That's just my two cents. >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> >>>>>>>>>>> Jeroen >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> On 15 November 2015 at 21:01, David Tildesley >>>>>>>>>>>> <[email protected]> >>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Sunday, 15 November 2015 5:37 AM, Dan Haywood < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>> Thanks for this James. >>>>>>>>>>>> >>>>>>>>>>>>> My observation re: using the (relational) data model as the >>>>>>>>>>>>> initial input though is that this is likely to lead to rather >>>>>>>>>>>>> coupled code, ultimately not maintainable. >>>>>>>>>>>> >>>>>>>>>>>> Couldn't agree more. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> So, while going from the database up to the domain is fine for >>>>>>>>>>>>> a single module of 10 or so entities, any app that is bigger >>>>>>>>>>>>> than this really >>>>>>>>>>>> should >>>>>>>>>>>>> be modelled from the domain down to the database. >>>>>>>>>>>> >>>>>>>>>>>> Quite right. Any business app that is non trivial should be >>>>>>>>>>>> domain modelled. >>>>>>>>>>>> >>>>>>>>>>>> David. >>>>>>>>>>>> >>>>>>>>>>>>> Dan >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> On 14 November 2015 at 15:00, James Agada >>>>>>>>>>>>> <[email protected]> >>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> I actually tested out using Telosys to generate an isis app >>>>>>>>>>>>> from database definition. It did work but of course it meant i >>>>>>>>>>>>> did the ER first. I used MySQL, did the ER modelling on the >>>>>>>>>>>>> workbench, forward engineered into the database and then used >>>>>>>>>>>>> telosys scripts to generate a functional Isis application. Did >>>>>>>>>>>>> it as a PoC but we >>>>>>>> will come back to it later. >>>>>>>>>>>>> James Agada >>>>>>>>>>>>> Chief Technology Officer >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 14 Nov 2015, at 3:49 PM, Óscar Bou - GOVERTIS >>>>>>>>>>>>> <[email protected]> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Many thanks, Stephen for this detailed explanation. >>>>>>>>>>>>> >>>>>>>>>>>>> The problem I’m facing is that I intent to communicate the >>>>>>>>>>>>> developers what’s the model to implement. >>>>>>>>>>>>> >>>>>>>>>>>>> And I usually don’t find big mistakes in action code, but what >>>>>>>>>>>>> mostly forces us to refactor is miscommunication regarding the >>>>>>>>>>>>> Domain Entities, attributes and actions names, including typos >>>>>>>>>>>>> (think my team speak >>>>>>>>>>>> Spanish >>>>>>>>>>>>> but they’re modeling in English) or wrong or missing >>>>>>>>>>>>> relationships >>>>>>>>>>>> between >>>>>>>>>>>>> those entities. >>>>>>>>>>>>> >>>>>>>>>>>>> All that could be avoided by firstly agree in a common UML >>>>>>>>>>>>> Class >>>>>>>> Diagram. >>>>>>>>>>>>> >>>>>>>>>>>>> If it can potentially generate automatically the Java skeleton >>>>>>>>>>>>> with >>>>>>>>>>>> Apache >>>>>>>>>>>>> Isis annotations is a big plus, as it will avoid mistakes when >>>>>>>>>>>>> moving >>>>>>>>>>>> from >>>>>>>>>>>>> design to implementation. >>>>>>>>>>>>> >>>>>>>>>>>>> And if it could potentially reverse engineer Java (incl. >>>>>>>>>>>>> Apache Isis >>>>>>>>>>>>> idioms) a really good feature. >>>>>>>>>>>>> >>>>>>>>>>>>> Any ideas about what tools could best adapt to the workflow >>>>>>>>>>>>> (that could >>>>>>>>>>>> be >>>>>>>>>>>>> potentially customized to cover the last 2 whishes) ? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Oscar >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> El 14 nov 2015, a las 2:03, Stephen Cameron >>>>>>>>>>>>> <[email protected]> >>>>>>>>>>>>> escribió: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Oscar, >>>>>>>>>>>>> >>>>>>>>>>>>> In a qualified way I think your idea has merit. I have never >>>>>>>>>>>>> used UML for design, but a few years ago I decided to take a >>>>>>>>>>>>> good look at it and see >>>>>>>>>>>> it >>>>>>>>>>>>> if was useful. The idea of being able to draw a diagram and >>>>>>>>>>>>> generate code from it seemed sensible, after all that is what >>>>>>>>>>>>> is done by most other 'design' professions, such as building >>>>>>>> architects and engineers. >>>>>>>>>>>>> >>>>>>>>>>>>> To cut a long story short I realised after some reading that >>>>>>>>>>>>> it was not that simple, and that OO languages themselves are >>>>>>>>>>>>> really all that are needed for the process of designing a >>>>>>>>>>>>> system. This is "the code is the design" school of thought, >>>>>>>>>>>>> mainly attributed to >>>>>>>> Jack Reeves [1]. >>>>>>>>>>>>> >>>>>>>>>>>>> I found that keeping code and UML diagrams in sync in a >>>>>>>>>>>>> top-down 'UML to code' design process will always be >>>>>>>>>>>>> problematic (maybe why there are apparently no open-source >>>>>>>>>>>>> tools >>>>>> that claim to do this). >>>>>>>>>>>>> Then I read about Domain Driven Design which seemed to agree >>>>>>>>>>>>> with this premise, and from there found Apache Isis via Dan's >>>>>> book. >>>>>>>>>>>>> >>>>>>>>>>>>> So now for me UML class diagrams do have an after the fact use >>>>>>>>>>>>> for documentation purposes and if a solution implement was >>>>>>>>>>>>> capable of that reverse generation of diagrams from code it >>>>>>>>>>>>> would be a good thing to >>>>>>>>>>>> have. >>>>>>>>>>>>> Entity Framework can do this, its their "code first" approach. >>>>>>>>>>>>> >>>>>>>>>>>>> Given that the-code-is-the-design is true, I think that UML >>>>>>>>>>>>> class >>>>>>>>>>>> diagrams >>>>>>>>>>>>> real main value is as a data model, the question then is why >>>>>>>>>>>>> not use a purely data-modeling tool and generate Java classes >>>>>>>>>>>>> off >>>>>> it. >>>>>>>>>>>>> Then the diagrams 'designed' could have a usefulness to >>>>>>>>>>>>> programmers and to system users, something like those created >>>>>>>> SchemaSpy [2] for example. >>>>>>>>>>>>> >>>>>>>>>>>>> There are already useful and free Java class generation >>>>>>>>>>>>> (binding) tools from off data-models, of one sort or another, >>>>>>>>>>>>> such as JAXB, >>>>>>>> DataNucleus' >>>>>>>>>>>>> schemaGen[3], even CAM [4]. >>>>>>>>>>>>> >>>>>>>>>>>>> Here is my vision of what I think would be really useful: to >>>>>>>>>>>>> have a >>>>>>>>>>>> design >>>>>>>>>>>>> tool that can be used by non-programmers to create a simple >>>>>>>>>>>>> data-model, >>>>>>>>>>>> and >>>>>>>>>>>>> then to have that create a working Apache Isis based CRUD >>>> system. >>>>>>>>>>>>> This could serve your purpose (I guess) and also find a wider >>>> use. >>>>>>>>>>>>> >>>>>>>>>>>>> The means of achieving this would I think, require something >>>>>>>>>>>>> like the "dynamic classes" in available in the Moxy framework >>>>>>>>>>>>> [5], that is, map based so that no Java class compilation is >>>>>> needed. >>>>>>>>>>>>> Instead, a data-model configuration file (a schema) is read-in >>>>>>>>>>>>> to configure the system. This is not a strange idea, in fact >>>>>>>>>>>>> its the data-driven programming paradigm that is the basis of >>>>>>>>>>>>> the original browser concept (before it was turned into >>>>>>>>>>>> OO >>>>>>>>>>>>> application framework via addition of Javascript). In the >>>>>>>>>>>>> browser the >>>>>>>>>>>> data >>>>>>>>>>>>> is HTML that is turned into an in-memory Document Object Model >>>>>>>>>>>>> (DOM) for rendering. >>>>>>>>>>>>> >>>>>>>>>>>>> As a blended solution between Apache Isis as it is currently >>>>>>>>>>>>> (heavily influence by naked objects, an OO modelling based >>>>>>>>>>>>> approach for creating custom *behavioural* applications) and >>>>>>>>>>>>> this additional mainly data >>>>>>>>>>>> focused >>>>>>>>>>>>> approach, I think a programmer developing a business >>>>>>>>>>>>> application would start off with these dymanic classes and >>>>>>>>>>>>> then in time 'harden' the design by generating and compiling >>>>>>>>>>>>> real Java classes from off the model. [A non-programmer >>>>>>>>>>>>> wouldn't get past the first design 'phase' usually, but still >>>>>>>>>>>>> end up with a useable UI.] >>>>>>>>>>>>> >>>>>>>>>>>>> In addition, by having separate abstract model-generated >>>>>>>>>>>>> classes, that >>>>>>>>>>>> can >>>>>>>>>>>>> be overwritten if the data-model changes, and concrete >>>>>>>>>>>>> implementation classes, where you put all your behavioural >>>>>>>>>>>>> code and that are never overwritten, you get close to the >>>>>>>>>>>>> 'round-tripping' that would seem to me >>>>>>>>>>>> to >>>>>>>>>>>>> be the only valid way to use UML *for design*. I think this is >>>>>>>>>>>>> how the Eclipse Ecore models work, that there are model >>>>>>>>>>>>> classes and >>>>>>>>>>>> implementation >>>>>>>>>>>>> classes that extend the model classes. The IDE will often warn >>>>>>>>>>>>> you when these two sub-models have inconsistencies. This >>>>>>>>>>>>> duality also offers an alternative means to achieving the >>>>>>>>>>>>> goals of Lombok it >>>>>>>> would seem. >>>>>>>>>>>>> >>>>>>>>>>>>> Of course, sitting in the middle of all this is a meta-model, >>>>>>>>>>>>> that >>>>>>>>>>>> creates >>>>>>>>>>>>> the dynamic classes, generates and compiles the 'hardened' >>>>>>>>>>>>> model classes (when used) and maps either of these means to a >>>>>>>>>>>>> UI >>>>>> 'viewer'. >>>>>>>>>>>>> >>>>>>>>>>>>> For such data-management frameworks, the complicated aspect >>>>>>>>>>>>> isn't so much going from the designed data-model to Java, >>>>>>>>>>>>> there are lots of examples of that, instead its being able to >>>>>>>>>>>>> have also, a dynamic query capability. So that a person >>>>>>>>>>>>> unfamiliar with the dataset, can, via its data-model, start >>>>>>>>>>>>> querying it (and also maybe integrating it in real-time with >>>>>>>>>>>>> other online resources, the >>>>>>>> idea of a data-browser appeals!). >>>>>>>>>>>>> >>>>>>>>>>>>> In the science domain, where I worked for a few years building >>>>>>>>>>>>> data-management infrastructure, there are highly advanced >>>>>>>>>>>>> systems for online data access and querying e.g. [6], but at >>>>>>>>>>>>> the same time a common tool used for small databases is still >>>>>> Microsoft Access. >>>>>>>>>>>>> Access has many strengths as a desktop database, including >>>>>>>>>>>>> form generation and also >>>>>>>>>>>> dynamic >>>>>>>>>>>>> query-by-form, but the problems arise when you want to make >>>>>>>>>>>>> such data publicly available, in the sense of being findable >>>>>>>>>>>>> and searchable in real time. You might as well have used a >>>>>>>>>>>>> web-based system from the start and then been able to easily >>>>>>>>>>>>> open it to the >>>>>>>> world at the appropriate time. >>>>>>>>>>>>> >>>>>>>>>>>>> Having though about this problem for a number of years and >>>>>>>>>>>>> spent alot of time working on a XForms based solution as well. >>>>>>>>>>>>> I'd be very interested >>>>>>>>>>>> to >>>>>>>>>>>>> see Apache Isis broaden its scope to offer what I have >>>>>>>>>>>>> described, in fact its doesn't seem to need very much more >>>>>>>>>>>>> than what is already present in >>>>>>>>>>>> the >>>>>>>>>>>>> Isis meta-model and Wicket viewer. The Restful objects support >>>>>>>>>>>>> already provides a generic 'generated' web programming >>>> interface. >>>>>>>>>>>>> >>>>>>>>>>>>> In summary I know that there are some Java projects that make >>>>>>>>>>>>> very effective use of a Model Driven Architecture approach >>>>>>>>>>>>> (e.g [7]), but I am now not sure that UML is the >>>>>>>>>>>>> 'be-all-and-end-all' basis of >>>>>>>> that. >>>>>>>>>>>> Actually I >>>>>>>>>>>>> think that data-models are the basis of most of MDAs >>>>>>>>>>>>> efficiency dividends and that there are other approaches, >>>>>>>>>>>>> specifically that conceptual models offer more versatility in >>>>>>>>>>>>> terms of who and how >>>>>>>> you can make use of them. >>>>>>>>>>>>> This thinking goes way back, such as Sowa's Conceptual Graphs >>>>>>>>>>>>> [8] and >>>>>>>>>>>> even >>>>>>>>>>>>> to Codd [9]. A modern expression of Sowa's thoughts (I gather) >>>>>>>>>>>>> is the W3C semantic web, but he was thinking of database >>>>>>>>>>>>> design and >>>>>>>> query way back. >>>>>>>>>>>>> >>>>>>>>>>>>> Apart from some additions to Isis, another interesting aspect >>>>>>>>>>>>> is looking >>>>>>>>>>>> at >>>>>>>>>>>>> the mapping to data-stores, using a graph database of one sort >>>>>>>>>>>>> or another to avoid the complexity of ORM is a simple answer >>>>>>>>>>>>> to that I feel. Again, the hardening of a design might mean >>>>>>>>>>>>> manually adding a few overrides of default ORM mapping rules >>>>>>>>>>>>> into some behavioural-model classes, that >>>>>>>>>>>> extend >>>>>>>>>>>>> generated data-model classes (getters and setters only). >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> [1] >> http://www.developerdotstar.com/mag/articles/reeves_design_ >>>>>>>>>>>>> m >>>>>>>>>>>>> ain >>>>>>>>>>>>> .html >>>>>>>>>>>>> [2]http://schemaspy.sourceforge.net/sample/relationships.html >>>>>>>>>>>>> [3] >>>>>>>>>>>> >> http://www.datanucleus.org/products/accessplatform_2_1/rdbms/sc >>>>>>>>>>>> h >>>>>>>>>>>> ema >>>>>>>>>>>> tool.html >>>>>>>>>>>>> [4] >> http://camprocessor.sourceforge.net/wiki/index.php/Main_Pag >>>>>>>>>>>>> e >>>>>>>>>>>>> [5]https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic >>>>>>>>>>>>> [6]http://www.opendap.org/ >>>>>>>>>>>>> [7]http://www.opencrx.org/ >>>>>>>>>>>>> [8]https://en.wikipedia.org/wiki/Conceptual_graph >>>>>>>>>>>>> [9]https://en.wikipedia.org/wiki/Relational_Model/Tasmania >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Nov 13, 2015 at 8:45 PM, Óscar Bou - GOVERTIS < >>>>>>>>>>>> [email protected]> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi all. >>>>>>>>>>>>> >>>>>>>>>>>>> I’m considering re-introducing UML Class diagrams in our >>>>>>>>>>>>> workflow mainly >>>>>>>>>>>>> for: >>>>>>>>>>>>> - graphically design the domain entities. >>>>>>>>>>>>> - modeling relationships. >>>>>>>>>>>>> - agree with names of properties, collections and actions >>>> needed. >>>>>>>>>>>>> >>>>>>>>>>>>> It would be wonderful if the UML solution could also be >>>>>>>>>>>>> “integrated” with Apache Isis or Java, automating at least the >>>>>>>>>>>>> entities Java skeleton generation. >>>>>>>>>>>>> >>>>>>>>>>>>> I’ve worked extensively with Rational Rose and Sparx >>>>>>>>>>>>> EnterpriseArchitect, but was thinking about an Eclipse-based >>>>>>>> solution that could “potentially” >>>>>>>>>>>>> be adapted to generate the Java entities with Isis >> annotations. >>>>>>>>>>>>> >>>>>>>>>>>>> Before joining the Apache Isis community I developed [1] for >>>>>>>>>>>>> Enterprise Architect for automatically generating Spring >>>>>>>>>>>>> Roo-based classes, but Isis was better suited for our project >>>>>>>>>>>>> and I abandoned >>>>>>>> it. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Any ideas? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Oscar >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> [1] http://roomodeler.com >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> This email and any attachment thereto are confidential and >>>>>>>> priviledged. >>>>>>>>>>>> if >>>>>>>>>>>>> you have received it in error, please delete immediately and >>>>>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any >>>>>>>>>>>>> way use it. The information contained therein is for the >>>>>>>>>>>>> address only, if you reply on >>>>>>>>>>>> it, >>>>>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure >>>>>>>>>>>>> or error >>>>>>>>>>>> free, >>>>>>>>>>>>> the message and any attachment could be intercepted, >>>>>>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer >>>>>>>>>>>>> warehouse group and its >>>>>>>>>>>> divisions >>>>>>>>>>>>> do not accept liability for damage caused by this email or any >>>>>>>>>>>> attachment. >>>>>>>>>>>>> The message you tried to print is protected with Information >>>>>>>>>>>>> Rights Management. You don't have the necessary user rights to >>>>>>>>>>>>> print the >>>>>>>>>>>> message. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> This email and any attachment thereto are confidential and >>>>>>>> priviledged. >>>>>>>>>>>> if >>>>>>>>>>>>> you have received it in error, please delete immediately and >>>>>>>>>>>>> notify the sender. Do not disclose, copy, circulate or in any >>>>>>>>>>>>> way use it. The information contained therein is for the >>>>>>>>>>>>> address only, if you reply on >>>>>>>>>>>> it, >>>>>>>>>>>>> its at your own risk. Emails are not guaranteed to be secure >>>>>>>>>>>>> or error >>>>>>>>>>>> free, >>>>>>>>>>>>> the message and any attachment could be intercepted, >>>>>>>>>>>>> corrupted, lost, delayed, incomplete or ammended. Computer >>>>>>>>>>>>> warehouse group and its >>>>>>>>>>>> divisions >>>>>>>>>>>>> do not accept liability for damage caused by this email or any >>>>>>>>>>>> attachment. >>>>>>>>>>>>> The message you tried to print is protected with Information >>>>>>>>>>>>> Rights Management. You don't have the necessary user rights to >>>>>>>>>>>>> print the >>>>>>>>>>>> message. >>>>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> --- >>>>>>>> This email has been checked for viruses by Avast antivirus >> software. >>>>>>>> https://www.avast.com/antivirus >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> --- >>>>>> This email has been checked for viruses by Avast antivirus software. >>>>>> https://www.avast.com/antivirus >>>>>> >>>>>> >>>> >>>> >>>> >>>> --- >>>> This email has been checked for viruses by Avast antivirus software. >>>> https://www.avast.com/antivirus >>>> >>>> >>>> >>> >>
