业务流程问题1--正确修改表定义中的表名原创
金蝶云社区-eris
eris
25人赞赏了该文章 264次浏览 未经作者许可,禁止转载编辑于2023年12月21日 17:44:06

一、现象

当单据进行流转时,后台会根据formId,实体key,和实体对应的表名在表定义中产生一条记录,此记录就是这些数据的关系,此记录中的表名用来在Lk表,流程实例节点表,反写快照表中,一旦产生此实体对应的表名就固定了,不会因实体修改表名而改变,如果需要改变,则需要把相关的数据删除,再重启IIS才能生效,大概的做法:

1、把已产生关联的下游单据全部删除(下游单据删除会删除下游单据的Lk表数据,流程实例,反写快照数据)

2、修改定义表(t_bf_tableDefine)中的表编码

3、重启IIS.

如果无法把相关的下游单据删除,则需要修改(Lk表数据,流程实例,反写快照数据)的数据,否则下游单据操作会报错,如下面的错误:

1)同一个反写规则找到了多个源单实体,反写源单不明确,无法反写!

2)

调用堆栈: Server stack trace:   在 Kingdee.BOS.App.Core.BusinessFlow.WriteBackEngine.LoadSrcBillPKValues(Entity sourceEntity, List`1 sourceEntryIds)

image.png

二、说明

流程节点和反写快照中的表名都是来自表定义,如果表定义中的表编码修改,则需要同步修改此两者中的数据,反写快照还需要修改备份和归档中的数据,而且反写快照是使用xml存储,现在是加密存储,非常麻烦,所以强烈建议不要修改表名。

三、修改最新反写快照中的表名

1)找到对应的反写快照,取出fxmlbody中的数据

select * from t_bf_instanceSnap  where FCID = 'xxxxx'

2)反写数据不包含<xzip>节点,取节点中的数据解压

image.png

3)解密数据,替换相应的表名

在线解压地址:https://www.bejson.com/encrypt/gzip/

image.png

4)替换后再进行gzip加密,注意加密时不要带xml声明 “<?xml version="1.0" encoding="utf-16"?>”

image.png

5)加密文本加上<xzip>节点,更新到反写快照表上

update t_bf_instanceSnap set  FXMLBODY='<xzip>H4sIAAAAAAAAA9WU30rDMBTG730KH2BZkjZ/DITcdTgQhHboZUnTUyx2da6ture3TTt1u5uMwS6SHDgn33dyfhCdvAC0Rsdvn43fjV7m41pllWnTKE6jrw3UDcRQrrOobrc7jYecjvoqzuQdIxoPscY/W/JXZHUg8t5B0x7LUMECzg9kvMRimd9io5/jroJmOr2wLYBb6nKUAc0RE4ohJaRDVICUQeYCAnZqJR4uJv5pT7YyQjIy7zseYo2nBPZV948bk9gP0HiI+uRo9+sKjDvliEK8cBQxIgVSBRCU5cyygoaFU/Jcrnj/aOxr/4mGXhMaGobs8mhOdz0PmuCa0HCq5gG/NJrTXY/Q4PFf67XHYXoa3baBNdTtbNEPtGx36UNZv86Y5JzK/Rj9r3jzDUfNUWUeBQAA</xzip>' where FCID = 'xxxxx'

四、具体参考

1、[单据反写]---如何修复反写快照中的表名






赞 25