Unparseable date: "01-09-null"
means that $SchoolYear/StartYear is empty.
Maybe remove the validation rules at the domain model.. ;)
Doesn't this work?
parseDateTime('01-09-' + $StartYear, 'dd-MM-yyyy')
I tried that, but while doesn't give any error in Studio Pro, it crashes when triggering the Microflow.
An error has occurred while handling the request. [User 'Anonymous_b21aa44c-9573-4a79-b641-54a2513d83cc' with session id '25fd19e8-XXXX-XXXX-XXXX-XXXXXXXX2fd6' and roles 'Administrator']
--------
com.mendix.modules.microflowengine.MicroflowException: Failed to evaluate expression, error occurred on line 1, character 1
parseDateTime('01-09-' + $SchoolYear/StartYear, 'dd-MM-yyyy')
^
at MyFirstModule.OCH_SetStartDate (CreateOrChangeVariable : 'Create Date and time variable')
Advanced stacktrace:
at com.mendix.languages.mxexpressions.MxExpression.evaluate(MxExpression.scala:21)
Caused by: com.mendix.languages.expressions.ExpressionException: java.text.ParseException: Unparseable date: "01-09-null"
at com.mendix.languages.expressions.Expr.evaluate(Expr.java:34)
Caused by: java.text.ParseException: Unparseable date: "01-09-null"
at java.base/java.text.DateFormat.parse(DateFormat.java:395)
at com.mendix.languages.expressions.DateTimeFunctionCallEvaluator.evaluateParseDateTime(DateTimeFunctionCallEvaluator.java:66)
at com.mendix.languages.expressions.FunctionCallExpr.evaluateExpression(FunctionCallExpr.java:120)
at com.mendix.languages.expressions.Expr.evaluate(Expr.java:30)
at com.mendix.languages.mxexpressions.MxExpression.evaluate(MxExpression.scala:14)
at com.mendix.modules.microflowengine.actions.variable.CreateOrChangeVariableAction.execute(CreateOrChangeVariableAction.scala:32)
at com.mendix.modules.microflowengine.actions.variable.CreateOrChangeVariableAction.execute(CreateOrChangeVariableAction.scala:13)
at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.execute(MicroflowObject.java:47)
at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAfterBreakingIfNecessary(MicroflowImpl.java:215)
at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAction(MicroflowImpl.java:165)
at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:46)
at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:71)
at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:49)
at com.mendix.core.actionmanagement.CoreAction.call(CoreAction.java:54)
at com.mendix.basis.actionmanagement.ActionManagerBase$1.execute(ActionManagerBase.java:147)
at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32)
at com.mendix.basis.actionmanagement.ActionManagerBase.executeSync(ActionManagerBase.java:152)
at com.mendix.basis.actionmanagement.MicroflowCallBuilderImpl.execute(MicroflowCallBuilderImpl.scala:32)
at com.mendix.webui.actions.client.ExecuteMicroflowAction.runMicroflow(ExecuteMicroflowAction.scala:76)
at com.mendix.webui.actions.client.ExecuteMicroflowAction.$anonfun$apply$3(ExecuteMicroflowAction.scala:42)
at com.mendix.webui.actions.client.RegularClientAction$Helpers$.$anonfun$liftEither$1(RegularClientAction.scala:29)
at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.$anonfun$apply$4(RegularClientAction.scala:55)
at com.mendix.webui.requesthandling.helpers.StateHandling.withState(StateHandling.scala:35)
at com.mendix.webui.requesthandling.helpers.StateHandling.withState$(StateHandling.scala:32)
at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.withState(RegularClientAction.scala:45)
at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.apply(RegularClientAction.scala:53)
at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.apply(RegularClientAction.scala:45)
at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:43)
at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:22)
at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$3(RegularClientAction.scala:109)
at scala.util.Try$.apply(Try.scala:213)
at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2(RegularClientAction.scala:109)
at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2$adapted(RegularClientAction.scala:107)
at com.mendix.webui.requesthandling.helpers.ContextHandling.$anonfun$inContext$5(ContextHandling.scala:47)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at com.mendix.basis.actionmanagement.IMonitoredAction$$anon$1.execute(IMonitoredAction.scala:47)
at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32)
at com.mendix.basis.actionmanagement.IMonitoredAction.monitor(IMonitoredAction.scala:49)
at com.mendix.basis.actionmanagement.IMonitoredAction.monitor$(IMonitoredAction.scala:25)
at com.mendix.webui.requesthandling.helpers.ContextHandling$ClientMonitoredAction.monitor(ContextHandling.scala:59)
at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:47)
at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:27)
at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:86)
at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:24)
at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:19)
at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:86)
at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$1(RegularClientAction.scala:107)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest(ProfileHandling.scala:14)
at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest$(ProfileHandling.scala:10)
at com.mendix.webui.actions.client.RegularClientAction.profileRequest(RegularClientAction.scala:86)
at com.mendix.webui.actions.client.RegularClientAction.execute(RegularClientAction.scala:104)
at com.mendix.webui.requesthandling.ClientRequestHandler.handleAction(ClientRequestHandler.scala:104)
at com.mendix.webui.requesthandling.ClientRequestHandler.processRequest(ClientRequestHandler.scala:81)
at com.mendix.externalinterface.connector.RequestHandler.doProcessRequest(RequestHandler.java:40)
at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:76)
at com.mendix.external.connector.MxRuntimeConnector$1.execute(MxRuntimeConnector.java:73)
at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:32)
at com.mendix.external.connector.MxRuntimeConnector.processRequest(MxRuntimeConnector.java:79)
at com.mendix.basis.impl.MxRuntimeImpl.processRequest(MxRuntimeImpl.java:937)
at com.mendix.m2ee.appcontainer.server.handler.RuntimeHandler.service(RuntimeHandler.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:867)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:502)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.base/java.lang.Thread.run(Thread.java:834)
I create the SchoolYear from a create button in a datagrid. Could that be the problem?
I don't know the specifics of your application and at what moment you are trying to do the parseDateTime, but you need to make sure a SchoolYear object exists containing a valid StartYear before you do a parseDateTime in this way.
It might be a strategy to use a microflow action button instead of a create-button and in the microflow create a schoolyear and set a value for StartYear.
It works when I edit a schoolyear.. It triggers on change of the StartYear, so weird that it doesn't work when creating a new year. I tried the microflow action button with a create of the object first, but the SchoolYear remains empty when I look in the debugger.
Yes, the object remained empty because of validation rules in the domain model. Upon removal the OCH microflow worked correctly and the object was filled.