基于SAP HANA云集成的15分钟增量时间请求头Groovy脚本需求
实现SAP HANA云集成15分钟增量时间请求头的Groovy脚本方案
根据你的需求,我们需要生成完全匹配示例规则的From和To请求头——每15分钟触发一次流程,请求头时间窗口按15分钟增量递进。下面是完整的Groovy脚本实现,以及关键逻辑的说明:
完整Groovy脚本
import com.sap.gateway.ip.core.customdev.util.Message import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.time.temporal.ChronoUnit def Message processData(Message message) { // 定义匹配示例的时间格式:HH:mm:ss d-MMM(如11:00:05 1-Jun) def timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss d-MMM") // 获取当前流程触发的时间 def currentTime = LocalDateTime.now() // 计算To时间:向下取整到最近的15分钟整节点 def currentMinutes = currentTime.getMinute() def roundedMinutes = currentMinutes - (currentMinutes % 15) def toDateTime = currentTime.withMinute(roundedMinutes).withSecond(0).withNano(0) // 计算From时间:To时间往前推15分钟,再加1秒(匹配示例的时间衔接规则) def fromDateTime = toDateTime.minus(15, ChronoUnit.MINUTES).plus(1, ChronoUnit.SECONDS) // 将格式化后的时间设置为请求头 message.setHeader("From", fromDateTime.format(timeFormatter)) message.setHeader("To", toDateTime.format(timeFormatter)) // 保留你原有业务需要的头信息和属性设置 message.setHeader("Content-Type","application/json") message.setHeader("Accept","application/json") message.setProperty("url", "app.ticketmaster.com/sth-customer/…") return message }
关键逻辑说明
- 15分钟节点取整:通过对当前分钟数取模15,计算出需要向下调整的分钟数,确保
To时间始终是最近的15分钟整节点(比如11:02:05会被调整到11:00:00,11:17:30会被调整到11:15:00) - 时间窗口衔接:
From时间自动基于To时间往前推15分钟再加1秒,完美匹配你给出的示例中「上一个窗口的To+1秒作为当前窗口的From」的规则 - 时区适配:如果业务需要统一使用特定时区(比如UTC),可以将
LocalDateTime.now()替换为LocalDateTime.now(ZoneId.of("UTC")),避免时区差异导致的时间偏差
配置步骤
- 在你的HCI流程中,替换原有Groovy脚本为上述代码
- 确保流程触发定时器的Cron表达式设置为每15分钟触发一次(示例表达式:
0 */15 * ? * *) - 触发测试流程,检查请求头中的
From和To是否符合预期的格式与时间范围
内容的提问来源于stack exchange,提问作者Harikrishnadhar Sonnenahalli
相关产品推荐
相关产品推荐

