Files
skills/mis-spec/references/worksheet.md
T
V-LiuShuang 66a663fb27 add
2026-09-07 17:16:09 +08:00

2.2 KiB

使用场景

异步任务捕捉到异常需要发起重试。

源码

目录:"mis-modules/mis-paw/src/main/java/com/lcfc/mispaw/worksheet",所有"SimpleWorkSheet.java"的子类都是一个工单处理器,"WorkSheetTaskExecutor.java"将定时轮询查数据库并异步执行。

编写代码的模块没有工单怎么办?

询问用户是否要添加重试工单支持,若用户拒绝,则放弃使用工单不进行重试。若用户同意,则把"worksheet"目录拷贝到编写代码的模块,放在与springboot启动类同级目录。然后把工单的表结构原文输出给用户,让用户去数据库建表。

案例

项目中"mis-modules/mis-paw/src/main/java/com/lcfc/mispaw/mq/base/IMessageQueueConsumer.java"在"onMessage"方法捕获异常,调用"mis-modules/mis-paw/src/main/java/com/lcfc/mispaw/worksheet/WorkSheetHandler.java"的"putObjectParam"方法把异步任务保存到数据库。

工单的表结构

CREATE TABLE `work_sheet` (
    `id`                  BIGINT        NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `system_code`         VARCHAR(64)   NOT NULL COMMENT '系统编码',
    `work_code`           VARCHAR(512)   NOT NULL COMMENT '工单编码',
    `current_try_times`   INT           NOT NULL COMMENT '当前是第几次重试',
    `max_try_times`       INT           NOT NULL COMMENT '最多重试多少次',
    `task_id`             VARCHAR(512)   NOT NULL COMMENT '追踪标识(traceId、业务标识、时间戳等)',
    `state`               VARCHAR(32)   NOT NULL COMMENT '状态:wait-待执行,error-失败,success-成功',
    `json_param`          JSON          NULL     COMMENT '请求参数(JSON格式)',
    `str_param`           VARCHAR(512)  NULL     COMMENT '请求参数(简单字符串)',
    `response_param`      LONGTEXT      NULL     COMMENT '响应参数',
    `error`               LONGTEXT NULL     COMMENT '错误信息',
    `create_time`         DATETIME      NOT NULL COMMENT '创建时间',
    `start_time`          DATETIME      NULL     COMMENT '执行开始时间',
    `finish_time`         DATETIME      NULL     COMMENT '执行结束时间',
    PRIMARY KEY (`id`),
    KEY idx_task_id(`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表';