たちまち。

即席で役に立つこと。

統一インターフェイスのDynamics365で「フロー」ボタンが表示されない(ワークフローの実行ができない)

これまでビューの一覧画面にてレコードを選択し、「ワークフローの実行」というメニューを利用していたが、統一インターフェイスになってからリボンメニューからそのボタンがなくなってしまった。

統一インターフェイスでは新しく「フロー」というボタンから利用する事になるのだが、そのボタンを表示するには以下の設定が必要。

1. システム設定でMicrosoft Flowを有効にする

設定>管理から、「システムの設定」を開く。

f:id:aposke:20201022115344p:plain

「カスタマイズ」タブに「Microsoft Flowを有効にする」という項目があるので、これを「はい」にする。

f:id:aposke:20201022115356p:plain

2. セキュリティロールの権限を付与する

セキュリティロールの設定を開き、「カスタマイズ」タブのその他の特権にある「フローの実行」を許可する。

f:id:aposke:20201022115406p:plain

以上でリボンメニューにフローが表示されるようになった。

iAPでとある画面にアクセスするとimui.tldのNullPointerExceptionが出る

以下のようなエラーが出る。

[ERROR] e.http-500 - [] jar:file:/usr/local/resin/webapps/imart/WEB-INF/lib/im_ui_impl-8.0.11-main.jar!/META-INF/tld/imui/imui.tld:18: com.caucho.jsp.cfg.TldTag.addAttribute(): java.lang.NullPointerException

16:     <body-content>JSP</body-content>
17:     <dynamic-attributes>true</dynamic-attributes>
18:     <attribute>
19:       <name>active</name>
20:       <required>false</required>

com.caucho.jsp.JspLineParseException: jar:file:/usr/local/resin/webapps/imart/WEB-INF/lib/im_ui_impl-8.0.11-main.jar!/META-INF/tld/imui/imui.tld:18: com.caucho.jsp.cfg.TldTag.addAttribute(): java.lang.NullPointerException

16:     <body-content>JSP</body-content>
17:     <dynamic-attributes>true</dynamic-attributes>
18:     <attribute>
19:       <name>active</name>
20:       <required>false</required>

    at com.caucho.jsp.JspParseException.create(JspParseException.java:68) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TaglibManager.readTaglib(TaglibManager.java:260) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TaglibManager.getTaglib(TaglibManager.java:170) ~[resin.jar:4.0.47]
    at com.caucho.jsp.ParseTagManager.addTaglib(ParseTagManager.java:264) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.processTaglib(JspParser.java:1778) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.processTaglibDirective(JspParser.java:1752) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseDirective(JspParser.java:1254) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseScriptlet(JspParser.java:1126) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseNode(JspParser.java:484) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseJsp(JspParser.java:384) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parse(JspParser.java:266) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspCompilerInstance.parse(JspCompilerInstance.java:559) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspCompilerInstance.generate(JspCompilerInstance.java:495) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspCompilerInstance.compile(JspCompilerInstance.java:405) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspManager.compile(JspManager.java:284) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspManager.createPage(JspManager.java:190) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspManager.createPage(JspManager.java:171) ~[resin.jar:4.0.47]
    at com.caucho.jsp.PageManager.getPageEntry(PageManager.java:366) ~[resin.jar:4.0.47]
    at com.caucho.jsp.PageManager.getPage(PageManager.java:317) ~[resin.jar:4.0.47]
    at com.caucho.jsp.PageManager.getPage(PageManager.java:267) ~[resin.jar:4.0.47]
    at com.caucho.jsp.PageManager.getPage(PageManager.java:250) ~[resin.jar:4.0.47]
    at com.caucho.jsp.QServlet.getSubPage(QServlet.java:294) ~[resin.jar:4.0.47]
    at com.caucho.jsp.QServlet.getPage(QServlet.java:210) ~[resin.jar:4.0.47]
    at com.caucho.server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:240) ~[resin.jar:4.0.47]
    at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:144) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.filter.RequestScopeLockReleaseFilter.doFilter(RequestScopeLockReleaseFilter.java:55) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.foundation.ui.theme.ThemeFilter.doFilter(ThemeFilter.java:397) ~[im_ui_base-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.jssp.JSSPContextFilter.doFilter(JSSPContextFilter.java:63) ~[im_jssp-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.impl.HTTPContextHandlingFilterImpl.doFilter(HTTPContextHandlingFilterImpl.java:53) ~[im_j2ee_assist_impl-8.0.6-main.jar:na]
    at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.HTTPContextHandlingFilter.doFilter(HTTPContextHandlingFilter.java:94) ~[im_j2ee_assist_base-8.0.6-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.security.certification.filter.CertificationConfirmFilter.doFilter(CertificationConfirmFilter.java:37) ~[im_certification_impl-8.0.9-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.secure_token.filter.SecureTokenFilter.doFilter(SecureTokenFilter.java:62) ~[im_tenant_common_impl-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.secure.filter.ApplicationPermissionFilter.doFilter(ApplicationPermissionFilter.java:65) ~[im_core_impl_license-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.secure.filter.SystemPermissionFilter.doFilter(SystemPermissionFilter.java:68) ~[im_core_impl_license-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) ~[s2-framework-2.4.45.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) ~[s2-framework-2.4.45.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:131) ~[resin.jar:4.0.47]
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:289) [resin.jar:4.0.47]
    at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:298) ~[resin.jar:4.0.47]
    at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:116) ~[resin.jar:4.0.47]
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085) ~[struts-1.2.9.jar:1.2.9]
    at org.seasar.struts.action.S2RequestProcessor.doForward(S2RequestProcessor.java:306) ~[sa-struts-1.0.4-sp9.jar:na]
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398) ~[struts-1.2.9.jar:1.2.9]
    at org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:134) ~[sa-struts-1.0.4-sp9.jar:na]
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) ~[struts-1.2.9.jar:1.2.9]
    at jp.co.intra_mart.framework.extension.seasar.struts.action.IMS2ActionServlet.process(IMS2ActionServlet.java:38) ~[imart_sastruts-8.0.6-main.jar:na]
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) ~[struts-1.2.9.jar:1.2.9]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:120) ~[javaee-16.jar:na]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:97) ~[javaee-16.jar:na]
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.security.certification.filter.CertificationConfirmFilter.doFilter(CertificationConfirmFilter.java:49) ~[im_certification_impl-8.0.9-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.secure_token.filter.SecureTokenFilter.doFilter(SecureTokenFilter.java:62) ~[im_tenant_common_impl-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.jssp.JSSPContextFilter.doFilter(JSSPContextFilter.java:63) ~[im_jssp-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.impl.HTTPContextHandlingFilterImpl.doFilter(HTTPContextHandlingFilterImpl.java:53) ~[im_j2ee_assist_impl-8.0.6-main.jar:na]
    at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.HTTPContextHandlingFilter.doFilter(HTTPContextHandlingFilter.java:94) ~[im_j2ee_assist_base-8.0.6-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.filter.RequestControlFilter.doFilter(RequestControlFilter.java:98) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringFilter.doFilter(RequestQueryLengthMonitoringFilter.java:80) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.filter.RequestScopeLockReleaseFilter.doFilter(RequestScopeLockReleaseFilter.java:44) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.secure.filter.ApplicationPermissionFilter.doFilter(ApplicationPermissionFilter.java:65) ~[im_core_impl_license-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.secure.filter.SystemPermissionFilter.doFilter(SystemPermissionFilter.java:68) ~[im_core_impl_license-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) ~[s2-framework-2.4.45.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) ~[s2-framework-2.4.45.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:131) ~[resin.jar:4.0.47]
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:289) [resin.jar:4.0.47]
    at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:298) ~[resin.jar:4.0.47]
    at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:116) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.log.transition.TransitionLogRequestDispatcher.forward(TransitionLogRequestDispatcher.java:65) ~[im_system_log-8.0.5-main.jar:na]
    at jp.co.intra_mart.system.router.sastruts.AuthzStrutsForwarder.executeAuthorized(AuthzStrutsForwarder.java:76) ~[imart_sastruts-8.0.6-main.jar:na]
    at jp.co.intra_mart.system.router.authz.AuthorizingAction.execute(AuthorizingAction.java:51) ~[im_authz_impl_router-8.0.11-main.jar:na]
    at jp.co.intra_mart.system.router.BasicRouter.route(BasicRouter.java:144) ~[im_router-8.0.4-main.jar:na]
    at jp.co.intra_mart.system.router.IntramartRouter.route(IntramartRouter.java:143) ~[im_authz_impl_router-8.0.11-main.jar:na]
    at jp.co.intra_mart.foundation.router.RoutingFilter.doFilter(RoutingFilter.java:38) ~[im_router-8.0.4-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.foundation.security.filter.SessionFilter.doFilter(SessionFilter.java:70) ~[im_certification_base-8.0.9-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.log.transition.TransitionLogFilter.doFilter(TransitionLogFilter.java:73) ~[im_system_log-8.0.5-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.filter.RequestLogFilter.doFilter(RequestLogFilter.java:86) ~[im_system_log-8.0.5-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.servlet.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:154) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.system.context.web.impl.ContextFilter.doContextFilter(ContextFilter.java:134) ~[im_core_impl-8.0.11-main.jar:na]
    at jp.co.intra_mart.system.context.web.impl.PreContextFilterChain.doFilter(PreContextFilterChain.java:47) ~[im_core_impl-8.0.11-main.jar:na]
    at jp.co.intra_mart.system.context.web.impl.ContextFilter.doFilter(ContextFilter.java:78) ~[im_core_impl-8.0.11-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.foundation.security.filter.ResponseCharacterEncodingFilter.doFilter(ResponseCharacterEncodingFilter.java:90) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at jp.co.intra_mart.foundation.security.filter.RequestCharacterEncodingFilter.doFilter(RequestCharacterEncodingFilter.java:47) ~[im_servlets-8.0.7-main.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) ~[s2-framework-2.4.45.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) ~[s2-framework-2.4.45.jar:na]
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) ~[resin.jar:4.0.47]
    at com.caucho.server.httpcache.ProxyCacheFilterChain.doRequestCacheable(ProxyCacheFilterChain.java:252) ~[pro.jar:4.0.47]
    at com.caucho.server.httpcache.ProxyCacheFilterChain.doFilter(ProxyCacheFilterChain.java:193) ~[pro.jar:4.0.47]
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) ~[resin.jar:4.0.47]
    at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95) [resin.jar:4.0.47]
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:289) [resin.jar:4.0.47]
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:838) [resin.jar:4.0.47]
    at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1349) [resin.jar:3.2.0]
    at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1305) [resin.jar:3.2.0]
    at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1289) [resin.jar:3.2.0]
    at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1197) [resin.jar:3.2.0]
    at com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:993) [resin.jar:3.2.0]
    at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117) [resin.jar:3.2.0]
    at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93) [resin.jar:3.2.0]
    at com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.java:169) [resin.jar:3.2.0]
    at com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61) [resin.jar:3.2.0]
    at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173) [resin.jar:4.0.47]
    at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) [resin.jar:4.0.47]
Caused by: com.caucho.config.LineConfigException: jar:file:/usr/local/resin/webapps/imart/WEB-INF/lib/im_ui_impl-8.0.11-main.jar!/META-INF/tld/imui/imui.tld:18: com.caucho.jsp.cfg.TldTag.addAttribute(): java.lang.NullPointerException

16:     <body-content>JSP</body-content>
17:     <dynamic-attributes>true</dynamic-attributes>
18:     <attribute>
19:       <name>active</name>
20:       <required>false</required>

    at com.caucho.config.xml.XmlConfigContext.error(XmlConfigContext.java:1244) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureChildNode(XmlConfigContext.java:471) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureNode(XmlConfigContext.java:371) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureChildBean(XmlConfigContext.java:700) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureBeanProperties(XmlConfigContext.java:686) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureChildNode(XmlConfigContext.java:464) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureNode(XmlConfigContext.java:371) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureBean(XmlConfigContext.java:285) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configure(XmlConfigContext.java:243) ~[resin.jar:4.0.47]
    at com.caucho.config.Config.configure(Config.java:324) ~[resin.jar:4.0.47]
    at com.caucho.config.Config.configure(Config.java:291) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TldManager.parseTld(TldManager.java:669) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TldManager.parseTld(TldManager.java:630) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TldManager.parseTld(TldManager.java:509) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TaglibManager.readTaglib(TaglibManager.java:253) ~[resin.jar:4.0.47]
    at com.caucho.jsp.TaglibManager.getTaglib(TaglibManager.java:170) ~[resin.jar:4.0.47]
    at com.caucho.jsp.ParseTagManager.addTaglib(ParseTagManager.java:264) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.processTaglib(JspParser.java:1778) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.processTaglibDirective(JspParser.java:1752) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseDirective(JspParser.java:1254) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseScriptlet(JspParser.java:1126) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseNode(JspParser.java:484) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parseJsp(JspParser.java:384) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspParser.parse(JspParser.java:266) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspCompilerInstance.parse(JspCompilerInstance.java:559) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspCompilerInstance.generate(JspCompilerInstance.java:495) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspPrecompileResource$CompileTask.compilePath(JspPrecompileResource.java:263) ~[resin.jar:4.0.47]
    at com.caucho.jsp.JspPrecompileResource$CompileTask.run(JspPrecompileResource.java:206) ~[resin.jar:4.0.47]
    ... 2 common frames omitted
Caused by: com.caucho.config.ConfigException: com.caucho.jsp.cfg.TldTag.addAttribute(): java.lang.NullPointerException
    at com.caucho.config.ConfigException.create(ConfigException.java:102) ~[resin.jar:4.0.47]
    at com.caucho.config.ConfigException.create(ConfigException.java:130) ~[resin.jar:4.0.47]
    at com.caucho.config.attribute.SetterAttribute.create(SetterAttribute.java:188) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureBeanProperties(XmlConfigContext.java:677) ~[resin.jar:4.0.47]
    at com.caucho.config.xml.XmlConfigContext.configureChildNode(XmlConfigContext.java:464) ~[resin.jar:4.0.47]
    ... 28 common frames omitted
Caused by: java.lang.NullPointerException: null
    at com.caucho.config.reflect.AnnotationSet.add(AnnotationSet.java:122) ~[resin.jar:4.0.47]
    at com.caucho.config.reflect.ReflectionAnnotated.addAnalysisAnnotation(ReflectionAnnotated.java:205) ~[resin.jar:4.0.47]
    at com.caucho.config.inject.InjectionTargetBuilder.build(InjectionTargetBuilder.java:343) ~[resin.jar:4.0.47]
    at com.caucho.config.inject.InjectionTargetBuilder.getInjectionPoints(InjectionTargetBuilder.java:185) ~[resin.jar:4.0.47]
    at com.caucho.config.inject.InjectionTargetBuilder.produce(InjectionTargetBuilder.java:223) ~[resin.jar:4.0.47]
    at com.caucho.config.type.InlineBeanType.create(InlineBeanType.java:199) ~[resin.jar:4.0.47]
    at com.caucho.config.attribute.SetterAttribute.create(SetterAttribute.java:186) ~[resin.jar:4.0.47]
    ... 30 common frames omitted

特に画面変えてないのに…

軽く調べたところ、どうやらキャッシュの問題?である模様。

ひとまずResinを再起動することで普通に解消した。

それでも解消しない場合は、WEB-INFのtmp,workあたりを削除するといいかも。

Dynamics365「このロールで使用できるアプリが見つかりません」

ログインすると、以下の画面が表示された。

f:id:aposke:20201007155251p:plain

このロールで使用できるアプリが見つかりません。最近追加されたアプリを確認するには、[最新の情報に更新]を選択します。

今回、統一インタフェース対応のために利用できるアプリの権限を絞ったのだが、一般ユーザでのログイン時にこの画面が表示されるようになった。

このようにアプリが使えないときの原因は、大きく2つある。

解決策1. アプリの権限を付与する

1. アプリの一覧を開く

右上の歯車>詳細設定 → 開いたウィンドウのメニュー 設定>アプリ

2. アプリにロール権限を付与

アプリ名右上の「…」をクリックし、「ロールの管理」

このアプリを利用できるロールにチェックをつけて保存する。

解決策2. セキュリティロールの権限を付与する

1. 対象のセキュリティロールを開く

設定>セキュリティ>セキュリティロール

2. 「モデル駆動アプリ」の読み取り権限を付与する

「カスタマイズ」タブに「モデル駆動アプリ」があるので、これに読み取り権限を付与する。

今回のケースではひとまず組織全体許可とした。

以上でアプリが表示されるようになった。

参考URL

https://support.microsoft.com/ja-jp/help/4486472/we-can-t-find-any-apps-for-your-role-message-in-dynamics-365-for-phone

Excelに入力したフルパスからファイル名だけを抽出する

◆前提条件

・パスは円サイン「\」で区切られている

・「●」という記号が使われていない

・セル「E7」にフルパスが記載されているものとする

Excel関数
=RIGHT(E7,LEN(E7)-FIND("●", SUBSTITUTE(E7, "\", "●", LEN(E7) - LEN(SUBSTITUTE(E7, "\", "")))))

フルパス(セルE7)の位置、パスの区切り記号("\")については適宜書き換えてください。

参考記事

https://www.relief.jp/docs/excel-find-function-from-right.html

作成したjavaファイルとリリース用classファイルの間に漏れがないかを確認する

とあるプロジェクトでJavaファイルを作成した。

リリースするのは、コンパイルされたclassファイルのみである。

リリース用にclassファイルのみ固めたものの、元となるソースが漏れなく含まれているかを確認したい。

ファイル数で確認できそうだが、複数クラス出力するjavaもいるし…

そんな時は以下のようにする。

1. javaのみ固めたフォルダと、classのみ固めたフォルダをそれぞれ用意。
2. コマンドプロンプトを起動し、javaのみ固めたフォルダに移動して、以下を実行。
dir /b /s *.java > javalist.txt

※ファイルリストを取得する。/bはファイル名のみ、/sはサブフォルダを含む。拡張子を絞っている。

3. 同様にclassのみ固めたフォルダに移動して、以下を実行。
dir /b /s *.class > classlist.txt
4. 生成されたテキストをそれぞれエディタで開き、以下のように加工する。

・パッケージより手前のフォルダパスは削除

・拡張子を削除

5. 加工したテキストをWinMerge等の比較ツールで比較

・差異なく表示される。

・1Javaから複数クラス出力されたものは差異として出るが、一見してわかる。

以上、ただの愚直な手順でした。

ViewCreatorのクエリ作成にアクセスすると403権限エラー

掲題の通り、ViewCreatorのクエリ一覧からクエリ作成にアクセスすると、「403 アクセス権限がありません」エラーが発生する。

ログインしているユーザはテナント管理者なのになぜ…

念のため認可を見直してみても、ViewCreator関連の画面・処理権限は全てONになっている。

ユーザを変更してみても特に事象に変化はなし。

解決方法

やはり認可が原因で、welcome-allマッパーに権限が割り当たっていなかった

テナント管理>認可から、welcom-allマッパーに許可権限をつけることで解決した。

調査方法としてはrequestログを確認したところ、403の画面に飛んでしまう直前のリクエストにて「api/tenant/common/messages」を呼んでおり、

このURLでconf内をGrepかけたところ、routing-jssp-configのtenant-common.xmlがヒットし、中身を見るとwelcome-allマッパーに紐づけられていた。

まさかwelcome-allの権限がOFFになっているとは予想外だったが…そんなこともあるようだ。

Dynamics365でダッシュボードを開くと"RELEVANT_MESSAGE_IN_INCORRECT_ENVIRONMENT"エラー

Dynamics365環境にて、ダッシュボードを開くと以下のエラーが発生する。

f:id:aposke:20200901155220p:plain

エラー

RELEVANT_MESSAGE_IN_INCORRECT_ENVIRONMENT

解決方法

クライアント環境に合わないダッシュボードを表示しようとしているため、ダッシュボードの権限設定を見直す。

今回のケースでは、「Outlook用 アプリ ダッシュボード」を表示しようとしてしまっていた(これは、ブラウザページのタイトルで判明した)。

システムのカスタマイズから当該のダッシュボードを選択し、「セキュリティロールの有効化」から全てのロールを外すことで解決。