Y a t’il un guide qui documente comment démarrer simplement l’utilisateur de la Business Suite ?
Car après s’être connecté en admin, et avoir installé les applis voulues, je ne vois comment accéder à celle ci (par exemple Feuille de temps).
Même en me connectant avec un autre user (du groupe Users) je n’ai rien ??
L’outil semble puissant et convivial, mais j’ai un peu de mal à m’y retrouver dans la doc d’une installation classique et utilisation de la Business Suite en tant qu’admin et aussi user.
petite précision, vous avez bien les menus de navigation à droite (ou en haut) ? Si ce n’est pas le cas cliquer sur les 3 barres horizontales en haut à droite du logo pour faire apparaitre le menu.
En fait j’ai le même comportement sans être configuré sur LDAP. Je dois louper quelque chose …
C’est dommage l’appli semble ergonomique, mais avec Odoo je m’y retrouve plus rapidement.
en fait il semblerait que nous n’ayez aucune application d’activée. Néanmoins, même dans ce cas, vous devriez avec d’autres menus.
Allez dans Config…App… puis Apps et vérifier si les applications comme “base” sont installées. Si ce n’est pas le cas, cliquer sur le bouton “install”. Je suppose que cela a déjà été fait puisque vous spécifiez dans votre post " et avoir installé les applis voulues". Du coup si vos apps sont bien installées (bouton ‘uninstall’ présent) alors le problème vient d’ailleurs. Si tel est le cas pouvez-vous aller dans Administration / Modules et partager une capture de la liste des modules ?
En regardant les logs d’axelor, il y a des exceptions :
| java.lang.NullPointerException: Cannot invoke method isApp() on null object
| at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
| at org.codehaus.groovy.vmplugin.v7.IndyGuardsFiltersAndSignatures.invokeGroovyObjectInvoker(IndyGuardsFiltersAndSignatures.java:165)
| at script1547407066439608003786.run(script1547407066439608003786.groovy:1)
| at com.axelor.script.GroovyScriptHelper.eval(GroovyScriptHelper.java:137)
| at com.axelor.script.CompositeScriptHelper.eval(CompositeScriptHelper.java:77)
| at com.axelor.script.AbstractScriptHelper.eval(AbstractScriptHelper.java:84)
| at com.axelor.script.AbstractScriptHelper.test(AbstractScriptHelper.java:48)
| at com.axelor.meta.service.MetaService.test(MetaService.java:131)
| at com.axelor.meta.service.MetaService.canShow(MetaService.java:109)
| at com.axelor.meta.service.MetaService.canShow(MetaService.java:119)
| at com.axelor.meta.service.MetaService.filter(MetaService.java:156)
| at com.axelor.meta.service.MetaService.getMenus(MetaService.java:384)
| at com.axelor.web.service.ActionService.all(ActionService.java:59)
| at com.axelor.web.service.ActionService$$EnhancerByGuice$$727a49e4.CGLIB$all$3(<generated>)
| at com.axelor.web.service.ActionService$$EnhancerByGuice$$727a49e4$$FastClassByGuice$$ed29834f.invoke(<generated>)
| at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
| at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:76)
| at com.axelor.rpc.ResponseInterceptor.invoke(ResponseInterceptor.java:64)
| at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:77)
| at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:55)
| at com.axelor.web.service.ActionService$$EnhancerByGuice$$727a49e4.all(<generated>)
| at sun.reflect.GeneratedMethodAccessor366.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| at java.lang.reflect.Method.invoke(Method.java:498)
| at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
| at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:294)
| at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:248)
| at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:235)
| at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:398)
| at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:205)
| at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:228)
| at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
| at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
| at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:89)
| at com.axelor.db.tenants.AbstractTenantFilter.doFilter(AbstractTenantFilter.java:67)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at org.apache.shiro.guice.web.SimpleFilterChain.doFilter(SimpleFilterChain.java:44)
| at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
| at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
| at com.axelor.auth.AuthFilter.doFilterInternal(AuthFilter.java:78)
| at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
| at org.apache.shiro.guice.web.SimpleFilterChain.doFilter(SimpleFilterChain.java:41)
| at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
| at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
| at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
| at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
| at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
| at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
| at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.axelor.app.internal.AppFilter.doFilter(AppFilter.java:93)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:91)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.axelor.db.tenants.AbstractTenantFilter.doFilter(AbstractTenantFilter.java:67)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.axelor.web.servlet.CorsFilter.doFilter(CorsFilter.java:132)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)
| at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
| at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
| at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
| at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
| at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
| at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
| at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
| at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
| at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
| at java.lang.Thread.run(Thread.java:748)
| 2019-01-13 19:43:10.362 ERROR 114 --- [nio-8080-exec-6] com.axelor.script.CompositeScriptHelper : Script error: __config__.app.isApp('appraisal')
| java.lang.NullPointerException: Cannot invoke method isApp() on null object
| at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
| at org.codehaus.groovy.vmplugin.v7.IndyGuardsFiltersAndSignatures.invokeGroovyObjectInvoker(IndyGuardsFiltersAndSignatures.java:165)
| at script1547407066439608003786.run(script1547407066439608003786.groovy:1)
| at com.axelor.script.GroovyScriptHelper.eval(GroovyScriptHelper.java:137)
| at com.axelor.script.CompositeScriptHelper.eval(CompositeScriptHelper.java:77)
| at com.axelor.script.AbstractScriptHelper.eval(AbstractScriptHelper.java:84)
| at com.axelor.script.AbstractScriptHelper.test(AbstractScriptHelper.java:48)
| at com.axelor.meta.service.MetaService.test(MetaService.java:131)
| at com.axelor.meta.service.MetaService.canShow(MetaService.java:109)
| at com.axelor.meta.service.MetaService.canShow(MetaService.java:119)
| at com.axelor.meta.service.MetaService.canShow(MetaService.java:119)
| at com.axelor.meta.service.MetaService.filter(MetaService.java:156)
| at com.axelor.meta.service.MetaService.getMenus(MetaService.java:384)
| at com.axelor.web.service.ActionService.all(ActionService.java:59)
| at com.axelor.web.service.ActionService$$EnhancerByGuice$$727a49e4.CGLIB$all$3(<generated>)
| at com.axelor.web.service.ActionService$$EnhancerByGuice$$727a49e4$$FastClassByGuice$$ed29834f.invoke(<generated>)
| at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
| at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:76)
| at com.axelor.rpc.ResponseInterceptor.invoke(ResponseInterceptor.java:64)
| at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:77)
| at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:55)
| at com.axelor.web.service.ActionService$$EnhancerByGuice$$727a49e4.all(<generated>)
| at sun.reflect.GeneratedMethodAccessor366.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| at java.lang.reflect.Method.invoke(Method.java:498)
| at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
| at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:294)
| at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:248)
| at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:235)
| at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:398)
| at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:205)
| at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:228)
| at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
| at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
| at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:89)
| at com.axelor.db.tenants.AbstractTenantFilter.doFilter(AbstractTenantFilter.java:67)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at org.apache.shiro.guice.web.SimpleFilterChain.doFilter(SimpleFilterChain.java:44)
| at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
| at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
| at com.axelor.auth.AuthFilter.doFilterInternal(AuthFilter.java:78)
| at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
| at org.apache.shiro.guice.web.SimpleFilterChain.doFilter(SimpleFilterChain.java:41)
| at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
| at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
| at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
| at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
| at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
| at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
| at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.axelor.app.internal.AppFilter.doFilter(AppFilter.java:93)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:91)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.axelor.db.tenants.AbstractTenantFilter.doFilter(AbstractTenantFilter.java:67)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.axelor.web.servlet.CorsFilter.doFilter(CorsFilter.java:132)
| at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
| at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)
| at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
| at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
| at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
| at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
| at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
| at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
| at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
| at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
| at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
| at java.lang.Thread.run(Thread.java:748)
` ` `
Ceci explique cela.
Vérifiez que dans votre fichier application.properties vous avez bien une ligne context.app = com.axelor.apps.base.service.app.AppService et que celle-ci n’est pas en commentaire.
Une fois ajoutée/décommentée, redémarrer tomcat et cela devrait résoudre votre problème.
Cela marche mieux.
J’ai toujours quelques erreurs Error while accessing /var/lib/tomcat/temp/1547460812460-0/data-init/app/base_sequence.csv.
Un peu difficile vu que la doc n’est pas terrible.
Je n’ai vu aucune description des éléments pour applications.properties sur context.app
en fait cette ligne de config n’est précisée nulle part car elle ne doit pas être modifiée et normalement elle présente par défaut au même titre que context.appLogo
Si vous avez des erreurs d’accès il faut vérifier les droits d’accès au répertoire (le user qui execute tomcat doit avoir un accès en lecture/écriture) au répertpoire correspondant à {java.io.tmpdir}.
Si vous voulez un conseil:
créer un répertoire /var/lib/tomcat/axelor (mkdir /var/lib/tomcat/axelor)
donner les droits RW sur ce répertoire à l’utilisateur et au groupe tomcat
modifier votre fichier application.properties:
data.export.dir = /var/lib/tomcat/axelor/export
file.upload.dir = /var/lib/tomcat/axelor/upload
logging.path = /var/lib/tomcat/axelor/logs (si vous utiliser les logs custom)
Je vous conseille, après ces changements, de supprimer votre base de données et de relancer l’application car les fichiers (images, fichier, etc) sont stockés dans le répertoire file.upload.dir et si vous le changez l’application ne fonctionnera pas correctement. Ainsi, lors de la nouvelle installation tous les documents seront bien présents.
Pour info je fais fonctionner axelor avec le container axelor/aio-erp .
J’ai toujours une erreur pour l’accès à des fichiers dans /var/lib/tomcat/temp 2019-01-14 13:05:53.492 ERROR 114 --- [nio-8080-exec-2] com.axelor.data.csv.CSVImporter : Error while accessing /var/lib/tomcat/temp/1547471153297-0/data-init/app/base_sequence.csv.
J’ai l’impression qu’il y a des soucis de droits d’accès à /var/lib/tomcat/temp
Est ce nécessaire de le garder en persistence docker, ou ce n’est pas important ?
désolé mais je n’utilise pas docker et ne maîtrise pas le sujet
j’imagine que tomcat est bien lancé avec le user “tomcat” ? avez-vous vérifié les droits sur le dit répertoire (et parent) ?
Oui les droits sont bons.
En fait lorsque je me connecte sur le docker et que je parcours le dossier en question, le répertoire /var/lib/tomcat/temp/1547471153297-0/data-init est vide (pas de répertoire app )
Donc il y a bien un problème quelques part. J’ai vu que vous aviez la version 5.0.6 alors que la dernière est le 5.1.0. Il se peut que cette version comporte un bug.
en fait si vous importez les données de démo vous avez les pays. Rien de bien méchant, il vous suffit de les importer depuis les données de démo:
creer un fichier de config “country.xml” (utiliser le fichier base-config.xml dans abs-webapp\modules\abs\axelor-base\src\main\resources\demo\base_config.xml et ne laisser que le traitement <input file="base_country.csv"...
aller dans Application Config / Technical Maintenance / Import
Créer un nouvel import:
dans “binding file” mettez le fichier xml que vous venez de créer
dans “data file” mettez le fichier abs-webapp\modules\abs\axelor-base\src\main\resources\demo\en\base_country.csv
Cliquer sur importer.
Vous pouvez faire ceci pour n’importe quelle donnée de démo tout en respectant bien sûr les dépendances
N’y a t’il pas un pack (hors démo) de démarrage, pour une PME, avec les données intégrant Pays, devise, etc … MAIS PAS de projets, ni employés, … Juste les données de base “classiques”, qui sont communes à tous, sans devoir se les faire à la main ?