《使用EAS+BOS过程中常见问题.doc》由会员分享,可在线阅读,更多相关《使用EAS+BOS过程中常见问题.doc(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、BOS工具常见问题集功能点使用问题解答2环境使用类问题解答3事件类问题解答8发布类问题解答8部署类问题解答12集成模块-单据转换问题13集成模块-权限问题14集成模块-工作流问题14集成模块-预警平台问题15集成模块-报表问题16集成模块-组织架构16代码应用问题18升级参考步骤21版本遗留缺陷24一、功能点使用问题解答1、业务建模工具所定义的单据是怎么调整顺序的?在业务建模工具视图选中该单据,菜单【业务单元】【录入顺序】用来调整编辑界面的输入顺序,也可以调整分录字段的显示顺序;菜单【业务单元】【查询顺序】用来调整序时簿界面的显示顺序。2、目前字段修改能修改什么属性?业务建模工具里不能修改系统
2、定义字段(可以切换到studio视图修改),只能修改自定义字段;如果想要修改系统定义字段的显示标题,可通过属性里的“标签文字”进行修改;在自定义字段未保存前,该字段所对应的所有属性都可以修改;在自定义字段保存后,该字段只能修改字段标题,出现需要修改字段除了别名以外的属性的问题,比较快速的变通处理方法是删掉此字段再重建。3、中建的枚举只有整型吗?可不可以定义其他类型的枚举?目前都默认为String类型处理4、在运行时,EditUI界面中点击复制并新增时,单据编号(已配置编码规则)同时也会复制过去,而不会产生新的单据编号,如何解决?请重载setFieldsNull()方法,然后把你不想复制的字段s
3、et一个null值在里面就可以了 5、在我们开发单据中,每个单据都自定义了一个审核的字段(并没有使用框架的审核功能),每张单都需要用户手工审核操作的。当我把已经审核的单据打开,在EditUI点击复制并新增时,审核状态也复制过去(变成已审核状态,本应该是未审核状态的),如何解决? 同上 6、请问复制并新增时,是哪里的数据复制到新的单据,界面上的数据还是editData里面的数据(两都有可能数据不一致)? 复制的是editData,editData总是与数据库中的记录保持一致的,所谓的不一致,只是因为加载或者保存等时候认为的改动了某些字段的值。 7、在业务建模工具中,发现新建的common目录找不
4、到业务建模工具对以下的通用目录作了过滤,自动滤掉了:ui common toolsupgrade dmc btp wf baseutil framework portal mobile bim 如果想使用以上的目录,可以通过点击“业务建模工具”视图右上方的小三角形,选择“过滤”目录,在弹出的界面中,去掉不想滤掉的目录的名字即可。二、环境使用类问题解答1、BIM工具菜单的“启动EAS客户端”和“快速启动EAS测试”有何不同?快速启动EAS测试 是指同时启动EAS服务器和EAS客户端;其实启动客户端时,如果EAS服务端没有启动会自动启动;分这几种启动方式的好处是如果有些改动如果没有改变服务端的东西
5、,就可以沿用原来启动的服务端,仅仅启动客户端就可以了。2、BIM 服务启动报错缺少类,请问如何配置修改?这是由于在lib下缺少必须的EAS库文件,有可能是用户在使用过程中改变类加载目录造成的,出现这种问题,只需要把当前的解决方案先保留内容地从当前视图删掉,再重新打开一次就可以了,系统会自动寻找当前解决方案目录下的lib目录。3、在studio中做的修改以及发布出来的代码同步到bim中,是否需要手工拷贝?BIM和studio用的是同一套元数据,是实时同步的。即用BOS Studio改了元数据后,打开BIM就可以看到变动了;同样用BIM改动后,打开 BOS Studio也可以看到变动。如果说需要拷
6、贝元数据,可能是你建了不同的工程。如果BIM和BOS操作的是同一工程,是不需要拷贝的。使用BIM或BOS的发布功能都可以发布成Java代码注意:使用中常发现用户在bim和studio视图中所作的发布设置不一致,导致一些不必要的麻烦,建议使用前请到菜单【工具】【解决方案设置】,在弹出界面中选择“测试设置”,单击“拷贝设置至Studio”,用来使两种工具的设置保持一致。如下图:4、BIM的解决方案必须通过应用服务器导入吗?也可以通过拷贝别人解决方案目录到自己本机,然后打开已有的解决方案。5、怎样将BIM中的EAS测试启动模式设置为可调试?请到菜单【工具】【解决方案设置】,在弹出界面中选择“测试设置
7、”,再切换到“其他测试设置”页签,勾选“调试模式运行”即可。如下图:6、BIM中在哪里可以看到运行日志信息?控制台的服务端、客户端,还有控制台右上方的日志按钮打开可以看到错误信息;如果有编译错误,可以到解决方案根目录下看classes.log文件输出信息。7、如何转换成繁体版?在安装盘相对路径.kingdeeeasbosBOSModular下,启动命令文件:BOSModular_zh_TW.bat即可。8、项目实施中需要在EAS凭证录入界面上面增加“组织机构”,关联到基础资料里面的“组织机构”,并且设置成为必录项,是否能够实现,可以通过什么方法实现?eas系统中已有的单据,可以通过向导导入已有
8、业务单元来实现。 具体步骤如下: 选择凭证所在的目录,右键新建-导入业务单元或模板, 然后根据向导一步步可以把凭证导入到业务建模工具中, 然后在凭证这张单据中通过新增字段即可添加“组织机构”这个字段 把字段设为必录项可以通过定义事件来解决。 选中“组织结构”这个字段控件,在下面的属性页签里,选择“保存”这个 触发时刻来触发事件。在弹出的“事件管理”界面中,新增事件,在“定义 事件”界面中,选择操作“单据合法性校验”; 具体的操作设置过程请参考bos自带的帮助系统: 金蝶业务建模工具帮助系统-定义业务单元-事件管理-事件定义- 各种操作的详细描述。 9、我的BIM运行测试时,有时会读到Jar包里
9、面的代码,而不是先运行自己的代码。有时候却正常。请问是什么原因?理论上是优先读取本地的class,然后才是库文件,如果出现了这种不正常的现象,请检查本地是否生成了class10、bos在头一天还正常使用,第二天启动的时候就出现如下图所示问题,启动不起来,重新启动机器,将服务器控制台启动后,才能启动bosbos工具能否正常启动,跟服务器控制台没有关系,应该是某些错误导致无法启动,遇到这种情况,请尝试删除工作空间d:workspace下的.metadata目录试试,打开bos工具后,切换到业务建模工具视图,再重新打开一次解决方案。11、有一个开发人员在业务建模窗口中经常会出现下图所示的问题,然后b
10、os关闭此问题应该是有javaw.exe进程死在内存里,请在“任务管理器”里切换到“内存”页签,杀掉所有的javaw.exe进程,再重新打开bos工具即可。12、修改元数据发布后,切换到java透视图中的时候经常出现如下图所示问题:当服务器正在运行的时候,只能热替换代码体部分,如果有方法名更名或者新增方法,热替换无法进行,就会出现如图提示框。三、事件类问题解答1、定义了计算公式的事件,却发现并不起作用是怎么回事?事件定义最经常犯的一个错误是把事件定义在错误的字段上面,导致产生不了预想的效果,现举一个实际的例子供参考:比如:金额=数量x建议采购单价则“金额”的值随着“数量”和“建议采购单价”的值
11、的改变而改变。由此可判断事件应该定义在公式右侧的字段“数量”和“建议采购单价”上;事件的触发时机在“更新”事件上。2、创建了EditValueChange事件,目前在文本字段中触发了该事件,在数值字段中无法触发该事件请用BIM里面字段的更新事件。单据头的字段的更新事件选中字段后,在属性的“更新”事件里加事件就可以了,分录体的字段的更新事件需在大纲里,选中字段再进行更新事件定义。发布后JAVA代码里有相应事件,在里面实现代码即可。3、为什么一个单据在保存的时候,F7控件也会产生一个DataChange事件,一个单据在打开时,都会产生事件,不合理当时升级支持的时候发现是事件定义在整个分录上,不合理
12、,应该定义在分录的对应字段上。四、发布类问题解答1、请问发布出错通常是什么原因?对外发布的bos版本,在正常情况下,一些很常用的功能,比如发布, 基本上是不会出错的(当然不排除有些潜在的没注意到的bug引发的错误) 。如果出错了,从控制台的输出可以判断存在以下三种错误: 1.connect错误 请到菜单【工具】【解决方案设置】,在弹出的界面中,选择“测试设置”,再切换到“测试帐套”页签,点击“测试帐套连接”,来确定当前的数据库连接是否正常。 pile错误 可以到解决方案根目录下面的classes.log文件中,检查当前项目工程的代码是否有问题; 也可以把当前的项目转换为java工程,然后切换到
13、java视图解决编译出错问题;一般情况下原因是这样的:可能在要发布的单据中引用了你新定义的某个基础资料/单据,但是该基础资料/单据没有发布过。 解决办法:先发布引用的那个(可能不止一个)基础资料/单据还有一种情况是当前业务单元是由标准产品的元数据导过来的,不应该生成实现类,以免冲掉原有的实现类,请先把此业务单元生成的代码删掉,打开该单据,右键,在单据信息里不勾选“生成实现类”,再发布一次就可以了。3.其他错误,比如元数据校验等 除了可以从控制台得到某些出错信息外,也可以打开控制台右上方的日志按钮,获取出错信息加以判断。 另外,还可以在studio中发布当前业务单元所对应的元数据,看看元数据本身
14、是不是存在问题;还有一种常见情况是缓存导致的,可以通过清除缓存来解决。另外一种常见错误是,此业务单元引用的基础资料没发布,请先发布该业务单元关联的2、有的显示的菜单中缺少了发布等菜单项,如下图:只有业务单元(后缀名为.bizunit)才能发布,图示的“采购申请单”应该是一个业务模板,业务模板只是供复制使用的,不能用于发布。3、请问EASBOS解决方案目录下的deployed_metas文件夹里放的东西是做什么的?能否手工修改?我在BIM里删除了一个字段后运行报错,后来发现是这文件夹里的文件还存在相关信息(注:metas是5.0以前的环境目录,相当于现在的metadata)解决方案关于元数据一般
15、有三个目录:metadata,deployed_metas,metasmetadata里的元数据发布后,经由deployed_metas发布到metas目录中metadata中的元数据在当前开发环境中可见metas是eas运行环境依赖的元数据,由metadata目录中的元数据发布而来deployed_metas相当于metadata到metas的中转站,记录metadata里元数据的发布过程 -即相当于metasdata里的元数据先发布到deployed_metas目录中,成功后再发布到metas里。deployed_metas里的文件一般情况下不建议修改,它只是做一个发布记录,这个记录在以后
16、的bim部署中用到bim删除字段后运行报错,跟deployed_metas应该没有关系,运行时依赖的元数据是在metas目录中如果你想彻底改掉这个问题-这个问题也许是因为过去记忆的文件没被彻底覆盖造成的可以在deployed_metas和metas里同时删掉这个元数据信息,然后再重新发布4、在BIM里导入一个EAS5.1的方案,建了一张单据,发布就出现附件里的错误,请问得怎么解决? Caused by: java.sql.SQLException: MicrosoftSQLServer 2000 Driver for JDBCSQLServer列T_PM_User.FID 与外键 FK_TRA
17、_TrnstBLUU5l 中的引用列T_TRA_TransitBill.FLastUpdateUserID 的排序规则不同EAS5.1的SQLServer库排序规则是大小写敏感的,5.0的则不是。这样EASBIM5.1发布出来的表的排序规则是大小写敏感的。 这样导致使用5.0的EAS帐套会出现排序规则不一致的错误5、发布emp职员出现这样的:无法将 NULL 值插入列 FNumber,表 boc.dbo.T_BD_Person_TEMP; 该列不允许空值。INSERT 失败数据表boc.dbo.T_BD_Person_TEMP的字段FNumber不能为空,但是你导入的数据中有null值。这是因
18、为原本可以为空的fnumber人为改成非空造成的。有两种方法: 1.将数据表boc.dbo.T_BD_Person_TEMP的字段fnumber的值清空 2.将数据表boc.dbo.T_BD_Person_TEMP的字段fnumber的属性设成可以为空6、为什么在BOSStudio发布元数据后,BIM客户端还是取不到元数据? BIM会在本地另外启用服务器进行单据测试,元数据进行了缓存,因此在BOSStudio发布元数据后,必须重新启动BIM。 7、在EAS业务管理平台发布设置完业务单元后,执行“发布业务单元”时出现错误 现象: BIM 运行任务出错! org.eclipse.core.runt
19、ime.CoreException: D:EASProgramkingdeeUtilitiestoolsbimbimstudiopluginscom.kingdee.bos.bim_4.1.0deploy.xml:35: Compile failed; see the compiler error output for details. org.eclipse.ant.core.AntRunner.handleInvocationTargetException(AntRunner.java:424) org.eclipse.ant.core.AntRunner.run(AntRunner.ja
20、va:356) mon.BaseAntScriptJob._$2(Unknown Source:185) mon.BaseAntScriptJob._$1(Unknown Source:142) mon.BaseAntScriptJob.run(Unknown Source:82) org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) 一般情况下原因是这样的:可能在要发布的单据中引用了你新定义的某个基础资料/单据,但是该基础资料/单据没有发布过。 解决办法:先发布引用的那个(可能不止一个)基础资料/单据还有一种情况是当前业务单元是由
21、标准产品的元数据导过来的,不应该生成实现类,以免冲掉原有的实现类,请先把此业务单元生成的代码删掉,打开该单据,右键,在单据信息里不勾选“生成实现类”,再发布一次就可以了。8、发布出错,报:kingdee.bos.metadata.MetaDataNotFoundException:Cannot found BusinessObject!可能是什么原因呢?如果你曾经手工替换过元数据,可能会使这几个目录(deployed_metas,metadata,5.0有metadata)的某些pk属性文件不一致;请在解决方案下的metadata目录找到facade_pkmapping.properties,
22、entity_pkmapping.properties两个文件,替换到解决方案下对应的deployed_metas,(5.0有metas)目录下。9、facade从CVS上拉下来后,在pkmaping文件中没有相应的纪录,我记得5.0中通过在发布一遍就可以了,现在5.1中我发布了还是没有记录,我只能手工增加,请问以后我们的facade都要这样做吗,而且怎么将每个人做的facade合并起来?请问你是不是通过studio发布的? 如果在studio发布的,只会在metadata的目录中写相应的pkmapping记录; 如果是在bim里发布的,就会在metadata和deployed_metas里面
23、都写相应的pkmapping记录; 如果是在studio发布过,再在bim里发布其他的业务单元,系统会自动copy deployed_metas里的文件到metadata里,这样deployed_metas里的pkmapping文件会覆盖metadata里的pkmapping文件,导致找不到相应的记录。 建议在bim发布有facade的业务单元 10、BOS中TABLE中导出到ORACLE数据库中出现错误,但是在数据库中生成了相应的表 错误信息如下:ErrorinT_KD_QalFeedback,请问是怎么回事?检查了table所引用的外键,发现t_kd_qalfeedback引用了另外两张表
24、:t_kd_recbrdrflk和T_kd_recbrlrflk。遇到这种问题,请先导出此表外键所关联的非系统定义的数据表, 如果被引用的数据表的外键仍然有关联非系统定义的数据表, 请按顺序导出被关联的数据表 五、部署类问题解答1、部署业务单元的时候好像把整个解决方案都部署了,应该怎样才能只部署我想要部署的业务单元?BIM目前的处理方式是,每次部署的时候,会把所有用BIM发布过的业务单元都部署上去2、部署没有生成数据库表单和菜单吧(发布才会),是这样吗?部署的时候,会把元数据、类文件部署到服务端,也会把主菜单、数据库表部署到所选择的帐套上。3、部署后在单据转换平台上发现系统的目录为空?这是业务
25、建模工具的一个已知bug,标准的部署流程应该是:发布业务单元生成工作流转换及botp目录部署,但是因为有bug的原因,现在的流程为:发布业务单元生成工作流转换及botp目录任何发布一个业务单元部署如果发现部署后目录为空的情况,也可以把测试环境下解决方案的metadata目录下所有的mdbview类型的文件copy到服务端.kingdeeeasserverdeploy目录下的metas.jar文件中4、部署是怎样的一个过程?在本地测试通过以后,需要部署到服务端,以供所有的客户段能够自动更新使用。部署是把本地经过发布的业务单元上传到服务端的.kingdeeeasfileserver.eareasW
26、ebClientdeployclient下的metas.jar的对应位置,本地的classes上传到服务端的.kingdeeeasfileserver.eareasWebClientlibsp目录下。5、在部署数据的时经常出现了如下图所示问题:部署的时候必须停止服务器。六、集成模块-单据转换问题1、单据转换规则定义中,分组与合并规则是什么意思?为什么一定要分组?要不保存不了分组是group by,合并是 group by以后的某些数值字段的合计。现在的实现方案是根据分组的级次来逐级转换的,如果不分组,那么就不会有转换过程,而且业务上也是要求分组的。 2、分组的级次是什么?是属性的级次。比如单据
27、上的company,是一级,而分录上的科目entries.account,是二级。3、在某一张采购申请单关联生成采购订单以后,它是不准被删除的,怎样知道这张申请单是已经关联生成过采购订单的?在com.kingdee.bos.metadata.bot.app下找t_bot_relation看它的数据库记录里fsrcentityid和fdescentityid对应的记录就可以看到单据关联生成的信息了。4、在有分录的单据ListUI中,点击“关联生成”后,可不可以实现选中一条记录就生成包含所有分录的目标单据? 如果想根据单据头做botp转换,需要自己在单据的序时簿代码中添加相关的代码设置,代码参考:
28、 publicvoidactionCreateTo_actionPerformed(ActionEvente)throwsException setDAPTrans(true); super.actionCreateTo_actionPerformed(e); setDAPTrans(false); 5、如何手工关闭BOTP的源单据?也就是说我的源单据不需要参考目标单据是否生成,也不需要参考目标单据反写到源单据的字段值。我需要实现人为手工地关闭源单据,使其关闭后不能再生成目标单据。在动态会计平台可以将关闭的枚举值赋给所需的单据 6、BOTP源单生成目标单时,能否设定规则,只将符合条件的源分录带
29、到目标单据上?可以,打开一个规则,在界面上侧的toolbar栏有规则过滤和数据过滤规则过滤针对过滤规则本身的转换规则进行过滤数据过滤针对单据的字段的具体值进行过滤7、BOTP下推生成目标单据,如果想让已经生成下游单据的分录(不是单据)不可以再生成单据,应该如何处理?是要手工在此分录上加个状态字段还是框架已经支持?需要自己打上标签,然后在数据过滤里做过滤,使打上标签的单据不再参加botp七、集成模块-权限问题1、用业务建模工具新定义的单据如何跟权限管理集成起来?新定义的单据,在没有做权限管理之前,是不受权限控制的。将新单据跟权限管理集成起来,大致分为三个步骤:1、【工具】【权限管理】,在此界面定
30、义单据所在的目录及给单据设置各种权限项(查看、新增、修改、删除、审核等)。如果没有新建某种权限项,则默认此种权限项不受控制,是可以在任何情况下使用的。-这只是加了权限项,但是并没有应用到单据中。2、要应用到单据中,必须在主菜单管理中给业务单元加上相应的权限项,然 后发布,这是设计期要做的工作。3、在运行期时,通过administrator登录,在“用户管理”里同步权限项分配相应的权限即可八、集成模块-工作流问题1、用业务建模工具新定义的单据如何跟工作流集成起来?新建的单据通过【业务单元】【功能】将此单据中的相关功能同工作流进行绑定,发布后,运行【工具】【生成工作流和单据转换平台目录】生成工作流
31、与业务建模工具同样的系统目录。这样前提条件都准备好了。再在业务建模工具里启动服务端,然后再工作流里进行工作流工具的连接,记得应用服务器地址的后面加上端口11036(192.168.19.176:11036),另外设置元数据的路径是当前解决方案所对应的metadata目录(记得勾掉默认的元数据为jar包的类型),启动工作流成功后,业务建模工具和工作流已经集成起来。2、业务单元新增了一个功能,上面怎么没有与工作流绑定的选项?需要单据上的功能才行,基础资料不能与工作流绑定。3、怎样集成工作流建模工具?为何工作流建模工具不能连接BIM启动的服务器? 工作流连接服务器时可以设置连接端口号为11036(系
32、统默认为11034)就可以了4、b im 与 wfbuilder 集成问题:在bim中启动了apusic ,打开wfbuilder时找不到已启动的apusic服务器, bim中apusic端口和ormrpc的端口与 wfbuilder要求的不一致BIM设置自己的应用服务器端口是为了解决与BIM外部启动的应用服务器冲突的问题,因为BIM启动的服务器只提供给BIM自己测试用,只作为它自己测试一种支持。为的是解决可以在BIM外部启动了Apusic 服务器后,BIM还可以自己进行测试。 5、创建工作流后,修改人工节点中的任务属性,然后保存,再进入的时候提示:当前页面包含无效的值。该问题是一个已知问题,
33、主要原因是工作流建模的时候,在新建单据上配置工作流,启动的是EAS的应用服务器而不是BIM内部的应用服务器。解决办法:1、 启动BIM的测试服务器2、 修改工作流连接,譬如原连接地址为 127.0.0.1,在连接BIM的应用服务器时连接地址应该改为 127.0.0.1:110363、 修改工作流的客户端元数据目录为: ”BOS安装目录” ”BIM工程名” metadata6、在单据建立好以后再做工作流,在“转换工作流和单据转化平台目录”以后,在工作流连接后-在工作流管理的大纲中单据功能看不到我所做的单据功能,请问是否要部署以后才能看到,还是有其他原因? 在工作流视图里,看到的只是流程,你新建流
34、程后, 在流程的人工节点给任务属性加功能的时候,可以看到你所做单据的功能九、工作流使用问题解答I、工作流快速入门部分1、怎么理解流程变量?流程变量是工作流引擎和业务系统的数据交互的桥梁。工作流承载业务,驱动业务流程,但是不会执行业务。工作流中的业务执行,全部都会委托给具体的业务模块执行。那么,这些被工作流分割的业务功能,在工作流中被调用执行的时候,如何保证做操作的数据的一致性?通过流程变量,在每一步的业务功能执行的过程中,将业务数据保存在流程变量中,那么整个流程的后续活动中,都可以引用该流程变量,来完成业务功能,保证业务数据的一致性。例如:在凭证的审批流程中,新增凭证审批,审批的时候为什么可以
35、正确定为到刚刚提交的那张凭证,而不是别的凭证?流程变量起到了重要的作用。在凭证新增之后,将可为一标示凭证的ID保存到流程变量中,在审批的时候将流程变量中的值传递给凭证,就可以根据这个ID可以唯一获取到一张凭证了。流程变量在流程实例的生命周期内都是有效的。2、怎么理解任务输入输出?任务输入:在业务发生之前,有工作流传递给业务的数据。以凭证的过账为例,某个用户收到一条凭证过账的消息,双击消息处理。在双击之后、凭证的界面弹出之前,工作流会把定义的入口参数变量中的值传递给凭证,凭证根据这个值来展现特定的单据,展现特定的功能。任务输出:在业务发生之后,由业务系统传递给工作流,需要保存在流程变量中的数据。
36、仍以凭证过账为例,在用户操作完凭证过账之后,工作流继续流转之前,如果流程定义中定义了任务的输出,那么,就会将凭证对应的属性的数据,保存在流程变量中。已备在后续的流程活动中使用。3、嵌入式工作流与流程自动匹配金蝶EAS的工作流式支持嵌入式工作流,嵌入式工作流系统有如下的特性:1、 无需更改用户的操作习惯,在序时簿上操作,也可以正常的激活驱动工作流,而不必一定要到消息中心去处理业务2、 流程自动匹配。可以通过执行流程的启动活动的操作,自动匹配流程,启动流程实例。流程实例启动后,启动活动已经完成,流程自动向下流转。流程匹配的条件是任务和参与人。在任务相同的情况下,流程匹配存在优先级。从高到低依次是:
37、职员、职位、组织、任意人。4、场景1:单活动流程场景说明:流程只有一个人工型活动,完成凭证提交的任务,流程结束。没有具体的业务含义。以凭证提交的业务为例。流程图如下:定义步骤:1、 拖入开始、结束活动2、 拖入人工型活动,用连接弧连接起来。3、 定义人工型活动首先,定义人工型活动的任务,选择任务选定任务后,定制任务的输入输出。输入参数是由任务定义带出的根据任务输入的意义,指的是在凭证提交之前,由工作流告知凭证的数据。新建一个流程变量,绑定该输入。这样绑定的意思是:在凭证提交之前,工作流会将billID这个流程变量中的数据传递给凭证业务。凭证业务得到这个值之后,会根据业务需要做出判断。说明所有人
38、工型任务的输入参数,全部是在定义任务的时候就定义好的。每个任务的输出参数可能不同,是由于各个不同的业务系统对于业务开始之前,所需要的数据不同导致。但是在EAS系统中,基本上任务的输入参数只有一个BOID类型的参数。这是因为一般来说,通过这样一个类型的值,就可以完全定位一个业务单据,并且拿到这个业务单据,就可以满足大部分的业务需求了。说明对于示例中的这个节点,在业务发生的时候,billID还没有任何赋值,这个时候传递给业务系统的也将是个空值。根据工作流系统和业务系统的约定,传递空值对业务系统来说,意味着新增单据。再来看看任务输出左边的是单据对应的业务对象的所有属性,右边是选定的输出。在这里,将I
39、D属性输出,并且选定输出的流程变量是billID在这个简单的示例中,这个输出没有意义。但是在后面的场景中,可以看到,这个输出具有很重要的意义:凭证提交完毕后,将可以唯一标示一张凭证的ID属性保存在流程变量billID中,在后续的活动中,如果还需要操作这张凭证,就可以通过billID来唯一定位这张凭证,保证业务的一致性。任务定义完毕,来定义参与人。参与人定义中,分为了默认参与人和条件参与人(条件参与人如何定制和使用,请参见另一篇专门针对提交参与人的文档)。工作流在获取执行人的时候,首先根据条件来逐个扫描条件参与人,发现没有符合,那么会取默认参与人。这里简单处理,选择任意人。说明前面提到过,流程自
40、动匹配的优先级。下面举例说明。有两条流程,同样启动活动的任务都是“凭证提交”,A流程的启动活动参与人设置为“张三”,B流程启动活动参与人设置为“公司所有人”。那么张三录入凭证的时候,匹配的流程是A。说明任意人作为一个特殊的参与人定义方式,只针对于启动活动生效!意思是说,只要有凭证提交的权限的人,提交凭证就可以匹配到该流程到现在为止,这条简单的流程就已经定义完毕。发布。到EAS中提交凭证,然后到工作流监控中,会发现有一条流程实例,并且状态是已完成。5、场景2:审批流程场景说明:单据提交之后,经过一层审批,流程结束。以凭证为示例。流程图如下定义步骤:1、 同场景1拖入活动2、 增加一个审批活动,如
41、图画连接弧3、 配置提交活动。和场景1中一样选择任务,参与人也是任意人。但是任务的输出多一项。由于在后续的消息中想展现出单据的编码,所以多输出一个单据编码到一个流程变量number中4、 配置审批活动。为了方便测试,参与人设定为流程发起人的本人任务页签和一般的任务有些不同,是因为审批是一个通用的业务,对其任务进行了包装。只是展现的UI不同,实质是一样的。这一部分,就是任务输入。对于现在的场景,审批凭证,那么在业务单据内码这一栏选中billID。此时billID已经在提交之后,保存了刚刚提交的凭证的ID。一旦这个审批任务发生执行,那么,在执行前,工作流会将billID这个变量中保存的值传给业务系
42、统。那么审批时就可以唯一定位到一条业务单据。任务输出,选择将审批结果输出到一个枚举型的流程变量 审批结果 中。定制审批消息流程定义完毕。发布,在EAS中执行。提交凭证,在消息中心收到一条消息,审批,通过。然后回到凭证序时簿,察看该流程,发现,凭证的状态还是“提交”而不是“审核”。这是因为工作流中的多极审批,只是单纯的驱动流程,做一个选择而已,不会修改业务数据。为了能够让凭证打上审批标记,按照如下方式修改流程定义最后的这个自动活动,就完成给凭证打审核标记的功能。任务选择如下:任务的输入输出按照如下设置保存、发布,再到EAS中执行一下。发现审批状态打上了。6、场景3:带分支的审批流程场景说明:在场
43、景2中,没有根据审批结果来判断,无论审批是通过还是不通过,都会把审批的标记打上。在这个场景中,增加对审批结果的判断。审批通过,则打审批状态。审批不通过,返回修改。仍以凭证为例。流程定义如下:定义步骤1、 提交、审批、自动节点的设置和场景2中一样。2、 增加一个人工型活动,修改。选择的任务和“提交”一样。但是由于单据的ID和单据的编码是新增的时候就定好的,无法修改。所以只需要定义任务输入就可以了,不需要定义任务输出。说明到这里应该可以看出,流程变量的重要性。以场景中的billID为例,从提交开始作为输出参数被赋值,保存了可以唯一标示一张凭证的ID。然后再审批的时候,需要在输入参数中传入该变量,在
44、修改的时候,也需要在输入参数中传入该变量。这样就保证了提交、审批、修改这些业务操作所操作的凭证是同一张谁提交的谁修改,参与人设置为流程发起人本人定制修改消息3、 编辑连接弧首先编辑“审批”到“自动”的连接弧。如下方式设置条件。说明变量为“审批结果”这个枚举类型的时候,在变量或比较值一栏,回发现,列出了“通过”和“不通过”两个选项。这是建模工具会自动根据之前的定义识别枚举,然后将枚举的值也会自动列在选择范围内。然后编辑“审批”到“修改”的连接弧。按照如下方式设置条件保存。流程定制完毕。发布。在EAS中提交凭证,本人审批。在审批的时候,不通过。会发现会收到一条修改的消息。处理该消息,修改。流程会继
45、续回到审批。说明嵌入式工作流的特性。例如,受到修改消息后,不在消息中心处理,直接进入凭证序时簿,修改。效果和在消息中心处理一样,流程一样会继续向下流转。说明业务单据一旦进入工作流,就要受到工作流的约束。例如,刚刚提交完凭证,流程执行到审批节点。这个时候工作流要求的行为是“某个人执行审批操作“。如果这个时候进入凭证序时簿,修改凭证,会提示:”已在工作流处理中,任务不匹配“。流程定义的图形很难看,稍微调整一下。其中路由活动没有任何作用,只是为了美化图形。说明路由活动的设计本身就是没有任何作用的,单纯美化图形。但是,后在在路由活动上附加了业务语义,这一点在场景4里面可以看到。7、场景4:互斥、分支的审批流程场景说明:场景3已经是一个简单的审批业务了。但是如果存在这样的需求“我提交了之后,在审批之前,我发现提交的单据存在问题,需要修改”。在场景3的流程定义中,无法完成。流程执行到审批,去修改的时候,会提示“已在工作流中,任务不匹配”。那么场景4就是为了满足这样的需求。仍以凭证为例,流程图如下:定义步骤:1、 提交、审批、自动、修改按照场景3
限制150内