Dan: Could not delete it. There are plenty of ramifications, scattered among many modules. IntelliJ says there are over 1k of them.
However based on what you said about the DOMAIN nature, i explored more, and confirmed there is no problem for it indeed works. I perceived ExportToWordMenu as being the one impeding the suppression. It was contributing with one menu item there in QuickObjectMenu. I then looked at its nature value, and was undefined (maybe using the default value). Then i defined it to DOMAIN and the issue was nicely fixed. Oscar: Thanks and sorry i am a newbie here. Could you elaborate a bit more, sort of sample code? 2017-02-15 14:42 GMT-04:00, Dan Haywood <[email protected]>: > Yes, this is actually how Estatio is currently structured [1]. We're not > certain if we're going to stick with it, but the original thinking was > similar to what you say. > > Cheers > > [1] > https://github.com/estatio/estatio/tree/master/estatioapp/app/src/main/java/org/estatio/app/menus > > > On Wed, 15 Feb 2017 at 18:20 Óscar Bou - GOVERTIS <[email protected]> > wrote: > >> >> You could define the "menu service", and other coordination services >> invoking domain actions that could be guided by the use cases / UI, in an >> "app" module, different from the "domain" one. >> >> My 2cts ... >> >> >> >> > El 15 feb 2017, a las 17:17, Dan Haywood <[email protected]> >> escribió: >> > >> > The pattern we suggest is two domain services, one being a repository >> > for >> > an entity - ie QuickObjectRepository - and the other a menu - ie >> > QuickObjectMenu. Not every entity will need a menu, and indeed it >> > might >> > make sense to have menus that provide access to multiple entities, eg a >> > "Reference Data" or "Admin" menu. In other words, the *Menu services >> > are >> > really just to organize the UI, while the *Repository services do the >> real >> > work. >> > >> > In this case, if you don't need a menu then just delete >> > QuickObjectsMenu. >> > It doesn't have any behaviour other than delegating to >> > QuickObjectRepository. >> > >> > You are correct that setting the nature=DOMAIN should suppress it from >> the >> > UI also; if that isn't the case, then please create a test example >> > application demonstrating the problem and push it to github. >> > >> > HTH >> > Dan >> > >> >> On Wed, 15 Feb 2017 at 14:54 L Eder <[email protected]> wrote: >> >> >> >> The code. Actually it is the one at quickstart sample: >> >> >> >> QuickObjectRepository: >> >> " >> >> @DomainService( >> >> nature = NatureOfService.DOMAIN, >> >> repositoryFor = QuickObject.class >> >> ) >> >> public class QuickObjectRepository { >> >> >> >> //region > listAll (programmatic) >> >> >> >> @Programmatic >> >> public List<QuickObject> listAll() { >> >> return container.allInstances(QuickObject.class); >> >> } >> >> //endregion >> >> >> >> //region > findByName (programmatic) >> >> >> >> @Programmatic >> >> public QuickObject findByName( >> >> final String name >> >> ) { >> >> return container.uniqueMatch( >> >> new QueryDefault<>( >> >> QuickObject.class, >> >> "findByName", >> >> "name", name)); >> >> } >> >> //endregion >> >> >> >> //region > findByNameContains (programmatic) >> >> >> >> @Programmatic >> >> public List<QuickObject> findByNameContains( >> >> final String name >> >> ) { >> >> return container.allMatches( >> >> new QueryDefault<>( >> >> QuickObject.class, >> >> "findByNameContains", >> >> "name", name)); >> >> } >> >> //endregion >> >> >> >> //region > create (programmatic) >> >> >> >> @Programmatic >> >> public QuickObject create(final String name) { >> >> final QuickObject obj = >> >> container.newTransientInstance(QuickObject.class); >> >> obj.setName(name); >> >> container.persistIfNotAlready(obj); >> >> return obj; >> >> } >> >> >> >> //endregion >> >> >> >> //region > findOrCreate (programmatic) >> >> >> >> @Programmatic >> >> public QuickObject findOrCreate( >> >> final String name >> >> ) { >> >> QuickObject quickObject = findByName(name); >> >> if(quickObject == null) { >> >> quickObject = create(name); >> >> } >> >> return quickObject; >> >> } >> >> //endregion >> >> >> >> >> >> //region > injected services >> >> >> >> @javax.inject.Inject >> >> DomainObjectContainer container; >> >> >> >> //endregion >> >> } >> >> " >> >> >> >> QuickObjectMenu: >> >> " >> >> @DomainService( >> >> nature = NatureOfService.VIEW_MENU_ONLY >> >> // nature = NatureOfService.DOMAIN >> >> ) >> >> @DomainServiceLayout( >> >> menuOrder = "700", >> >> named = "Quick Objects" >> >> ) >> >> public class QuickObjectMenu { >> >> >> >> //region > listAll (action) >> >> @Action( >> >> semantics = SemanticsOf.SAFE >> >> ) >> >> @ActionLayout( >> >> bookmarking = BookmarkPolicy.AS_ROOT >> >> ) >> >> @MemberOrder(sequence = "1") >> >> public List<QuickObject> listAll() { >> >> return quickObjectRepository.listAll(); >> >> } >> >> //endregion >> >> >> >> //region > findByName (action) >> >> @Action( >> >> semantics = SemanticsOf.SAFE >> >> ) >> >> @ActionLayout( >> >> bookmarking = BookmarkPolicy.AS_ROOT >> >> ) >> >> @MemberOrder(sequence = "2") >> >> public List<QuickObject> findByName( >> >> @ParameterLayout(named="Name") >> >> final String name >> >> ) { >> >> return quickObjectRepository.findByNameContains(name); >> >> } >> >> //endregion >> >> >> >> //region > create (action) >> >> public static class CreateDomainEvent extends >> >> ActionDomainEvent<QuickObjectMenu> { } >> >> >> >> @Action( >> >> domainEvent = CreateDomainEvent.class >> >> ) >> >> @MemberOrder(sequence = "3") >> >> public QuickObject create( >> >> @ParameterLayout(named="Name") >> >> final String name) { >> >> return quickObjectRepository.create(name); >> >> } >> >> >> >> //endregion >> >> >> >> //region > injected services >> >> >> >> @javax.inject.Inject >> >> QuickObjectRepository quickObjectRepository; >> >> >> >> //endregion >> >> } >> >> " >> >> >> >> >> >> >> >> 2017-02-15 10:35 GMT-04:00, Dan Haywood >> >> <[email protected]>: >> >>> Should be easy ... can you post the code of the domain service that >> >>> is >> >>> appearing as a menu that you want to suppress ? >> >>> >> >>> >> >>>> On Wed, 15 Feb 2017 at 14:23 L Eder <[email protected]> wrote: >> >>>> >> >>>> Hi Dan: >> >>>> >> >>>> I browsed the documentation for a way to hide a menu object but >> >>>> properties and actions. The closest thing found was >> >>>> @NotInServiceMenu. >> >>>> I tried some combinations, even using the NatureOfService enum, but >> >>>> no >> >>>> success so far. >> >>>> >> >>>> Idea is to omit, eg, prevent QuickObjects entity from being rendered >> >>>> in the menu bar. >> >>>> >> >>>> Thanks for you suggestion, Eder >> >>>> >> >>> >> >> >> >> >
