工作流任务相关表

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

工作流任务相关表

老论坛迁移过来的知识

t_WF_PiBiMap:
工作流实例与业务单据关联关系。业务单据 :工作流实例 = (0 到1条) : (0 到 n条),单据可能存在多个实例,不是一一对应。

  • FObjectTypeId : 单据的FormId

  • FKeyValue : 单据内码

  • FProcInstId:业务流程实例内码


t_WF_ProcInst:
工作流实例表格。字段比较多,仅描述与任务相关的字段:

  • FProcInstId:表格主键:业务流程实例内码;

  • FNumber:业务流程实例编码,单据编码 + 时间流水;

  • FProcDefId:采用的流程图内码;

  • FVersionId:采用的流程图版本内码;

  • FOriginatorId:发起人;

  • FOriginatorPostId:发起人岗位;

  • FFailureMessage:如果流程实例运行失败挂起,挂起原因;

  • FFailureOutInfo:运行失败,错误详细堆栈;

... 其他略

t_WF_ActInst:
工作流节点实例表格:工作流有消息、审核、服务等节点,各节点实例都会存储在这个表格。

  • FActInstId:表格主键,节点实例内码;

  • FProcInstId:外键,流程实例内码;

  • FActivityId:节点在流程图中的编号。编号对应的节点,须打开xml查看 ( t_WF_ProcDef.FDefinitionXML );

  • FBackActInstIds:本节点实例的来源路线,记录从开始节点到本节点,经过的节点实例;

  • FStatus:本节点的状态:0 = 准备;1 = 完成;2 = 等待;3 = 舍弃;4 = 失败;

... 其他略

t_WF_Assign
工作流任务表格,记录工作流实例产生的全部任务。

  • FAssignId:表格主键,任务内码;

  • FProcInstId:外键,流程实例内码;

  • FActInstId:外键,任务对应的节点实例;

  • FSenderId:任务发送人;

  • FStatus:任务状态:0 = 任务刚分配;1 = 任务已处理;

... 其他略

t_WF_Receiver
工作流任务接受人。本表不区分哪些人处理了任务,仅记录哪些人收到过任务。
不是所有的任务接受人都需处理任务。非会签节点,多人收到任务后,其中一人处理了,任务即结束,其他人不可再处理任务。

  • FId:表格主键,无意义;

  • FAssignId:外键,任务内码;

  • FReceiverId:接受人;

  • FTitle:任务标题;

  • FContent:任务内容;


t_WF_ApprovalAssign:
工作流任务详情。记录工作流任务的附带信息,比如有哪些审批项、是否允许转发等。

  • FApprovalAssignId:表格主键,任务详情内码,与任务一一对应;

  • FAssignId:外键,任务内码;

  • FObjectTypeId:单据FormId;

  • FKeyValue:单据内码;

  • FPolicyXML:审批策略(是否允许会签);

  • FApprovalAction:处理人可选的审批项;

  • FResult:最终审批结果,处理人选择的审批项;

  • FDisposition:处理人录入的审批意见;

  • FOperationNumber:审批同时,执行的单据操作;

... 其他略

t_WF_ApprovalItem:
工作流任务处理记录:记录各个任务处理人的详细处理记录;

  • FApprovalItemId:表格主键,处理记录内码;

  • FApprovalAssignId:表格外键,对应的任务详情内码;

  • FCompletedTime:任务处理时间;

  • FStatus:处理状态:0 = 未完成;1 = 已完成;3 = 已转发;4 = 等待排队 (按顺序会签);

  • FReceiverId:处理人;

  • FReceiverPostId:处理人岗位;

  • FActionResult:处理人选择的审批项;

  • FDisposition:处理人填写的审批意见;

注意:如果需要查询归档表里的数据,需要在上述表名后面加HIS ,例如 :T_WF_ASSIGN的历史表 T_WF_ASSIGNHIS

T_WF_PROCINST --工作流实例 

FCREATETIME --创建时间 

FCOMPLETETIME --完成时间 

FMODIFYTIME --修改时间 

T_WF_ACTINST FCREATETIME --创建时间 

FCOMPLETEDTIME --完成时间 

T_WF_ASSIGN --工作流任务 

FCREATETIME --创建时间 

FCOMPLETEDTIME --完成时间 

 T_WF_APPROVALITEM  --工作流任务处理 

FOPENTIME --打开时间 

FCOMPLETEDTIME  --完成时间 

 T_WF_ACTIONEVENTLOG --工作流动作日志 

FEXECUTEDTIME --执行时间


如上是各个表格介绍,下面是读取某单据全部任务极其处理人处理状态的示意SQL,演示如何关联各表格:
SELECT t_WF_ActInst.FActivityId,
       t_WF_ApprovalAssign.FResult, t_WF_ApprovalAssign.FDisposition,
       t_WF_Receiver.FReceiverId, t_SEC_User.FName,
       t_WF_ApprovalItem.FStatus, t_WF_ApprovalItem.FActionResult,
       t_WF_ApprovalItem.FDisposition, t_WF_ApprovalItem.FCompletedTime
  FROM t_WF_PiBiMap
INNER JOIN t_WF_ProcInst ON (t_WF_ProcInst.FProcInstId = t_WF_PiBiMap.FProcInstId)
INNER JOIN t_WF_ActInst on (t_WF_ActInst.FProcInstId = t_WF_ProcInst.FProcInstId)
INNER JOIN t_WF_Assign on (t_WF_Assign.FActInstId = t_WF_ActInst.FActInstId)
INNER JOIN t_WF_Receiver on (t_WF_Receiver.FAssignId = t_WF_Assign.FAssignId)
INNER JOIN t_SEC_User ON (t_SEC_User.FUserId = t_WF_Receiver.FReceiverId)
INNER JOIN t_WF_ApprovalAssign on (t_WF_Assign.FAssignId = t_WF_ApprovalAssign.FAssignId)
  LEFT JOIN t_WF_ApprovalItem on (t_WF_ApprovalItem.FApprovalAssignId = t_WF_ApprovalAssign.FApprovalAssignId
                                  AND t_WF_ApprovalItem.FReceiverId = t_WF_Receiver.FReceiverId)
WHERE t_WF_PiBiMap.FObjectTypeId = 'PUR_PurchaseOrder'
   AND FKeyValue = '100000'

SQL 说明与思考:

  • 输出的字段:节点编号,任务总的处理结果,任务总的处理意见,任务接受人,接受人名称,接受人处理状态,接受人处理结果,接受人处理意见,接受人处理时间。

  • 与表格 t_WF_ApprovalItem 的关联,采用了复合条件,而且使用Left Join,但与其他表的关联,用的是Inner Join,自行思考下为什么?

    任务接收人,如果从来没有打开过任务消息,默认是不会在t_WF_ApprovalItem表中,产生记录的。

    这个主要是为了减少垃圾数据:有些客户现场,配置的节点参与人过多,整个部门几十号人都会收到任务,实际却只需要一个人处理。其他无关的人,就不需要到t_WF_ApprovalItem表插入数据。


几个状态字段的枚举值说明

1. T_WF_PROCINST.FStatus :
0 = 准备;
1 = 完成;
2 = 运行中;
3 = 挂起;
4 = 终止;
5 = 暂停;

2.T_WF_ACTINST.FSTATUS:
0 = 准备;
1 = 完成;
2 = 挂起;
3 = 舍弃;
4 = 失败;

3.T_WF_ASSIGN.FSTATUS
0 = 分配;
1 = 完成;

4.T_WF_APPROVALITEM.FSTATUS
0 = 待处理;
1 = 完成;
3 = 转发;
4 = 排队等待;

工作流任务相关表

老论坛迁移过来的知识t_WF_PiBiMap: 工作流实例与业务单据关联关系。业务单据 :工作流实例 = (0 到1条) : (0 到 n条),单据可能...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息