服务集成关系

步骤

数据库脚本
-- state_machine_category definition

-- Drop table

-- DROP TABLE state_machine_category;

CREATE TABLE state_machine_category (
    id varchar(50) NOT NULL,
    code varchar(50) NULL,
    name varchar(100) NULL,
    parent_id varchar(50) NULL,
    is_deleted varchar(1)  DEFAULT 0,
    crt_user varchar(50) NULL,
    crt_name varchar(50) NULL,
    crt_time timestamp NULL,
    crt_host varchar(100) NULL,
    upd_user varchar(100) NULL,
    upd_name varchar(50) NULL,
    upd_time timestamp NULL,
    upd_host varchar(100) NULL,
    CONSTRAINT state_machine_category_pkey PRIMARY KEY (id)
);


-- state_machine_node definition

-- Drop table

-- DROP TABLE state_machine_node;

CREATE TABLE state_machine_node (
    id varchar(36) NOT NULL,
    code varchar(50) NULL,
    "name" varchar(100) NULL,
    "type" varchar(50) NULL,
    template_version_id varchar(50) NULL,
    enter_actions varchar(500) NULL,
    exit_actions varchar(500) NULL,
    config text NULL,
    CONSTRAINT state_machine_node_pkey PRIMARY KEY (id)
);


-- state_machine_node_auth definition

-- Drop table

-- DROP TABLE state_machine_node_auth;

CREATE TABLE state_machine_node_auth (
    id varchar(36) NOT NULL,
    node_id varchar(50) NULL,
    auth_type varchar(50) NULL,
    "type" varchar(50) NULL,
    choiced_id varchar(100) NULL,
    CONSTRAINT state_machine_node_auth_pkey PRIMARY KEY (id)
);


-- state_machine_template definition

-- Drop table

-- DROP TABLE state_machine_template;

CREATE TABLE state_machine_template (
    id varchar(36) NOT NULL,
    code varchar(50) NULL,
    descri varchar(1000) NULL,
    category_id varchar(50) NULL,
    is_enabled varchar(1)  DEFAULT 0,
    is_deleted varchar(1)  DEFAULT 0,
    crt_user varchar(50) NULL,
    crt_name varchar(50) NULL,
    crt_time timestamp NULL,
    crt_host varchar(100) NULL,
    upd_user varchar(100) NULL,
    upd_name varchar(50) NULL,
    upd_time timestamp NULL,
    upd_host varchar(100) NULL,
    "name" varchar(100) NULL,
    interceptors varchar(500) NULL,
    config text NULL,
    CONSTRAINT state_machine_template_pkey PRIMARY KEY (id)
);


-- state_machine_template_version definition

-- Drop table

-- DROP TABLE state_machine_template_version;

CREATE TABLE state_machine_template_version (
    id varchar(36) NOT NULL,
    template_id varchar(50) NULL,
    version_no int8 NULL,
    is_enabled varchar(1) NULL,
    is_deleted varchar(1) NULL,
    crt_user varchar(50) NULL,
    crt_name varchar(50) NULL,
    crt_time timestamp NULL,
    crt_host varchar(100) NULL,
    upd_user varchar(100) NULL,
    upd_name varchar(50) NULL,
    upd_time timestamp NULL,
    upd_host varchar(100) NULL,
    description varchar(500)  NULL,
    version_name varchar(200) NULL,
    config text NULL,
    CONSTRAINT state_machine_version_pkey PRIMARY KEY (id)
);


-- state_machine_trans_branch definition

-- Drop table

-- DROP TABLE state_machine_trans_branch;

CREATE TABLE state_machine_trans_branch (
    id varchar(36) NOT NULL,
    trans_id varchar(50) NULL,
    check_express varchar(100) NULL,
    target_node_id varchar(50) NULL,
    priority int4 NULL,
    is_default varchar(1) NULL,
    code varchar(50) NULL,
    "name" varchar(200) NULL,
    check_tips varchar(200) NULL,
    CONSTRAINT state_machine_trans_branch_pkey PRIMARY KEY (id)
);


-- state_machine_trans_conditon definition

-- Drop table

-- DROP TABLE state_machine_trans_conditon;

CREATE TABLE state_machine_trans_conditon (
    id varchar(36) NOT NULL,
    miss_action varchar(50) NULL,
    check_condition varchar(100) NULL,
    check_express varchar(100) NULL,
    check_tips varchar(50) NULL,
    target_node_id varchar(50) NULL,
    trans_id varchar(50) NULL,
    CONSTRAINT state_machine_trans_conditon_pkey PRIMARY KEY (id)
);


-- state_machine_trans_conf definition

-- Drop table

-- DROP TABLE state_machine_trans_conf;

CREATE TABLE state_machine_trans_conf (
    code varchar(50) NULL,
    id varchar(36) NOT NULL,
    "name" varchar(100) NULL,
    template_version_id varchar(50) NULL,
    is_auto varchar(50) NULL,
    "type" varchar(50) NULL,
    source_node_id varchar(50) NULL,
    target_node_id varchar(50) NULL,
    event_code varchar(50) NULL,
    error_action varchar(50) NULL,
    config text NULL,
    CONSTRAINT state_machine_trans_conf_pkey PRIMARY KEY (id)
);


-- state_machine_trans_trig definition

-- Drop table

-- DROP TABLE state_machine_trans_trig;

CREATE TABLE state_machine_trans_trig (
    id varchar(36) NOT NULL,
    trans_id varchar(50) NULL,
    "action" varchar(500) NULL,
    CONSTRAINT state_machine_trans_trig_pkey PRIMARY KEY (id)
);


CREATE TABLE state_machine_audit_note (
      id varchar(100) NOT NULL, -- 主键id
      transaction_id varchar(100) NULL, -- 业务id
      node_id varchar(100) NULL, -- 节点id
      node_name varchar(100) NULL, -- 节点名称
      action_key varchar(100) NULL, -- 操作类型
      action_name varchar(100) NULL, -- 操作名称
      audit_note varchar(2000) NULL, -- 操作意见/备注
      expecter_id varchar(100) NULL, -- 期望操作人用户Id
      status varchar(100) NULL, -- 状态(done-已操作,init-未操作)
      task_id varchar(100) NULL, -- 流程id
      is_deleted varchar(4) NULL, -- 是否删除
      crt_user varchar(100) NULL, -- 创建人
      crt_name varchar(100) NULL, -- 创建人姓名
      crt_host varchar(100) NULL, -- 创建人主机
      crt_time timestamp NULL, -- 创建时间
      upd_user varchar(100) NULL, -- 更新人
      upd_name varchar(100) NULL, -- 更新人姓名
      upd_host varchar(100) NULL, -- 更新人主机
      upd_time timestamp NULL, -- 更新时间
      node_code varchar(100) NULL, -- 节点编码
      statemachine_code varchar(100) NULL, -- 状态机编码
      expecter_account varchar(100) NULL, -- 期望操作人用户账号
      CONSTRAINT state_machine_audit_note_pk PRIMARY KEY (id)
);
COMMENT ON TABLE state_machine_audit_note IS '状态机审批记录表';

-- Column comments

COMMENT ON COLUMN state_machine_audit_note.id IS '主键id';
COMMENT ON COLUMN state_machine_audit_note.transaction_id IS '业务id';
COMMENT ON COLUMN state_machine_audit_note.node_id IS '节点id';
COMMENT ON COLUMN state_machine_audit_note.node_name IS '节点名称';
COMMENT ON COLUMN state_machine_audit_note.action_key IS '操作类型';
COMMENT ON COLUMN state_machine_audit_note.action_name IS '操作名称';
COMMENT ON COLUMN state_machine_audit_note.audit_note IS '操作意见/备注';
COMMENT ON COLUMN state_machine_audit_note.expecter_id IS '期望操作人用户Id';
COMMENT ON COLUMN state_machine_audit_note.status IS '状态(done-已操作,init-未操作)';
COMMENT ON COLUMN state_machine_audit_note.task_id IS '流程id';
COMMENT ON COLUMN state_machine_audit_note.is_deleted IS '是否删除';
COMMENT ON COLUMN state_machine_audit_note.crt_user IS '创建人';
COMMENT ON COLUMN state_machine_audit_note.crt_name IS '创建人姓名';
COMMENT ON COLUMN state_machine_audit_note.crt_host IS '创建人主机';
COMMENT ON COLUMN state_machine_audit_note.crt_time IS '创建时间';
COMMENT ON COLUMN state_machine_audit_note.upd_user IS '更新人';
COMMENT ON COLUMN state_machine_audit_note.upd_name IS '更新人姓名';
COMMENT ON COLUMN state_machine_audit_note.upd_host IS '更新人主机';
COMMENT ON COLUMN state_machine_audit_note.upd_time IS '更新时间';
COMMENT ON COLUMN state_machine_audit_note.node_code IS '节点编码';
COMMENT ON COLUMN state_machine_audit_note.statemachine_code IS '状态机编码';
COMMENT ON COLUMN state_machine_audit_note.expecter_account IS '期望操作人用户账号';

ALTER TABLE state_machine_task ADD approval_account varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.approval_account IS '当前操作人域账号';
COMMENT ON COLUMN state_machine_task.approval_user IS '当前操作人用户id';

ALTER TABLE state_machine_node ADD audit_type varchar(100) NULL;
COMMENT ON COLUMN state_machine_node.audit_type IS '审核类型(标准/会审)';

ALTER TABLE state_machine_node ADD biz_status_code varchar(100) NULL;
COMMENT ON COLUMN state_machine_node.biz_status_code IS '业务状态编码';

ALTER TABLE state_machine_task ADD source_state_label varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.source_state_label IS '转化前状态名称';
ALTER TABLE state_machine_task ADD target_state_label varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.target_state_label IS '目标状态名称';
ALTER TABLE state_machine_task ADD final_state_label varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.final_state_label IS '最终状态名称';

ALTER TABLE state_machine_task ADD current_state_label varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.current_state_label IS '状态机现任状态名称';

ALTER TABLE state_machine_task ADD template_version_id varchar(64) NULL;
COMMENT ON COLUMN state_machine_task.template_version_id IS '状态机模板版本标识';

update state_machine_task set parent_id =-1 where parent_id is null ;
update state_machine_task set active_state =1 where active_state is null ;



CREATE TABLE state_machine_task_his (
         id varchar(36) NOT NULL, -- 主键
         def_id varchar(36) NOT NULL, -- 状态机定义
         transaction_id varchar(256) NOT NULL, -- 业务事务ID
         crt_user varchar(100) NULL, -- 创建人
         crt_name varchar(100) NULL, -- 创建人姓名
         crt_host varchar(100) NULL, -- 创建主机
         crt_time timestamp NULL, -- 创建时间
         upd_user varchar(100) NULL, -- 最后更新人
         upd_name varchar(100) NULL, -- 最后更新人姓名
         upd_host varchar(100) NULL, -- 最后更新主机
         upd_time timestamp NULL, -- 最后更新时间
         start_time timestamp NULL, -- 开始时间
         task_id varchar(100) NULL, -- 执行实例ID
         source_state_code varchar(256) NULL, -- 开始节点编码
         source_state_name varchar(256) NULL, -- 开始节点名称
         target_state_code varchar(256) NULL, -- 结束节点编码
         target_state_name varchar(256) NULL, -- 结束节点名称
         parent_task_id varchar(100) NULL, -- 父执行实例ID
         end_time timestamp NULL, -- 结束时间
         event_code varchar(256) NULL, -- 操作事件编码
         event_name varchar(256) NULL, -- 操作事件名称
         assignee varchar(2000) NULL, -- 签收人或被委托-实际操作人
         owner varchar(2000) NULL, -- 实际签收人,任务的拥有者
         active_type varchar(100) NULL, -- 当前节点类型(suspend/splitNode/joinNode)
         PRIMARY KEY (id)
);

COMMENT ON COLUMN state_machine_task_his.id IS '主键';
COMMENT ON COLUMN state_machine_task_his.def_id IS '状态机定义';
COMMENT ON COLUMN state_machine_task_his.transaction_id IS '业务事务ID';
COMMENT ON COLUMN state_machine_task_his.crt_user IS '创建人';
COMMENT ON COLUMN state_machine_task_his.crt_name IS '创建人姓名';
COMMENT ON COLUMN state_machine_task_his.crt_host IS '创建主机';
COMMENT ON COLUMN state_machine_task_his.crt_time IS '创建时间';
COMMENT ON COLUMN state_machine_task_his.upd_user IS '最后更新人';
COMMENT ON COLUMN state_machine_task_his.upd_name IS '最后更新人姓名';
COMMENT ON COLUMN state_machine_task_his.upd_host IS '最后更新主机';
COMMENT ON COLUMN state_machine_task_his.upd_time IS '最后更新时间';
COMMENT ON COLUMN state_machine_task_his.start_time IS '开始时间';
COMMENT ON COLUMN state_machine_task_his.task_id IS '执行实例ID';
COMMENT ON COLUMN state_machine_task_his.source_state_code IS '开始节点编码';
COMMENT ON COLUMN state_machine_task_his.source_state_name IS '开始节点名称';
COMMENT ON COLUMN state_machine_task_his.target_state_code IS '结束节点编码';
COMMENT ON COLUMN state_machine_task_his.target_state_name IS '结束节点名称';
COMMENT ON COLUMN state_machine_task_his.parent_task_id IS '父执行实例ID';
COMMENT ON COLUMN state_machine_task_his.end_time IS '结束时间';
COMMENT ON COLUMN state_machine_task_his.event_code IS '操作事件编码';
COMMENT ON COLUMN state_machine_task_his.event_name IS '操作事件名称';
COMMENT ON COLUMN state_machine_task_his.assignee IS '签收人或被委托-实际操作人';
COMMENT ON COLUMN state_machine_task_his.owner IS '实际签收人,任务的拥有者';
COMMENT ON COLUMN state_machine_task_his.active_type IS '当前节点类型(suspend/splitNode/joinNode)';


ALTER TABLE state_machine_task ADD parent_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.parent_id IS '父实例ID';

ALTER TABLE state_machine_task ADD active_type varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.active_type IS '当前节点类型(suspend/splitNode/joinNode)';

ALTER TABLE state_machine_task ADD active_state varchar(1) NULL;
COMMENT ON COLUMN state_machine_task.active_state IS '当前节点状态(1-激活 0-挂起)';

ALTER TABLE state_machine_task ADD start_time timestamp NULL;
COMMENT ON COLUMN state_machine_task.start_time IS '当前节点进入时间';

ALTER TABLE state_machine_task ADD process_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.process_id IS '当前节点状态(1-激活 0-挂起)';

ALTER TABLE state_machine_task ADD tenant_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.tenant_id IS '租户id';

ALTER TABLE state_machine_task ADD title varchar(1024) NULL;
COMMENT ON COLUMN state_machine_task.title IS '流程标题';

ALTER TABLE state_machine_task ADD biz_type varchar(4000) NULL;
COMMENT ON COLUMN state_machine_task.biz_type IS '业务标识';

ALTER TABLE state_machine_task_log ADD p_task_id varchar NULL;
COMMENT ON COLUMN state_machine_task_log.p_task_id IS '父实例id';

ALTER TABLE state_machine_task_log ADD process_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_task_log.process_id IS '流程实例id';

ALTER TABLE state_machine_trans_conditon ADD check_type varchar(1000) NULL;
COMMENT ON COLUMN state_machine_trans_conditon.check_type IS '条件类型';

ALTER TABLE state_machine_trans_branch ADD check_type varchar(1000) NULL;
COMMENT ON COLUMN state_machine_trans_branch.check_type IS '条件类型';


CREATE TABLE state_machine_task_error (
       id varchar(36) NOT NULL, -- 主键
       task_id varchar(36) NOT NULL, -- 状态机任务实例ID
       machine_code varchar(256) NULL, -- 状态机编码
       event_name varchar(256) NULL, -- 事件编码
       request_body text NULL, -- 请求体
       response_body text NULL, -- 响应体
       op_user varchar(100) NULL, -- 操作人ID
       op_name varchar(100) NULL, -- 操作人名称
       op_time timestamp NULL, -- 操作时间
       crt_user varchar(100) NULL, -- 创建人
       crt_name varchar(100) NULL, -- 创建人姓名
       crt_host varchar(100) NULL, -- 创建主机
       crt_time timestamp NULL, -- 创建时间
       upd_user varchar(100) NULL, -- 最后更新人
       upd_name varchar(100) NULL, -- 最后更新人姓名
       upd_host varchar(100) NULL, -- 最后更新主机
       upd_time timestamp NULL, -- 最后更新时间
       process_id varchar(100) NULL,
       error_summary varchar(4000) NULL, -- 错误概要
       error_info text NULL, -- 详细错误
       error_type varchar(256) NULL, -- 错误类型
       event_label varchar(256) NULL, -- 事件名称
       PRIMARY KEY (id)
);

COMMENT ON COLUMN state_machine_task_error.id IS '主键';
COMMENT ON COLUMN state_machine_task_error.task_id IS '状态机任务实例ID';
COMMENT ON COLUMN state_machine_task_error.machine_code IS '状态机编码';
COMMENT ON COLUMN state_machine_task_error.event_name IS '事件编码';
COMMENT ON COLUMN state_machine_task_error.request_body IS '请求体';
COMMENT ON COLUMN state_machine_task_error.response_body IS '响应体';
COMMENT ON COLUMN state_machine_task_error.op_user IS '操作人ID';
COMMENT ON COLUMN state_machine_task_error.op_name IS '操作人名称';
COMMENT ON COLUMN state_machine_task_error.op_time IS '操作时间';
COMMENT ON COLUMN state_machine_task_error.crt_user IS '创建人';
COMMENT ON COLUMN state_machine_task_error.crt_name IS '创建人姓名';
COMMENT ON COLUMN state_machine_task_error.crt_host IS '创建主机';
COMMENT ON COLUMN state_machine_task_error.crt_time IS '创建时间';
COMMENT ON COLUMN state_machine_task_error.upd_user IS '最后更新人';
COMMENT ON COLUMN state_machine_task_error.upd_name IS '最后更新人姓名';
COMMENT ON COLUMN state_machine_task_error.upd_host IS '最后更新主机';
COMMENT ON COLUMN state_machine_task_error.upd_time IS '最后更新时间';
COMMENT ON COLUMN state_machine_task_error.error_summary IS '错误概要';
COMMENT ON COLUMN state_machine_task_error.error_info IS '详细错误';
COMMENT ON COLUMN state_machine_task_error.error_type IS '错误类型';
COMMENT ON COLUMN state_machine_task_error.event_label IS '事件名称';

ALTER TABLE state_machine_template ADD product_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_template.product_id IS '产品id';
ALTER TABLE state_machine_template ADD tenant_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_template.tenant_id IS '租户id';

ALTER TABLE state_machine_task ADD product_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.product_id IS '产品id';

update state_machine_task set parent_id =-1 where parent_id is null ;
update state_machine_task set active_state =1 where active_state is null ;

ALTER TABLE state_machine_task ADD biz_name varchar(500) NULL;
COMMENT ON COLUMN state_machine_task.biz_name IS '业务单据名称';

ALTER TABLE state_machine_task_error ADD transaction_id varchar(64) NULL;

ALTER TABLE state_machine_task_error ADD biz_type varchar(100) NULL;

ALTER TABLE state_machine_task_error ADD biz_name varchar(1000) NULL;

ALTER TABLE state_machine_task_error ADD title varchar(1000) NULL;

ALTER TABLE state_machine_task_error ADD class_id varchar(32) NULL;

ALTER TABLE state_machine_task_error ADD serial_number varchar(100) NULL;

ALTER TABLE state_machine_task_error ADD lifecycle varchar(32) NULL;

ALTER TABLE state_machine_task_error ADD dversion_no numeric(8) NULL;

ALTER TABLE state_machine_task_error ADD p_class_id varchar(32) NULL;

ALTER TABLE state_machine_task_error ADD description varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD change_id varchar(32) NULL;

ALTER TABLE state_machine_task_error ADD release_date timestamp NULL;

ALTER TABLE state_machine_task_error ADD is_enabled varchar(4) NULL;

ALTER TABLE state_machine_task_error ADD is_deleted varchar(4) NULL;

ALTER TABLE state_machine_task_error ADD tenant_id varchar(64) NULL;

ALTER TABLE state_machine_task_error ADD product_id varchar(64) NULL;

ALTER TABLE state_machine_task_error ADD app_id varchar(64) NULL;

ALTER TABLE state_machine_task_error ADD org_id varchar(64) NULL;

ALTER TABLE state_machine_task_error ADD wf_relation_id varchar(256) NULL;

ALTER TABLE state_machine_task_error ADD wf_instance_id varchar(256) NULL;

ALTER TABLE state_machine_task_error ADD current_handler varchar(256) NULL;

ALTER TABLE state_machine_task_error ADD current_node varchar(256) NULL;

ALTER TABLE state_machine_task_error ADD current_handler_name varchar(256) NULL;

ALTER TABLE state_machine_task_error ADD current_node_name varchar(256) NULL;

ALTER TABLE state_machine_task_error ADD attr1 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr2 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr3 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr4 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr5 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr6 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr7 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr8 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr9 varchar(1024) NULL;

ALTER TABLE state_machine_task_error ADD attr10 varchar(1024) NULL;



CREATE TABLE IF NOT EXISTS state_machine_todo (
     id varchar(64) NOT NULL, -- 主键
     task_id varchar(64) NULL, -- 流程实例id
     url varchar(2048) NULL, -- 待办链接
     current_state varchar(1000) NULL, -- 当前节点编码
     current_state_label varchar(1000) NULL, -- 当前节点名称
     transaction_id varchar(64) NULL, -- 单据id
     crt_time timestamp NULL, -- 创建时间
     product_id varchar(64) NULL, -- 产品id
     tenant_id varchar(64) NULL, -- 租户id
     module_id varchar(1024) NULL, -- 模块标识
     title varchar(2048) NULL, -- 待办标题
     doc_creator_id varchar(256) NULL, -- 流程创建人标识
     doc_create_name varchar(256) NULL, -- 流程创建人姓名
     todo_type varchar(256) NULL, -- 待办类型(通知、待审)
     "level" varchar(64) NULL, -- 紧急程度
     wf_number varchar(64) NULL, -- 流程编码
     CONSTRAINT state_machine_todo_pk PRIMARY KEY (id)
);

COMMENT ON COLUMN state_machine_todo.id IS '主键';
COMMENT ON COLUMN state_machine_todo.task_id IS '流程实例id';
COMMENT ON COLUMN state_machine_todo.url IS '待办链接';
COMMENT ON COLUMN state_machine_todo.current_state IS '当前节点编码';
COMMENT ON COLUMN state_machine_todo.current_state_label IS '当前节点名称';
COMMENT ON COLUMN state_machine_todo.transaction_id IS '单据id';
COMMENT ON COLUMN state_machine_todo.crt_time IS '创建时间';
COMMENT ON COLUMN state_machine_todo.product_id IS '产品id';
COMMENT ON COLUMN state_machine_todo.tenant_id IS '租户id';
COMMENT ON COLUMN state_machine_todo.module_id IS '模块标识';
COMMENT ON COLUMN state_machine_todo.title IS '待办标题';
COMMENT ON COLUMN state_machine_todo.doc_creator_id IS '流程创建人标识';
COMMENT ON COLUMN state_machine_todo.doc_create_name IS '流程创建人姓名';
COMMENT ON COLUMN state_machine_todo.todo_type IS '待办类型(通知、待审)';
COMMENT ON COLUMN state_machine_todo."level" IS '紧急程度';
COMMENT ON COLUMN state_machine_todo.wf_number IS '流程编码';

CREATE TABLE IF NOT EXISTS state_machine_todo_done (
      id varchar NOT NULL,
      todo_id varchar(64) NULL, -- 待办id
      handler_user varchar(64) NULL, -- 用户id
      handler_user_name varchar NULL, -- 用户姓名
      finish_time timestamp NULL, -- 完成时间
      CONSTRAINT state_machine_todo_done_pk PRIMARY KEY (id)
);

COMMENT ON COLUMN state_machine_todo_done.todo_id IS '待办id';
COMMENT ON COLUMN state_machine_todo_done.handler_user IS '用户id';
COMMENT ON COLUMN state_machine_todo_done.handler_user_name IS '用户姓名';
COMMENT ON COLUMN state_machine_todo_done.finish_time IS '完成时间';


CREATE TABLE IF NOT EXISTS state_machine_todo_target (
    id varchar(64) NOT NULL, -- 主键
    todo_id varchar(64) NULL, -- 待办id
    handler_user varchar(64) NULL,
    handler_user_name varchar(256) NULL, -- 用户姓名
    CONSTRAINT state_machine_todo_target_pk PRIMARY KEY (id)
);

COMMENT ON COLUMN state_machine_todo_target.id IS '主键';
COMMENT ON COLUMN state_machine_todo_target.todo_id IS '待办id';
COMMENT ON COLUMN state_machine_todo_target.handler_user_name IS '用户姓名';


update state_machine_task_log set process_id = task_id,p_task_id ='-1' where process_id is null and p_task_id is null;
update state_machine_task set active_type = 'suspend' where active_type is null ;
ALTER TABLE state_machine_task ADD wf_number varchar(64) NULL;
COMMENT ON COLUMN state_machine_task.wf_number IS '流程编码';
ALTER TABLE state_machine_task ADD form_instance_url varchar(2048) NULL;
COMMENT ON COLUMN state_machine_task.form_instance_url IS '流程编码';

ALTER TABLE ois.state_machine_task ALTER COLUMN response_body TYPE text;
ALTER TABLE ois.state_machine_task ALTER COLUMN request_body TYPE text;

ALTER TABLE ois.state_machine_task_log ALTER COLUMN response_body TYPE text;
ALTER TABLE ois.state_machine_task_log ALTER COLUMN request_body TYPE text;

ALTER TABLE state_machine_template ADD product_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_template.product_id IS '产品id';


ALTER TABLE state_machine_task ADD app_id varchar(100) NULL;
COMMENT ON COLUMN state_machine_task.app_id IS '应用id';

update state_machine_task t set app_id = oc.app_id from obj_class oc where oc.id  = t.biz_type and t.app_id is null;


ALTER TABLE state_machine_template_version ADD is_editable varchar(1) NULL;
COMMENT ON COLUMN state_machine_template_version.is_editable IS '是否可编辑(增减节点和改变连线)';
依赖

springboot 2.+
更换或添加

<dependency>
    <groupId>com.cvte.csb</groupId>
    <artifactId>csb-statemachine-client</artifactId>
    <version>1.5.0.PLUS-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>com.cvte.csb</groupId>
    <artifactId>csb-statemachine-admin</artifactId>
    <version>1.5.0.PLUS-SNAPSHOT</version>
</dependency>
 <dependency>
     <groupId>com.cvte.csb</groupId>
     <artifactId>csb-statemachine-api</artifactId>
     <version>1.5.0.PLUS-SNAPSHOT</version>
 </dependency>

说明:如果依赖无法下载,提前配置依赖仓库

<repository>
    <id>jfrog-virtual</id>
    <name>artifactory-releases</name>
    <url>
        https://artifactory.gz.cvte.cn/artifactory/SR_maven_virtual/
    </url>
    <releases>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </releases>
    <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </snapshots>
</repository>
基础配置
csb:
  mybatis:
     basePackage: com.cvte.csb.statemachine.**.mapper
     xmlLocation: classpath*:mapper/*.xmlswagger:
  swagger:
     basePackage: com.cvte.csb.statemachine.admin.controller


# 数据源
spring:
  datasource: # 配置持久化
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql://pgtest002.gz.cvte.cn:5432/xxx
    username: xxx
    password: xxx
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x' from DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20
  redis: # 配置分布式锁
    host: redis-dev001.gz.cvte.cn
    password: xxxx
    database: 4


# 设置打印日志
logging:
  level:
    tk.mybatis: DEBUG
    org.mybatis: DEBUG
    com.cvte.csb: DEBUG


#配置信息获取如为非REST方式,忽略该项
  stateMachine.conf.url= 配置服务访问地址,有上下文的话需带

  #项目如果未部署CSB服务,此项忽略
  stateMachine.csb.url = csb服务访问地址,有上下文的话需带(如/LEGOX)

  csb.feignName = csb的服务名

#以下情况需增加appId和appSecret

#1.项目用户是4A体系,且已部署csb服务

#2.获取状态机配置信息时需带iac校验

  csb.iac.appId= xxx
  csb.iac.appSecret= xxx
流程启动
String transactionId = "单据id";
String statemachineCode = "状态机编码";
String classId = "表单模板id";
OperatingUser operatingUser = new OperatingUser();
operatingUser.setId("yeduanwang");
operatingUser.setAccount("yeduanwang");
operatingUser.setName("叶端旺");
CurrentContext.setCurrentOperatingUser(operatingUser);
ProcessInfoDTO processInfoDTO = new ProcessInfoDTO();
processInfoDTO.setTransactionId(transactionId);
processInfoDTO.setBizType(classId);
processInfoDTO.setTransactionId(transactionId);
processInfoDTO.setStateMachineCode(statemachineCode);
processInfoDTO.setWfNumber("流程编码");
//1、状态机启动
stateMachineService.startStateMachineSyncV2(processInfoDTO);
流程按钮
#指定用户的按钮获取
List<EventBtnDTO> btns = stateMachineService.getNextEventsV3("单据id", "域账号/ID");
审批操作
#审批
stateMachineService.dispatchEventV2("单据id","执行实例id,按钮中的taskId",event)

#转办
stateMachineService.updateApproverV2("单据id", "taskId",toApproverVo, fromApproverVo)
审批记录

两种集成方式:
1、前端包直接集成(https://kb.cvte.com/pages/viewpage.action?pageId=273316485)
2、自封装接口

        String transactionId = "3931599f96c64253af663b050f0ee412";
        FormInfoReq formInfoDTO = new FormInfoReq();
        formInfoDTO.setFormInstanceId(transactionId);
        //审批记录列表
        List<AuditNoteDTO> auditNoteDTOList = apiCommonService.getFormHandleLog(formInfoDTO);
//当前节点信息
List<CurrentNodeInfoDTO> currentNodesInfoList = apiCommonService.getCurrentNodesInfoList(formInfoDTO);
其他能力
#可驳回节点
stateMachineHistoryServiceImpl.getRefuseNodes("单据id","执行实例taskId")
#可重启节点
stateMachineHistoryServiceImpl.getRestartNodes("单据id","执行实例taskId")
配置缓存(选做)

问题:获取配置接口频繁调用,导致响应变慢。

解决办法
实现接口方法getConfig、saveConfig自定义缓存逻辑
实现类添加@Component,注入spring容器

@Component
     public class XXXConfCacheService implements ConfCacheService {

        @Override
        public StateMachineDbConfig getConfig(String machineCode, String versionNo) {
           return 获取缓存中的配置信息;
       }

       @Override
       public void saveConfig(String machineCode, String versionNo, StateMachineDbConfig config) {
           保存模板配置信息到缓存;
       }
     }
会审特殊配置(选做)

上帝事件跳入会审节点不触发会审初始化动作
解决办法:
拦截器继承抽象类 AbstractJointTrialInterceptor ,并调用 super.postStateChange(stateMachine,converter)
例:

@Component
   public class XxxInterceptor extends AbstractJointTrialInterceptor{
      ......
      @Override
      public void postStateChange(StateMachine stateMachine, Converter converter) {
             super.postStateChange(stateMachine,converter);
              .... 业务系统逻辑
      }
}
其他说明

内置事件

drafter_return          起草人撤回
handler_commission  处理人转办
drafter_abandon       起草人废弃
handler_refuse         处理人驳回
sys_wf_restart          流程重启
作者:叶端旺  创建时间:2024-05-09 08:47
最后编辑:叶端旺  更新时间:2024-12-27 15:01