Skip to content

Commit

Permalink
Merge pull request #32 from hotwax/31-order-routing-cron-expression-d…
Browse files Browse the repository at this point in the history
…oes-not-allow-compositecron

Added support to add composite cron expresion as routing schedule
  • Loading branch information
dixitdeepak authored Jul 24, 2024
2 parents 412288c + 7363769 commit 24946dd
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 21 deletions.
18 changes: 4 additions & 14 deletions screen/OrderRoutingGroup/OrderRoutingGroupDetail.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,6 @@
<entity-find-one entity-name="moqui.service.job.ServiceJob" value-field="serviceJob">
<field-map field-name="jobName" from="orderRoutingGroup.jobName"/>
</entity-find-one>
<script>
if (serviceJob?.cronExpression) {
try {
cronExpressionDesc = org.moqui.impl.service.ScheduledJobRunner.getCronDescription(serviceJob?.cronExpression, ec.user.getLocale(), true)
cronExecutionTime = org.moqui.impl.service.ScheduledJobRunner.getExecutionTime(serviceJob?.cronExpression)
nextExecutionTime = cronExecutionTime.nextExecution(java.time.ZonedDateTime.now()).orElse(null).toInstant().atZone(ec.user.getTimeZone().toZoneId())
} catch (Exception e) {
ec.logger.error("Error getting cron description: ${e.getMessage()}")
cronExpressionDesc = e.getMessage()
}
}
</script>
</actions>
<widgets>
<container-row>
Expand Down Expand Up @@ -108,8 +96,10 @@
<default-field><link url="serviceJobDetail" text="${jobName}" link-type="anchor" url-type="screen"/></default-field>
</field>
<field name="description"><default-field><text-line/></default-field></field>
<field name="cronExpression"><default-field tooltip="${cronExpressionDesc} ${TimeZone.getDefault().getID()} time"><text-line /></default-field></field>
<field name="nextExecutionTime"><conditional-field condition="nextExecutionTime"><display/></conditional-field></field>
<field name="cronExpression"><default-field tooltip="${co.hotwax.util.MaargUtil.getCronDescription(serviceJob?.cronExpression, ec.user.getLocale())?:''}"><text-line /></default-field></field>
<field name="nextExecutionTime"><conditional-field condition="serviceJob.cronExpression">
<display text="${co.hotwax.util.MaargUtil.getNextExecutionTime(serviceJob?.cronExpression, ec.user.getTimeZone())?:''}"/>
</conditional-field></field>
<field name="fromDate"><default-field><date-time/></default-field></field>
<field name="thruDate"><default-field><date-time/></default-field></field>
<field name="paused">
Expand Down
6 changes: 5 additions & 1 deletion screen/OrderRoutingGroup/OrderRoutingGroupList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<field-map field-name="jobName" from="jobName"/>
</entity-find-one>
<if condition="serviceJob &amp;&amp; serviceJob.cronExpression">
<set field="cronDescription" from="org.moqui.impl.service.ScheduledJobRunner.getCronDescription(serviceJob.cronExpression, ec.user.getLocale(), false)"/>
<set field="cronDescription" from="co.hotwax.util.MaargUtil.getCronDescription(serviceJob.cronExpression, ec.user.getLocale())"/>
</if>
</row-actions>
<field name="groupName">
Expand All @@ -64,6 +64,10 @@
<header-field show-order-by="false"></header-field>
<default-field title="Frequency"><display text="${cronDescription?:''}"/></default-field>
</field>
<field name="nextExecutionTime">
<header-field show-order-by="false"></header-field>
<default-field><display text="${co.hotwax.util.MaargUtil.getNextExecutionTime(serviceJob?.cronExpression, ec.user.getTimeZone())?:''}"/></default-field>
</field>
<field name="sequenceNum">
<header-field show-order-by="true"></header-field>
<default-field><display/></default-field>
Expand Down
13 changes: 7 additions & 6 deletions service/co/hotwax/order/routing/OrderRoutingServices.xml
Original file line number Diff line number Diff line change
Expand Up @@ -550,9 +550,8 @@
<script>
schedule = serviceJob.getMap()
try {
schedule.cronDescription = org.moqui.impl.service.ScheduledJobRunner.getCronDescription(schedule.cronExpression, ec.user.getLocale(), true)
cronExecutionTime = org.moqui.impl.service.ScheduledJobRunner.getExecutionTime(schedule.cronExpression)
nextExecutionTime = cronExecutionTime.nextExecution(java.time.ZonedDateTime.now()).orElse(null)
schedule.cronDescription = co.hotwax.util.MaargUtil.getCronDescription(schedule.cronExpression, ec.user.getLocale())
nextExecutionTime = co.hotwax.util.MaargUtil.getNextExecutionTime(serviceJob?.cronExpression, TimeZone.getDefault())
if (nextExecutionTime != null) {
schedule.nextExecutionDateTime = nextExecutionTime.toInstant().toEpochMilli()
}
Expand Down Expand Up @@ -585,12 +584,14 @@
<return message="No productStore associated with routing group ${orderRoutingGroup.groupName} [${orderRoutingGroup.routingGroupId}]/"/>
</if>
<if condition="cronExpression">
<!--validate cron expression -->
<script>
try {
cronDescription = org.moqui.impl.service.ScheduledJobRunner.getCronDescription(cronExpression, ec.user.getLocale(), false)
cron = org.moqui.impl.service.ScheduledJobRunner.getCron(cronExpression)
cron.validate()
} catch (Exception e) {
ec.logger.error("Error getting cron description: ${e.getMessage()}")
ec.message.addError("Error getting cron description: ${e.getMessage()}")
ec.logger.error("Invalid cron expression : ${e.getMessage()}")
ec.message.addError("Invalid cron expression 2: ${e.getMessage()}")
return
}
</script>
Expand Down

0 comments on commit 24946dd

Please sign in to comment.