Dear Experts,
I am tryng to use default sort function an an array list with the following type:
<complexType name="sortingObjectType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="waitingTime">
<complexType>
<sequence>
<element name="appointmentID" type="string"/>
<element name="waitingTimeExam" type="int"/>
<element name="waitingTimeOp" type="int"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
In my process I have two data objects. DO_IN and DO_OUT are both from type sortingObjectType. My goal is sorting the input and delivering a sorted list as output. Example:
Input:
<star:waitingTime>
<star:appointmentID>zz</star:appointmentID>
<star:waitingTimeExam>4</star:waitingTimeExam>
<star:waitingTimeOp>4</star:waitingTimeOp>
</star:waitingTime>
<star:waitingTime>
<star:appointmentID>aa</star:appointmentID>
<star:waitingTimeExam>3</star:waitingTimeExam>
<star:waitingTimeOp>3</star:waitingTimeOp>
</star:waitingTime>
Output:
<star:waitingTime>
<star:appointmentID>aa</star:appointmentID>
<star:waitingTimeExam>3</star:waitingTimeExam>
<star:waitingTimeOp>3</star:waitingTimeOp>
</star:waitingTime>
<star:waitingTime>
<star:appointmentID>zz</star:appointmentID>
<star:waitingTimeExam>4</star:waitingTimeExam>
<star:waitingTimeOp>4</star:waitingTimeOp>
</star:waitingTime>
I am using following mapping script between DO_IN and DO_OUT in my BPM process
sort(DO_IN/waitingTime,"appointmentID",true)
I could only find one documentation about the buildin functions but it didn't help me further. Would be really happy if someone could help me out. Worst case scenario I am planing to write an EJB function which sorts the array.
Thanks a lot,
Koray
I am getting following Mapping error.
Mapping failed
java.lang.NullPointerException: while trying to invoke the method java.lang.String.compareTo(java.lang.String) of an object returned from com.sap.mapping.lib.execution.implementation.function.builtin.generic.NodeContentReader.read(com.sap.mapping.lib.execution.api.data.SourceNode)
com.sap.mapping.lib.execution.api.exception.TExecutionException
at GenericSort( StandardInvocation:invoker )
at ( DeepExpression )
at http://www.insel.org/StartSortingService/:waitingTime( TerminalPart:expression )
at example.org/insel_test_0/pr/pm/prc_sorting_service/Pool_0:DO_OUT( BroadPart:child )
at ( NarrowMapping )
at com.sap.mapping.lib.execution.implementation.rule.invocation.StandardInvocation.step(StandardInvocation.java:132)
at com.sap.mapping.lib.execution.implementation.rule.expression.DeepExpression$Resolver.resolve(DeepExpression.java:46)
at com.sap.mapping.lib.execution.implementation.rule.expression.DeepExpression$Resolver.<init>(DeepExpression.java:28)
at com.sap.mapping.lib.execution.implementation.rule.expression.DeepExpression.internalExpress(DeepExpression.java:78)
at com.sap.mapping.lib.execution.implementation.rule.expression.AbstractExpression.express(AbstractExpression.java:45)
at com.sap.mapping.lib.execution.implementation.rule.part.AbstractPart.processExpression(AbstractPart.java:131)
at com.sap.mapping.lib.execution.implementation.rule.part.AbstractPart.partake(AbstractPart.java:92)
at com.sap.mapping.lib.execution.implementation.rule.part.BroadPart.processChildren(BroadPart.java:43)
at com.sap.mapping.lib.execution.implementation.rule.part.AbstractPart.partake(AbstractPart.java:96)
at com.sap.mapping.lib.execution.implementation.rule.mapping.NarrowMapping.internalMap(NarrowMapping.java:40)
at com.sap.mapping.lib.execution.implementation.rule.mapping.AbstractMapping.map(AbstractMapping.java:44)
at com.sap.mapping.lib.execution.implementation.Runner.transform(Runner.java:66)
at com.sap.mapping.lib.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:543)
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:78)
at com.sap.glx.core.kernel.execution.transition.Transition.commence(Transition.java:138)
at com.sap.glx.core.kernel.execution.LeaderWorkerPool$Follower.run(LeaderWorkerPool.java:135)
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:249)
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.NullPointerException: while trying to invoke the method java.lang.String.compareTo(java.lang.String) of an object returned from com.sap.mapping.lib.execution.implementation.function.builtin.generic.NodeContentReader.read(com.sap.mapping.lib.execution.api.data.SourceNode)
at com.sap.mapping.lib.execution.implementation.function.builtin.generic.DescendingSorter$1.compare(DescendingSorter.java:17)
at com.sap.mapping.lib.execution.implementation.function.builtin.generic.DescendingSorter$1.compare(DescendingSorter.java:15)
at java.util.Arrays.mergeSort(Arrays.java:1270)
at java.util.Arrays.sort(Arrays.java:1210)
at java.util.Collections.sort(Collections.java:159)
at com.sap.mapping.lib.execution.implementation.function.builtin.generic.AbstractSorter.execute(AbstractSorter.java:19)
at com.sap.mapping.lib.execution.implementation.function.builtin.generic.GenericSortFunction.invokeNative(GenericSortFunction.java:34)
at com.sap.mapping.lib.execution.implementation.rule.invocation.StandardInvocation.step(StandardInvocation.java:129)
... 31 more