1张黎明2020年7月金蝶云星空BOS专题中级课业务流程2Content010203业务流程介绍业务流程设计反写答疑0405单据转换业务流程使用063Content010203业务流程介绍定义架构图0405模块064业务流程介绍—定义1.单据之间的流转2.按照业务逻辑相互约束3.产生可以追查关联结果业务流程工作流5业务流程介绍—模块运行设计结果上下查全流程跟踪业务流程图单据关联配置转换规则反写规则业务流程图单据转换单据反写维护反写快照归档流程实例归档业务流程图配置6业务流程介绍—运行架构图7Content010203业务流程设计与使用单据关联配置反写规则配置0405转换规则配置06业务流程图设计常见问题8业务流程设计--单据关联配置9业务流程设计--转换规则配置10业务流程设计--转换规则配置11业务流程设计--反写规则配置12业务流程设计--业务流程图设计13常见问题--子单据体不能配置为关联实体子单据体不能配置为关联实体,否则在反写保存会报找不到属性错误14常见问题—单据转换不能配置同级多实体1.不能配置源单多个单据体中字段携带和目标单多个单据体中的字段有携带来源2.子单据体虽然可以配置多个,但只会携带第一个单据体第一行数据,携带错误。3.如果确实需要另外一个实体中的字段携带,可以把处理方式改成自定义,通过公式的形式携带,但只能携带第一行数据,因为两个实体没有对应关系。15常见问题—控制字段一定要有携带来源1.如果单据关联配置中设置了控制字段,则控制字段一定要有携带来源。16常见问题—反写规则不能删除1.反写规则只能禁用不能删除,除非没有运行过,否则在处理反写快照时会报反写规则存在错误。2.如果删除了报错,只能把反写规则加回去或者把反写快照中关联此反写规则的数据删除。3.反写规则中的字段也不能删除,并且不能配置非关联实体中的字段,除单据头外。17常见问题—自关联1.如果是自己关联自己,并且所有的单据都是来自自己,这个千万要注意,当关联的层数达到了某个阀值会导致整个系统崩溃,已经有好几家用户发生这样的情况了。2.如果是上面情况最好在配置转换规则的时候选择仅携带18Content010203单据转换触发操作选单运行过程0405下推运行过程06转换插件案例与常见问题下推运行时序图19单据转换—触发操作20单据转换—下推运行过程21单据转换--下推运行过程22单据转换—选单运行过程23单据转换--转换插件24单据转换--转换插件25单据转换—下推运行时序图26案例与常见问题—自定义下推实现按条件过滤和分组描述:在插件中调用下推接口,得到转换结果,并对结果进行处理的过程要点:1.下推参数的构建,源单内码(注意怎样按分录下推),目标单据类型,目标主组织等。2.插件中属性和事件中的参数,以及操作参数的理解和使用,怎样在插件中取和用。3.转换结果,理解结果结构和怎样处理。案例:实现功能:如果是列表按选择分录下推,维护界面按整单下推,分录的销售数量得大于10,并且不小于操作参数传入数量,销售数量大于100的合并成一单,100以下的合并成另外一单,结果直接保存或显示下推页面。实现步骤:1.在单据菜单和列表菜单增加生成单据B2.在维护插件中构建参数,调用下推接口,处理下推结果3.在转换插件中对数据进行过滤和分组(可以满足所有的入口调用)参考帖子:https://vip.kingdee.com/article/write?id=17084827案例与常见问题—拆单说明:这里指把一行数据拆成多行,或多单,比如销售出库按批号拆单,发货通知按锁库拆单等。要点:1.在转换插件关联关系创建后事件(OnAfterCreateLink)中处理,防止跳过了各种服务。2.注意拆分行的依据和被拆分的字段以及被拆分的关联字段。3.注意创建和更新关联数据包,如果被拆分的字段是控制字段,则需要更新关联数据包中的携带和反写。示例帖子:https://vip.kingdee.com/article/15869228案例与常见问题--多单据体携带说明:多单据体携带分为携带到一个实体,或携带到多个实体实现方式:方式1、通过转换插件,取原单另外一个实体数据包,自行解析赋值到目标单据实体方式2、配置转换规则,调用下推转换,得到另外一个目标数据包,然后合并数据包要点:1.在转换插件关联关系创建后事件(OnAfterCreateLink)中处理,防止跳过了各种服务。2.主要关联数据包的创建3.主要反写错误,多源单来源反写单据头时有可能报错示例帖子:https://vip.kingdee.com/article/17099929案例与常见问题--控制多次下推标题:如何控制多次下推?场景:1.销售数量已完成出库,控制再次出库2.采购数量已完成入库,控制再次入库解决方案:1.通过单据状态,选单条件策略配置条件,状态为XX不允许下推,反写规则达到某种条件后更新上游单据状态2.通过关联数量,选单条件策略配置条件,关联数量大于某某不允许下推,反写规则反写关联数量30案例与常见问题—为什么会拆单?超过了一万行拆单,这并不是真实的一万行分录数据,从数据库取到的连接行数量。1.检查是否存在大量的重复基础资料,通过导入,sql等加入的数据,FMasterId都相同?2.连接了其他单据体,插件加入了其他单据体字段,或选单策略加入了其他单据体字段。3.连接了子单据体,子单据体行数巨大。解决方案:1.调大拆单阀值2.禁用按1万行拆单参考帖子:https://vip.kingdee.com/article/17116631案例与常见问题—没有携带?1.检查字段的来源,携带,实体服务,还是插件,是否存在相互覆盖?2.分配型基础资料是否在使用组织下没有分配,或字段没有维护?3.多语言字段,是否勾选了允许携带。4.数据加载到下游单据时,是否有其他干预?5.字段是否支持,比如多选基础资料等32Content010203反写触发操作反写分配逻辑0405反写运行过程06能否反写逻辑反写运行时序图反写插件案例与常见问题33反写引擎--反写触发操作34反写引擎—反写运行过程35反写引擎—反写运行过程36反写引擎—反写分配37反写引擎—反写分配演示说明:1.单据A两分录,数量分别为10和202.合并下推产生单据B,单据B在下推单据C3.数量字段是控制字段,并且配置了关联主单据体控制字段映射4.单据C反写单据A反写规则分配上限为95.分配上限只在第一次分配有效38反写引擎—能否运行39反写引擎--反写插件40业务流程图—反写运行时序图41案例与常见问题—控制单据头反写一次标题:如何控制单据头只反写一次场景:适应情况,反写规则为累加或累减模式,单据头字段反写单据头字段参考帖子:https://vip.kingdee.com/people/eris-214740194442案例与常见问题--反写一些不支持的字段说明:一些特殊字段,比如多选基础资料字段,多选辅助资料字段,弹性域字段等是不支持反写的,需要支持一般有两种方式:一是使用反写引擎,配置一个反写规则,确保会走反写引擎,但没有实际意义,就像空操作一样,这样就不用去分析关联关系和取上游数据,直接在相关的反写插件事件中处理自定义逻辑。二是不走反写引擎,直接在单据操作事件中解析关联数据,根据关联数据取到上游数据包,在对上游数据包进行修改,使用此逻辑一般使用操作插件来处理。参考帖子:https://vip.kingdee.com/article/6934497807318835243案例与常见问题—自关联反写规则不执行场景:很多时候存在A->B->C1->C2这样的流程实例,C1执行了反写,然后不希望C2再去执行。解决方案:方案1.在C单据中加入源单类型字段,然后在所有以C为下游单据的反写规则中,配置反写条件加入源单类型不等于C。方案2.在C单据中加入源单类型字段,在反写插件反写前事件中判断源单类型是否都等于C,如果等于C就不反写。方案3.在C单据中加入源单类型字段,在反写后事件中对每一行进行验证,不符合反写的则把减掉反写值。44案例与常见问题—反写规则找到多个源单1.反写快照中的表名和当前反写节点中的表名大小写不一致2.存在多个来源实体,有反写单据头字段45案例与常见问题—为什么没有反写?一、能够重现1.对反写规则的条件和操作进行检查,是否都满足。2.对反写规则被反写字段进行检查,是否是关联实体上的字段。3.如果是跨级反写,对业务流程节点进行检查,是否中间断了等。4.是否已存在反写记录,并且跟历史反写值相等。5.是否存在自关联的情况,只反写最后那层,比如A1->A2->B1,则B1只能反写A2。二、不能够重现1.检查反写快照,确定是否反写过?反写过,一般是事后其他操作给覆盖了。2.查看上机操作日志,模拟用户操作,看是否能够重现?3.是否存在并发,取到相同的被反写数,被覆盖的情况。4.最后可以加上反写日志,记录反写过程,等下回发生再分析。46Content010203业务流程使用相关操作介绍相关接口介绍0405相关配置介绍06常见问题47业务流程使用--相关操作介绍48业务流程使用--相关参数配置49业务流程使用--相关接口接口类功能说明BusinessFlowServiceHelper.cs(web层)读写业务流程图元数据读写表定义,有写功能默认是增加还回BusinessFlowMetadataService.cs(app层)ConvertServiceHelper.cs(web层)调用下推接口,得到转换规则元数据,判断是否下推过,得到上下游单据ConvertService.cs(app层)BusinessFlowDataServiceHelper.cs(web层)流程实例,流程实例相关数据,都是以临时表的形式输出。https://vip.kingdee.com/article/71661049120113152BusinessFlowDataService.cs(app层)50常见问题—为什么联查不到?1.列表联查,默认是按单据头,关联主实体,过滤方案选中的实体进行关联查询2.维护界面联查是按整单进行关联查询3.如果列表页面和维护界面联查不一致,可以在列表选项参数中勾选上按整单查询4.如果在不同的单据上联查不一样,可以启用参数设置中的支持全流程跟踪跨实体查询51常见问题—怎样加快归档?参考帖子:https://vip.kingdee.com/article/17152452常见问题—调用联查接口参考帖子:https://vip.kingdee.com/article/7166104912011315253答疑时间54Thanksterimakasih感謝谢谢ありがとうขอบคุณ