cancel
Showing results for 
Search instead for 
Did you mean: 

Using activities TB_TOOL_TO_DISCRETE and LOG_TOOL_HOOK on Start hook

Former Member
0 Kudos

Hi All,

I am looking for a way to check for logged tools in timebased environment before an SFC is allowed to be started at a certain operation.

As far as I understand TB_TOOL_TO_DISCRETE is used to log a tool which is setup at a timebased resource for a single SFC. LOG_TOOL_HOOK checks if all required tools are logged for a SFC.

How can those two activities be combined to only allow SFCs to be started when the required machine setup is met?

I tried to hook both activities to PRE_START as follows:

sequence     hook point          activity

10               PRE_START       TB_TOOL_TO_DISCRETE

15               PRE_START       LOG_TOOL_HOOK

The result was that tools were logged but LOG_TOOL_HOOK did not have any effect (when I removed the setup from resource I was still allowed to start the SFC)

Then I tried the following:

sequence     hook point          activity

10               PRE_START       TB_TOOL_TO_DISCRETE

15               POST_START     LOG_TOOL_HOOK

which resulted in a rather long error message on the POD on starting the SFC while resource setup was not as required:

Exception java.lang.ClassCastException: class com.sap.me.frame.BOHandle:sap.com/me~ear@com.sap.engine.boot.loader.ResourceMultiParentClassLoader@3353a96b@alive incompatible with class com.sap.me.productdefinition.ItemBOHandle:sap.com/me~ear@com.sap.engine.boot.loader.ResourceMultiParentClassLoader@3353a96b@alive java.lang.ClassCastException: class com.sap.me.frame.BOHandle:sap.com/me~ear@com.sap.engine.boot.loader.ResourceMultiParentClassLoader@3353a96b@alive incompatible with class com.sap.me.productdefinition.ItemBOHandle:sap.com/me~ear@com.sap.engine.boot.loader.ResourceMultiParentClassLoader@3353a96b@alive at com.sap.me.tooling.LogToolHK.execute(LogToolHK.java:38) at com.sap.me.activity.ActivityBOBean.execute(ActivityBOBean.java:471) at sun.reflect.GeneratedMethodAccessor801.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy1394.execute(Unknown Source) at sun.reflect.GeneratedMethodAccessor800.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at com.visiprise.frame.proxy.DefaultInterceptor.intercept(DefaultInterceptor.java:31) at com.visiprise.frame.proxy.InterceptorChain.process(InterceptorChain.java:48) at com.visiprise.frame.proxy.GenericSOProxy.invoke(GenericSOProxy.java:81) at $Proxy1484.execute(Unknown Source) at com.sap.me.production.HookBOBean.execute(HookBOBean.java:175) at sun.reflect.GeneratedMethodAccessor731.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy959.execute(Unknown Source) at com.sap.me.production.StartBOBean.start(StartBOBean.java:253) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy908.start(Unknown Source) at com.sap.me.production.StartSOBean.start(StartSOBean.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:46) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy823.start(Unknown Source) at com.sap.me.production.StartDelegate.start(StartDelegate.java:17) at JEE_jsp_com_sap_me_production_client_Start_1114350_1318962622000_1322137845350._jspService(JEE_jsp_com_sap_me_production_client_Start_1114350_1318962622000_1322137845350.java:783) at com.sap.engine.services.servlets_jsp.lib.jspruntime.JspBase.service(JspBase.java:102) at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:140) at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:436) at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:146) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:140) at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doCached(RequestDispatcherImpl.java:517) at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:356) at com.sap.engine.services.servlets_jsp.lib.jspruntime.PageContextImpl.forward(PageContextImpl.java:218) at JEE_jsp_com_sap_me_production_client_PodMain_1114350_1318962622000_1320308018945._jspService(JEE_jsp_com_sap_me_production_client_PodMain_1114350_1318962622000_1320308018945.java:1015) at com.sap.engine.services.servlets_jsp.lib.jspruntime.JspBase.service(JspBase.java:102) at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:140) at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:436) at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:146) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:162) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:81) at com.sap.me.alarm.client.RTEDSessionInvalidateFilter.doFilter(RTEDSessionInvalidateFilter.java:66) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73) at com.sap.me.coral.core.filter.ActivityAuthenticationFilter.processChain(ActivityAuthenticationFilter.java:888) at com.sap.me.coral.core.filter.ActivityAuthenticationFilter.doFilter(ActivityAuthenticationFilter.java:836) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73) at com.sap.me.security.client.SecurityFilter.doFilter(SecurityFilter.java:151) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73) at com.sap.me.coral.core.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:57) at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:468) at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:298) at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:399) at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:388) at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:48) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:84) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:244) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:78) at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60) at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27) at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29) at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:43) at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:42) at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12) at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78) at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:428) at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:247) at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:45) at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122) at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101) at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:327) occurred (Message 10001)

Do you have any suggestions for me on

- the appropriate setup for the desired checks (don't allow start of SFC if resource is not set up as required)?

- how to interprete this error message?

Many thanks in advance

Ulrike

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member182330
Active Contributor
0 Kudos

Hello Ulrike,

This is hook description according to Setting up activity hooks guide: LOG_TOOL_HOOK validates that tools required for an SFC number at current point are logged or set up on the resource.

I would assume that you got an error because the hook was used at POST_START which does not really make sence. The hook is meant to prohibit start/complete if requirement has not been met.

Besides this context data required by hook may not be available at POST_ hook points.

Konstantin

Former Member
0 Kudos

Hi Konstantin,

thanks for your answer.

If POST_START is not a suitable hook and on PRE_START it the check is not effective where could I hook the activity to?

The process I need this for is as follows:

- At a timebased resource one or more tools are set up

- on start of the SFC the system has to check if all required tools have been logged

- if a required tool is missing start of SFC has to be rejected

That's why I first tried the following setup in ME:

I defined hook point activities on operation level like this

sequence     hook point          activity

10               PRE_START       TB_TOOL_TO_DISCRETE

15               PRE_START       LOG_TOOL_HOOK

Just because this setup did not have the effect I expected (when I removed the setup from resource I was still allowed to start the SFC), I tried to hook LOG_TOOL_HOOK to POST_START.

I totally understand that having it on POST_START doesn't make sense (and ME hence throws this error).

But as LOG_TOOL_HOOK doesn't have any effect on PRE_START in combination with TB_TOOL_TO_DISCRETE: can you help me on what would be the correct setup for the process described above?

Thanks

Ulrike

former_member182330
Active Contributor
0 Kudos

Ulrike,

As far as I understand the hook should prevent further SFC processing if regular tools have not been logged or if required TB tools are not configured at the current resource. If you see different behavior you should log a support ticket to investigate it further.

Konstantin

Former Member
0 Kudos

Hi Konstantin

thanks for your help.

I will go for the ticket then

Ulrike