on 03-22-2012 11:42 AM
Hi,
We have process step which invokes a BRM flow ruleset service which returns a number of fields in the as defined by a ProcessUsers xsd. We've just added a new field 'TrialsLead' to the ProcessUsers structure and related action on the decision table. The Modified service is deployed and executes fine in WS Navigator.
We deleted the WSDL in the BPM and reimported it and re-mapped it. It now shows the new field in the BPM design tools. We correctly initialise the field and map it from the Response strucuture for the BRM FlowRuleset service to a field in the Process Context. We've rebuilt everything and redeployed.
However at runtime, a completely new instance of the process is failing at this step with a Mapping Error.
From the Debug logs for sap.com.glx.mapping, you can see that the new field is not available in the Mapping Source.
It seems that the old version of the ProcessUsers schema is what the Container is seeing, and not the updated version. Does anyone know how to resolve this?
java.lang.IllegalStateException: Container '$http://namespace.com/ProcessUsers:TrialsLead' unavailable
com.sap.glx.mapping.execution.api.exception.TExecutionException
at http://namespace.com/ProcessUsers:TrialsLead( StandardChild )
at ( DeepExpression )
at namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:siteTrialsLead( TerminalPart:expression )
at ( BroadMapping )
at com.sap.glx.mapping.execution.implementation.rule.child.StandardChild.step(StandardChild.java:76)
at com.sap.glx.mapping.execution.implementation.rule.expression.DeepExpression$Resolver.resolve(DeepExpression.java:46)
at com.sap.glx.mapping.execution.implementation.rule.expression.DeepExpression$Resolver.resolve(DeepExpression.java:49)
at com.sap.glx.mapping.execution.implementation.rule.expression.DeepExpression$Resolver.resolve(DeepExpression.java:49)
at com.sap.glx.mapping.execution.implementation.rule.expression.DeepExpression$Resolver.<init>(DeepExpression.java:28)
at com.sap.glx.mapping.execution.implementation.rule.expression.DeepExpression.internalExpress(DeepExpression.java:78)
at com.sap.glx.mapping.execution.implementation.rule.expression.AbstractExpression.express(AbstractExpression.java:45)
at com.sap.glx.mapping.execution.implementation.rule.part.AbstractPart.processExpression(AbstractPart.java:131)
at com.sap.glx.mapping.execution.implementation.rule.part.AbstractPart.partake(AbstractPart.java:92)
at com.sap.glx.mapping.execution.implementation.rule.mapping.BroadMapping.internalMap(BroadMapping.java:37)
at com.sap.glx.mapping.execution.implementation.rule.mapping.AbstractMapping.map(AbstractMapping.java:44)
at com.sap.glx.mapping.execution.implementation.Runner.transform(Runner.java:66)
at com.sap.glx.mapping.execution.implementation.Runner.transform(Runner.java:43)
at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$MapperTemplate$ImplementedInvocationHandler.map(Transformer.java:3089)
at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$MapperTemplate$ImplementedInvocationHandler.invoke(Transformer.java:3070)
at com.sap.glx.core.internaladapter.Transformer$TransformerInvocationHandler.invoke(Transformer.java:3356)
at com.sap.glx.core.dock.impl.DockObjectImpl.invokeMethod(DockObjectImpl.java:545)
at com.sap.glx.core.kernel.trigger.config.Script$MethodInvocation.execute(Script.java:248)
at com.sap.glx.core.kernel.trigger.config.Script.execute(Script.java:798)
at com.sap.glx.core.kernel.execution.transition.ScriptTransition.execute(ScriptTransition.java:67)
at com.sap.glx.core.kernel.execution.transition.Transition.commence(Transition.java:136)
at com.sap.glx.core.kernel.execution.LeaderWorkerPool$Follower.run(LeaderWorkerPool.java:122)
at com.sap.glx.core.resource.impl.common.WorkWrapper.run(WorkWrapper.java:58)
at com.sap.glx.core.resource.impl.j2ee.J2EEResourceImpl$Sessionizer.run(J2EEResourceImpl.java:264)
at com.sap.glx.core.resource.impl.j2ee.ServiceUserManager$ServiceUserImpersonator$1.run(ServiceUserManager.java:152)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:337)
at com.sap.glx.core.resource.impl.j2ee.ServiceUserManager$ServiceUserImpersonator.run(ServiceUserManager.java:149)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)
Caused by: java.lang.IllegalStateException: Container '$http://namespace.com/ProcessUsers:TrialsLead' unavailable
at com.sap.glx.mapping.execution.implementation.rule.child.StandardChild.step(StandardChild.java:72)
... 31 more
-------------------------------- [Start Mapping Trace] Mapping execution --------------------------------
-------------------------------- Mapping definition --------------------------------
<BroadMapping id="1">
<TerminalPart id="2">
<DeepExpression id="3">
<StandardChild id="4">
<Identifier id="5">
</Identifier>
</StandardChild>
<StandardChild id="6">
<Identifier id="7">
http://namespace.com/ProcessUsers:ProcessUsers
</Identifier>
</StandardChild>
<StandardChild id="8">
<Identifier id="9">
http://namespace.com/ProcessUsers:MRPPlanner
</Identifier>
</StandardChild>
</DeepExpression>
<StandardAssignment id="10">
RelayTransformer, SetIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="11">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:mrpPlanner
</Identifier>
</TerminalPart>
<TerminalPart id="12">
<DeepExpression id="13">
<StandardChild id="14">
<Identifier id="15">
</Identifier>
</StandardChild>
<StandardChild id="16">
<Identifier id="17">
http://namespace.com/ProcessUsers:ProcessUsers
</Identifier>
</StandardChild>
<StandardChild id="18">
<Identifier id="19">
http://namespace.com/ProcessUsers:StatusText
</Identifier>
</StandardChild>
</DeepExpression>
<StandardAssignment id="20">
RelayTransformer, SetIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="21">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:ruleStatus
</Identifier>
</TerminalPart>
<BroadPart id="22">
<FlatExpression id="23">
.
</FlatExpression>
<StandardAssignment id="24">
BlockTransformer, SubmergeIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="25">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:userList
</Identifier>
<TerminalPart id="26">
<ShallowExpression id="27">
<StandardChild id="28">
<Identifier id="29">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:requesterId
</Identifier>
</StandardChild>
</ShallowExpression>
<StandardAssignment id="30">
RelayTransformer, SetIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="31">
http://www.namespace.com/UserList:UserId
</Identifier>
</TerminalPart>
<TerminalPart id="32">
<ShallowExpression id="33">
<EmptyLiteral id="34">
""
</EmptyLiteral>
</ShallowExpression>
<StandardAssignment id="35">
BlockTransformer, TrimIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="36">
http://www.namespace.com/UserList:UserId
</Identifier>
</TerminalPart>
</BroadPart>
<TerminalPart id="37">
<DeepExpression id="38">
<StandardChild id="39">
<Identifier id="40">
</Identifier>
</StandardChild>
<StandardChild id="41">
<Identifier id="42">
http://namespace.com/ProcessUsers:ProcessUsers
</Identifier>
</StandardChild>
<StandardChild id="43">
<Identifier id="44">
http://namespace.com/ProcessUsers:TrialsLead
</Identifier>
</StandardChild>
</DeepExpression>
<StandardAssignment id="45">
RelayTransformer, SetIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="46">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:siteTrialsLead
</Identifier>
</TerminalPart>
<TerminalPart id="47">
<DeepExpression id="48">
<StandardChild id="49">
<Identifier id="50">
</Identifier>
</StandardChild>
<StandardChild id="51">
<Identifier id="52">
http://namespace.com/ProcessUsers:ProcessUsers
</Identifier>
</StandardChild>
<StandardChild id="53">
<Identifier id="54">
http://namespace.com/ProcessUsers:ReasonText
</Identifier>
</StandardChild>
</DeepExpression>
<StandardAssignment id="55">
RelayTransformer, SetIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="56">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:ruleText
</Identifier>
</TerminalPart>
<TerminalPart id="57">
<DeepExpression id="58">
<StandardChild id="59">
<Identifier id="60">
</Identifier>
</StandardChild>
<StandardChild id="61">
<Identifier id="62">
http://namespace.com/ProcessUsers:ProcessUsers
</Identifier>
</StandardChild>
<StandardChild id="63">
<Identifier id="64">
http://namespace.com/ProcessUsers:SiteArtworkLead
</Identifier>
</StandardChild>
</DeepExpression>
<StandardAssignment id="65">
RelayTransformer, SetIntegrator, VoidExpander
</StandardAssignment>
<Identifier id="66">
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:siteArtworkLead
</Identifier>
</TerminalPart>
</BroadMapping>
-------------------------------- Mapping source --------------------------------
namespace.com/plm/pr/changecontrol/Change_Control_Process/Change_Control:requesterId
http://namespace.com/ProcessUsers:ProcessUsers
http://namespace.com/ProcessUsers:ProcessStage
http://namespace.com/ProcessUsers:Site
http://namespace.com/ProcessUsers:Customer
http://namespace.com/ProcessUsers:Brand
http://namespace.com/ProcessUsers:Classification
http://namespace.com/ProcessUsers:SiteArtworkLead
http://namespace.com/ProcessUsers:SiteApprover
http://namespace.com/ProcessUsers:PortfolioApprover
http://namespace.com/ProcessUsers:CommercialApprover
http://namespace.com/ProcessUsers:SiteFinance
http://namespace.com/ProcessUsers:SiteTechnical
http://namespace.com/ProcessUsers:SitePackaging
http://namespace.com/ProcessUsers:SiteFinishedGoods
http://namespace.com/ProcessUsers:BillOfMaterialsLead
http://namespace.com/ProcessUsers:CheeseStockPlanner
http://namespace.com/ProcessUsers:ChangeControl
http://namespace.com/ProcessUsers:ArtworkLead
http://namespace.com/ProcessUsers:CommercialOps
http://namespace.com/ProcessUsers:MRPPlanner
http://namespace.com/ProcessUsers:StatusText
http://namespace.com/ProcessUsers:ReasonText
-------------------------------- [End of Mapping Trace] --------------------------------
Hi,
Have you tried simply restarting your application server? They are notorius for caching web service definitions and often you will see problems like this where the design time is up to date, WS Navigator is up to date but any runtime calls to the service is incorrect.
Try a restart and see if that helps - if not come back for more help.
Thanks,
Gareth.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Gareth. We had been led to believe that the server had been restarted yesterday when these errors first started coming up. Another restart now has resolved the issue. Do you know of a way to simply restart the BPM runtime rather than a full application server restart, and do you think that would work?
Hi Paul,
A few years ago on a plain NW 7.0.1 Java system I spent a lot of time with my basis colleague investigating stopping and re-starting various services on the server to try and clear the web service cache - all to no avail. We just accepted that if you change the service contract you need to restart the system to clear the cache.
It used to be a problem with Web Dynpro calling RFC's in the backend system via JCo but SAP delivered a system application to clear the cache for that - I'm hoping they will eventually do the same for the web service layer too but nothing (that I am aware of) exists yet. It's a massive pain for me, especially when I have to explain to a customer's basis team that I'll need them to restart the server every five minutes whilst I'm developing!
Thanks,
Gareth.
User | Count |
---|---|
90 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.