首页 使用EAS BOS过程中常见问题

使用EAS BOS过程中常见问题

举报
开通vip

使用EAS BOS过程中常见问题使用EAS BOS过程中常见问题 BOS工具常见问题集 一、功能点使用问题解答 ............................................................................................................... 2 二、环境使用类问题解答 ...............................................................................................

使用EAS BOS过程中常见问题
使用EAS BOS过程中常见问题 BOS工具常见问题集 一、功能点使用问题解答 ............................................................................................................... 2 二、环境使用类问题解答 ............................................................................................................... 3 三、事件类问题解答....................................................................................................................... 8 四、发布类问题解答....................................................................................................................... 8 五、部署类问题解答..................................................................................................................... 12 六、集成模块----单据转换问题 ................................................................................................... 13 七、集成模块----权限问题 ........................................................................................................... 14 八、集成模块----工作流问题 ....................................................................................................... 15 九、工作流使用问题解答 ............................................................................................................. 16 I、工作流快速入门部分 ....................................................................................................... 16 II、工作流常见问题解答 ...................................................................................................... 30 III、现场常见流程配置 ......................................................................................................... 31 IV、现场常见问题解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ................................................................................................. 38 十、集成模块----预警平台问题 ................................................................................................... 65 十一、集成模块----报表问题 ....................................................................................................... 65 十二、集成模块----组织架构 ....................................................................................................... 66 十三、代码应用问题..................................................................................................................... 68 十四、升级参考步骤..................................................................................................................... 71 十五、版本遗留缺陷..................................................................................................................... 74 一、功能点使用问题解答 1、业务建模工具所定义的单据是怎么调整顺序的, 在业务建模工具视图选中该单据, 菜单【业务单元】,【录入顺序】用来调整编辑界面的输入顺序,也可以调整分录字段的显示顺序; 菜单【业务单元】,【查询顺序】用来调整序时簿界面的显示顺序。 2、目前字段修改能修改什么属性, 业务建模工具里不能修改系统定义字段(可以切换到studio视图修改),只能修改自定义字段; 如果想要修改系统定义字段的显示标题,可通过属性里的“标签文字”进行修改; 在自定义字段未保存前,该字段所对应的所有属性都可以修改; 在自定义字段保存后,该字段只能修改字段标题,出现需要修改字段除了别名以外的属性的问题,比较快速的变通处理方法是删掉此字段再重建。 3、,,,中建的枚举只有整型吗,可不可以定义其他类型的枚举, 目前都默认为String类型处理 4、在运行时,EditUI界面中点击复制并新增时,单据编号(已配置编码规则)同时也会复制过去,而不会产生新的单据编号,如何解决, 请重载setFieldsNull()方法,然后把你不想复制的字段set一个null值在里面就可以了 5、在我们开发单据中,每个单据都自定义了一个审核的字段(并没有使用框架的审核功能),每张单都需要用户手工审核操作的。当我把已经审核的单据打开,在EditUI点击复制并新增时,审核状态也复制过去(变成已审核状态,本应该是未审核状态的),如何解决, 同上 6、请问复制并新增时,是哪里的数据复制到新的单据,界面上的数据还是editData里面的数据(两都有可能数据不一致), 复制的是editData,editData总是与数据库中的记录保持一致的,所谓的不一致,只是因为加载或者保存等时候认为的改动了某些字段的值。 7、在业务建模工具中,发现新建的common目录找不到 业务建模工具对以下的通用目录作了过滤,自动滤掉了: ui common tools upgrade dmc btp wf base util framework portal mobile bim 如果想使用以上的目录,可以通过点击“业务建模工具”视图右上方的小三角形,选择“过滤”目录,在弹出的界面中,去掉不想滤掉的目录的名字即可。 二、环境使用类问题解答 1、BIM工具菜单的“启动EAS客户端”和“快速启动EAS测试”有何不同? "快速启动EAS测试" 是指同时启动EAS服务器和EAS客户端; 其实启动客户端时,如果EAS服务端没有启动会自动启动; 分这几种启动方式的好处是如果有些改动如果没有改变服务端的东西,就可以沿用原来启动的服务端,仅仅启动客户端就可以了。 2、BIM 服务启动报错缺少类,请问如何配置修改, 这是由于在lib下缺少必须的EAS库文件,有可能是用户在使用过程中改变类加载目录造成的,出现这种问题,只需要把当前的解决方案先保留内容地从当前视图删掉,再重新打开一次就可以了,系统会自动寻找当前解决方案目录下的lib目录。 3、在studio中做的修改以及发布出来的代码同步到bim中,是否需要手工拷贝, BIM和studio用的是同一套元数据,是实时同步的。 即用BOS Studio改了元数据后,打开BIM就可以看到变动了; 同样用BIM改动后,打开 BOS Studio也可以看到变动。 如果说需要拷贝元数据,可能是你建了不同的工程。如果BIM和BOS操作的是同一工程,是不需要拷贝的。 使用BIM或BOS的发布功能都可以发布成Java代码 注意:使用中常发现用户在bim和studio视图中所作的发布设置不一致,导致一些不必要的麻烦,建议使用前请到菜单【工具】,【解决方案设置】,在弹出界面中选择“测试设置”,单击“拷贝设置至Studio”,用来使两种工具的设置保持一致。如下图: 4、BIM的解决方案必须通过应用服务器导入吗, 也可以通过拷贝别人解决方案目录到自己本机,然后打开已有的解决方案。 5、怎样将BIM中的EAS测试启动模式设置为可调试, 请到菜单【工具】,【解决方案设置】,在弹出界面中选择“测试设置”,再切换到“其他测试设置”页签,勾选“调试模式运行”即可。如下图: 6、BIM中在哪里可以看到运行日志信息? 控制台的服务端、客户端,还有控制台右上方的日志按钮打开可以看到错误信息; 如果有编译错误,可以到解决方案根目录下看classes.log文件输出信息。 7、如何转换成繁体版, 在安装盘相对路径..\kingdee\eas\bos\BOSModular下,启动命令文件:BOSModular_zh_TW.bat 即可。 8、项目实施中需要在EAS 凭证录入界面上面增加“组织机构”,关联到基础资料里面的“组织机构”,并且设置成为必录项,是否能够实现,可以通过什么方法实现, eas系统中已有的单据,可以通过向导导入已有业务单元来实现。 具体步骤如下: 选择凭证所在的目录,右键[新建]-->[导入业务单元或模板], 然后根据向导一步步可以把凭证导入到业务建模工具中, 然后在凭证这张单据中通过新增字段即可添加“组织机构”这个字段 把字段设为必录项可以通过定义事件来解决。 选中“组织结构”这个字段控件,在下面的属性页签里,选择“保存”这个 触发时刻来触发事件。在弹出的“事件管理”界面中,新增事件,在“定义 事件”界面中,选择操作“单据合法性校验”; 具体的操作设置过程请参考bos自带的帮助系统: 金蝶业务建模工具帮助系统-->定义业务单元-->事件管理-->事件定义--> 各种操作的详细描述。 9、我的BIM运行测试时,有时会读到Jar包里面的代码,而不是先运行自己的代码。有时候却正常。请问是什么原因, 理论上是优先读取本地的class,然后才是库文件,如果出现了这种不正常的现象,请检查本地是否生成了class 10、bos在头一天还正常使用,第二天启动的时候就出现如下图所示问题,启动不起来,重新启动机器,将服务器控制台启动后,才能启动bos bos工具能否正常启动,跟服务器控制台没有关系,应该是某些错误导致无法启动,遇到这种情况,请尝试删除工作空间d:\workspace下的.metadata目录试试,打开bos工具后,切换到业务建模工具视图,再重新打开一次解决方案。 11、有一个开发人员在业务建模窗口中经常会出现下图所示的问题,然后bos关闭 此问题应该是有javaw.exe进程死在内存里,请在“任务管理器”里切换到“内存”页签,杀掉所有的javaw.exe进程,再重新打开bos工具即可。 12、修改元数据发布后,切换到java透视图中的时候经常出现如下图所示问题: 当服务器正在运行的时候,只能热替换代码体部分,如果有方法名更名或者新增方法,热替换无法进行,就会出现如图提示框。 三、事件类问题解答 1、定义了计算公式的事件,却发现并不起作用是怎么回事, 事件定义最经常犯的一个错误是把事件定义在错误的字段上面,导致产生不了预想的效果, 现举一个实际的例子供参考: 比如:金额=数量x建议采购单价 则“金额”的值随着“数量”和“建议采购单价”的值的改变而改变。由此可判断事件应该定义在公式右侧的字段“数量”和“建议采购单价”上;事件的触发时机在“更新”事件上。 2、创建了EditValueChange事件,目前在文本字段中触发了该事件,在数值字段中无法触发该事件 请用BIM里面字段的更新事件。单据头的字段的更新事件选中字段后,在属性的“更新”事件里加事件就可以了,分录体的字段的更新事件需在大纲里,选中字段再进行更新事件定义。发布后JAVA代码里有相应事件,在里面实现代码即可。 3、为什么一个单据在保存的时候,F7控件也会产生一个DataChange事件,一个单据在打开时,都会产生事件,不合理 当时升级支持的时候发现是事件定义在整个分录上,不合理,应该定义在分录的对应字段上。 四、发布类问题解答 1、请问发布出错通常是什么原因, 对外发布的bos版本,在正常情况下,一些很常用的功能,比如发布, 基本上是不会出错的(当然不排除有些潜在的没注意到的bug引发的错误) 。 如果出错了, 从控制台的输出可以判断存在以下三种错误: 1.connect错误 请到菜单【工具】,【解决方案设置】,在弹出的界面中,选择“测试设置”,再切换到“测试帐套”页签,点击“测试帐套连接”,来确定当前的数据库连接是否正常。 2.compile错误 可以到解决方案根目录下面的classes.log文件中,检查当前项目工程的代码是否有问题; 也可以把当前的项目转换为java工程,然后切换到java视图解决编译出错问题; 一般情况下原因是这样的:可能在要发布的单据中引用了你新定义的某个基础资料/单据,但是该基础资料/单据没有发布过。 解决办法:先发布引用的那个(可能不止一个)基础资料/单据 还有一种情况是当前业务单元是由标准产品的元数据导过来的,不应该生成实现类,以免冲掉原有的实现类,请先把此业务单元生成的代码删掉,打开该单据,右键,在单据信息里不勾选“生成实现类”,再发布一次就可以了。 3.其他错误,比如元数据校验等 除了可以从控制台得到某些出错信息外,也可以打开控制台右上方的日志按钮,获取出错信息加以判断。 另外,还可以在studio中发布当前业务单元所对应的元数据,看看元数据本身是不是存在问题;还有一种常见情况是缓存导致的,可以通过清除缓存来解决。 另外一种常见错误是,此业务单元引用的基础资料没发布,请先发布该业务单元关联的 2、有的显示的菜单中缺少了发布等菜单项,如下图: 只有业务单元(后缀名为.bizunit)才能发布,图示的“采购申请单”应该是一个业务模板,业务模板只是供复制使用的,不能用于发布。 3、请问EASBOS解决方案目录下的deployed_metas文件夹里放的东西是做什么的,能否手工修改,我在BIM里删除了一个字段后运行报错,后来发现是这文件夹里的文件还存在相关信息 (注:metas是5.0以前的环境目录,相当于现在的metadata) 解决方案关于元数据一般有三个目录:metadata,deployed_metas,metas metadata里的元数据发布后,经由deployed_metas发布到metas目录中 metadata中的元数据在当前开发环境中可见 metas是eas运行环境依赖的元数据,由metadata目录中的元数据发布而来 deployed_metas相当于metadata到metas的中转站,记录metadata里元数据的发布过程 ---即相当于metasdata里的元数据先发布到deployed_metas目录中,成功后再发布到metas里。 deployed_metas里的文件一般情况下不建议修改,它只是做一个发布记录,这个记录在以后的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_TrnstBLUU5l' 中的引用列'T_TRA_TransitBill.FLastUpdateUserID' 的排序规则不同 EAS5.1的SQLServer库排序规则是大小写敏感的,5.0的则不是。这样EAS,BIM5.1发布出来的表的排序规则是大小写敏感的。 这样导致使用5.0的EAS帐套会出现排序规则不一致的错误 5、发布emp职员出现这样的:无法将 NULL 值插入列 'FNumber',表 'boc.dbo.T_BD_Person_TEMP'; 该列不允许空值。INSERT 失败 数据表'boc.dbo.T_BD_Person_TEMP'的字段FNumber不能为空,但是你导入的数据中有null值。这是因为原本可以为空的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.runtime.CoreException: D:\EASProgram\kingdee\Utilities\tools\bim\bimstudio\plugins\com.k ingdee.bos.bim_4.1.0\deploy.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.java:356) com.kingdee.bos.bim.common.BaseAntScriptJob._$2(Unknown Source:185) com.kingdee.bos.bim.common.BaseAntScriptJob._$1(Unknown Source:142) com.kingdee.bos.bim.common.BaseAntScriptJob.run(Unknown Source:82) org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) 一般情况下原因是这样的:可能在要发布的单据中引用了你新定义的某个基础资料/单据, 但是该基础资料/单据没有发布过。 解决办法:先发布引用的那个(可能不止一个)基础资料/单据 还有一种情况是当前业务单元是由标准产品的元数据导过来的,不应该生成实现类,以免冲 掉原有的实现类,请先把此业务单元生成的代码删掉,打开该单据,右键,在单据信息里不 勾选“生成实现类”,再发布一次就可以了。 8、发布出错,报:kingdee.bos.metadata.MetaDataNotFoundException:Cannot found BusinessObject!可能是什么原因呢, 如果你曾经手工替换过元数据,可能会使这几个目录(deployed_metas,metadata,5.0有 metadata)的某些pk属性文件不一致;请在解决方案下的metadata目录找到 facade_pkmapping.properties,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里面都写相应的pkmapping 记录; 如果是在studio发布过,再在bim里发布其他的业务单元,系统会自动copy deployed_metas里的文件到metadata里,这样deployed_metas里的pkmapping文件会覆盖metadata里的 pkmapping文件,导致找不到相应的记录。 建议在bim发布有facade的业务单元 10、BOS中 TABLE 中导出到 ORACLE 数据库中出现错误, 但是在数据库中生成了相应的表 错误信息如下:Error in T_KD_QalFeedback,请问是怎么回事, 检查了table所引用的外键,发现t_kd_qalfeedback引用了另外两张表:t_kd_recbrdrflk和T_kd_recbrlrflk。 遇到这种问题,请先导出此表外键所关联的非系统定义的数据表, 如果被引用的数据表的外键仍然有关联非系统定义的数据表, 请按顺序导出被关联的数据表 五、部署类问题解答 1、部署业务单元的时候好像把整个解决方案都部署了,应该怎样才能只部署我想要部署的业务单元? BIM目前的处理方式是,每次部署的时候,会把所有用BIM发布过的业务单元都部署上去 2、部署没有生成数据库表单和菜单吧(发布才会),是这样吗, 部署的时候,会把元数据、类文件部署到服务端,也会把主菜单、数据库表部署到所选择的帐套上。 3、部署后在单据转换平台上发现系统的目录为空, 这是业务建模工具的一个已知bug,标准的部署流程应该是:发布业务单元,生成工作流转换及botp目录,部署,但是因为有bug的原因,现在的流程为:发布业务单元—>生成工作流转换及botp目录,任何发布一个业务单元,部署 如果发现部署后目录为空的情况,也可以把测试环境下解决方案的metadata目录下所有的mdbview类型的文件copy到服务端..\kingdee\eas\server\deploy目录下的metas.jar文件中 4、部署是怎样的一个过程, 在本地测试通过以后,需要部署到服务端,以供所有的客户段能够自动更新使用。 部署是把本地经过发布的业务单元上传到服务端 的..\kingdee\eas\fileserver.ear\easWebClient\deploy\client下的metas.jar的对应位置,本地的classes上传到服务端的..\kingdee\eas\fileserver.ear\easWebClient\lib\sp目录下。 5、在部署数据的时经常出现了如下图所示问题: 部署的时候必须停止服务器。 六、集成模块----单据转换问题 1、单据转换规则定义中,分组与合并规则是什么意思,为什么一定要分组?要不保存不了 分组是group by,合并是 group by以后的某些数值字段的合计。 现在的实现方案是根据分组的级次来逐级转换的,如果不分组,那么就不会有转换过程,而且业务上也是要求分组的。 2、分组的级次是什么? 是属性的级次。比如单据上的company,是一级,而分录上的科目entries.account,是二级。 3、在某一张采购申请单关联生成采购订单以后,它是不准被删除的,怎样知道这张申请单是已经关联生成过采购订单的, 在com.kingdee.bos.metadata.bot.app下找t_bot_relation看它的数据库记录里fsrcentityid和fdescentityid对应的记录就可以看到单据关联生成的信息了。 4、在有分录的单据ListUI中,点击“关联生成”后,可不可以实现选中一条记录就生成包含所有分录的目标单据, 如果想根据单据头做botp转换,需要自己在单据的序时簿代码中添加 相关的代码设置,代码参考: public void actionCreateTo_actionPerformed(ActionEvent e) throws Exception { setDAPTrans(true); super.actionCreateTo_actionPerformed(e); setDAPTrans(false); } 5、如何手工关闭BOTP的源单据,也就是说我的源单据不需要参考目标单据是否生成,也不需要参考目标单据反写到源单据的字段值。我需要实现人为手工地关闭源单据,使其关闭后不能再生成目标单据。 在动态会计平台可以将关闭的枚举值赋给所需的单据 6、BOTP源单生成目标单时,能否设定规则,只将符合条件的源分录带到目标单据上, 可以,打开一个规则,在界面上侧的toolbar栏有规则过滤和数据过滤 规则过滤针对过滤规则本身的转换规则进行过滤 数据过滤针对单据的字段的具体值进行过滤 7、BOTP下推生成目标单据,如果想让已经生成下游单据的分录(不是单据)不可以再生成单据,应该如何处理,是要手工在此分录上加个状态字段还是框架已经支持, 需要自己打上标签,然后在数据过滤里做过滤,使打上标签的单据不再参加botp 七、集成模块----权限问题 1、用业务建模工具新定义的单据如何跟权限管理集成起来, 新定义的单据,在没有做权限管理之前,是不受权限控制的。 将新单据跟权限管理集成起来,大致分为三个步骤: 1、【工具】,【权限管理】,在此界面定义单据所在的目录及给单据设置各种权限项(查看、新增、修改、删除、审核等)。如果没有新建某种权限项,则默认此种权限项不受控制,是可以在任何情况下 使用的。-----这只是加了权限项,但是并没有应用到单据中。 2、要应用到单据中,必须在主菜单管理中给业务单元加上相应的权限项,然 后发布,这是设计期要做的工作。 3、在运行期时,通过administrator登录,在“用户管理”里同步权限项,分配相应的权限即可 八、集成模块----工作流问题 1、用业务建模工具新定义的单据如何跟工作流集成起来, 新建的单据通过【业务单元】,【功能】将此单据中的相关功能同工作流进行绑定,发布后,运行【工具】,【生成工作流和单据转换平台目录】生成工作流与业务建模工具同样的系统目录。这样前提条件都准备好了。再在业务建模工具里启动服务端,然后再工作流里进行工作流工具的连接,记得应用服务器地址的后面加上端口11036(192.168.19.176:11036),另外设置元数据的路径是当前解决方案所对应的metadata目录(记得勾掉默认的元数据为jar包的类型),启动工作流成功后,业务建模工具和工作流已经集成起来。 2、业务单元新增了一个功能,上面怎么没有与工作流绑定的选项, 需要单据上的功能才行,基础资料不能与工作流绑定。 3、怎样集成工作流建模工具,为何工作流建模工具不能连接BIM启动的服务器, 工作流连接服务器时可以设置连接端口号为11036(系统默认为11034)就可以了 4、b im 与 wfbuilder 集成问题:在bim中启动了apusic ,打开wfbuilder时找不到已启动的apusic服务器, bim中apusic端口和ormrpc的端口与 wfbuilder要求的不一致 BIM设置自己的应用服务器端口是为了解决与BIM外部启动的应用服务器冲突的问题,因为BIM启动的服务器只提供给BIM自己测试用,只作为它自己测试一种支持。为的是解决可以在BIM外部启动了Apusic 服务器后,BIM还可以自己进行测试。 5、创建工作流后,修改人工节点中的任务属性,然后保存,再进入的时候提示:当前页面包含无效的值。 该问题是一个已知问题,主要原因是工作流建模的时候,在新建单据上配置工作流,启动的是EAS的应用服务器而不是BIM内部的应用服务器。 解决办法: 1、 启动BIM的测试服务器 2、 修改工作流连接,譬如原连接地址为 127.0.0.1,在连接BIM的应用服务器时连接地址 应该改为 127.0.0.1:11036 3、 修改工作流的客户端元数据目录为: ”BOS安装目录” \ ”BIM工程名” \ metadata 6、在单据建立好以后再做工作流,在“转换工作流和单据转化平台目录”以后,在工作流连接后-在工作流管理的大纲中单据功能看不到我所做的单据功能,请问是否要部署以后才能看到,还是有其他原因, 在工作流视图里,看到的只是流程,你新建流程后, 在流程的人工节点给任务属性加功能的时候,可以看到你所做单据的功能 九、工作流使用问题解答 I、工作流快速入门部分 1、怎么理解流程变量, 流程变量是工作流引擎和业务系统的数据交互的桥梁。 工作流承载业务,驱动业务流程,但是不会执行业务。工作流中的业务执行,全部都会委托给具体的业务模块执行。那么,这些被工作流分割的业务功能,在工作流中被调用执行的时候,如何保证做操作的数据的一致性, 通过流程变量,在每一步的业务功能执行的过程中,将业务数据保存在流程变量中,那么整个流程的后续活动中,都可以引用该流程变量,来完成业务功能,保证业务数据的一致性。 例如:在凭证的审批流程中,新增凭证审批,审批的时候为什么可以正确定为到刚刚提交的那张凭证,而不是别的凭证,流程变量起到了重要的作用。在凭证新增之后,将可为一标示凭证的ID保存到流程变量中,在审批的时候将流程变量中的值传递给凭证,就可以根据这个ID可以唯一获取到一张凭证了。 流程变量在流程实例的生命周期内都是有效的。 2、怎么理解任务输入输出, 任务输入:在业务发生之前,有工作流传递给业务的数据。以凭证的过账为例,某个用户收到一条凭证过账的消息,双击消息处理。在双击之后、凭证的界面弹出之前,工作流会把定义的入口参数变量中的值传递给凭证,凭证根据这个值来展现特定的单据,展现特定的功能。 任务输出:在业务发生之后,由业务系统传递给工作流,需要保存在流程变量中的数据。仍以凭证过账为例,在用户操作完凭证过账之后,工作流继续流转之前,如果流程定义中定义了任务的输出,那么,就会将凭证对应的属性的数据,保存在流程变量中。已备在后续的流程活动中使用。 3、嵌入式工作流与流程自动匹配 金蝶EAS的工作流式支持嵌入式工作流,嵌入式工作流系统有如下的特性: 1、 无需更改用户的操作习惯,在序时簿上操作,也可以正常的激活驱动工作流,而不 必一定要到消息中心去处理业务 2、 流程自动匹配。可以通过执行流程的启动活动的操作,自动匹配流程,启动流程实 例。流程实例启动后,启动活动已经完成,流程自动向下流转。 流程匹配的条件是任务和参与人。在任务相同的情况下,流程匹配存在优先级。从 高到低依次是:职员、职位、组织、任意人。 4、场景1:单活动流程 场景说明:流程只有一个人工型活动,完成凭证提交的任务,流程结束。没有具体的业 务含义。 以凭证提交的业务为例。流程图如下: 定义步骤: 1、 拖入开始、结束活动 2、 拖入人工型活动,用连接弧连接起来。 3、 定义人工型活动 首先,定义人工型活动的任务,选择任务 选定任务后,定制任务的输入输出。 输入参数是由任务定义带出的 根据任务输入的意义,指的是在凭证提交之前,由工作流告知凭证的数据。新建一个流程变量,绑定该输入。 这样绑定的意思是:在凭证提交之前,工作流会将billID这个流程变量中的数据传递给凭证业务。凭证业务得到这个值之后,会根据业务需要做出判断。 [说明]所有人工型任务的输入参数,全部是在定义任务的时候就定义好的。每个任务的输出参数可能不同,是由于各个不同的业务系统对于业务开始之前,所需要的数据不同导致。 EAS系统中,基本上任务的输入参数只有一个BOID类型的参数。这是因为一般来但是在 说,通过这样一个类型的值,就可以完全定位一个业务单据,并且拿到这个业务单据,就可 以满足大部分的业务需求了。 [说明]对于示例中的这个节点,在业务发生的时候,billID还没有任何赋值,这个时候传递给业务系统的也将是个空值。根据工作流系统和业务系统的约定,传递空值对业务系统 来说,意味着新增单据。 再来看看任务输出 左边的是单据对应的业务对象的所有属性,右边是选定的输出。 在这里,将ID属性输出,并且选定输出的流程变量是billID 在这个简单的示例中,这个输出没有意义。 但是在后面的场景中,可以看到,这个输出具有很重要的意义:凭证提交完毕后,将可以唯一标示一张凭证的ID属性保存在流程变量billID中,在后续的活动中,如果还需要操作这张凭证,就可以通过billID来唯一定位这张凭证,保证业务的一致性。 任务定义完毕,来定义参与人。 参与人定义中,分为了默认参与人和条件参与人(条件参与人如何定制和使用,请参见另一篇专门针对提交参与人的文档)。工作流在获取执行人的时候,首先根据条件来逐个扫描条件参与人,发现没有符合,那么会取默认参与人。 这里简单处理,选择任意人。 [说明]前面提到过,流程自动匹配的优先级。下面举例说明。 有两条流程,同样启动活动的任务都是“凭证提交”,A流程的启动活动参与人设置为 B流程启动活动参与人设置为“公司所有人”。那么张三录入凭证的时候,匹配的“张三”, A。 流程是 [说明]任意人作为一个特殊的参与人定义方式,只针对于启动活动生效~意思是说,只 要有凭证提交的权限的人,提交凭证就可以匹配到该流程 到现在为止,这条简单的流程就已经定义完毕。发布。到EAS中提交凭证,然后到工作流监控中,会发现有一条流程实例,并且状态是已完成。 5、场景2:审批流程 场景说明:单据提交之后,经过一层审批,流程结束。 以凭证为示例。流程图如下 定义步骤: 1、 同场景1拖入活动 2、 增加一个审批活动,如图画连接弧 3、 配置提交活动。和场景1中一样选择任务,参与人也是任意人。但是任务的输出多 一项。由于在后续的消息中想展现出单据的编码,所以多输出一个单据编码到一个 流程变量number中 4、 配置审批活动。为了方便测试,参与人设定为流程发起人的本人 任务页签和一般的任务有些不同,是因为审批是一个通用的业务,对其任务进行了包装。 只是展现的UI不同,实质是一样的。 这一部分,就是任务输入。对于现在的场景,审批凭证,那么在业务单据内码这一栏选中billID。此时billID已经在提交之后,保存了刚刚提交的凭证的ID。一旦这个审批任务发生执行,那么,在执行前,工作流会将billID这个变量中保存的值传给业务系统。那么审批时就可以唯一定位到一条业务单据。 任务输出,选择将审批结果输出到一个枚举型的流程变量 审批结果 中。 定制审批消息 流程定义完毕。发布,在EAS中执行。 提交凭证,在消息中心收到一条消息,审批,通过。然后回到凭证序时簿,察看该流程,发现,凭证的状态还是“提交”而不是“审核”。 这是因为工作流中的多极审批,只是单纯的驱动流程,做一个选择而已,不会修改业务数据。 为了能够让凭证打上审批标记,按照如下方式修改流程定义 最后的这个自动活动,就完成给凭证打审核标记的功能。 任务选择如下: 任务的输入输出按照如下设置 保存、发布,再到EAS中执行一下。发现审批状态打上了。 6、场景3:带分支的审批流程 场景说明:在场景2中,没有根据审批结果来判断,无论审批是通过还是不通过,都会把审批的标记打上。在这个场景中,增加对审批结果的判断。审批通过,则打审批状态。审批不通过,返回修改。 仍以凭证为例。流程定义如下: 定义步骤 1、 提交、审批、自动节点的设置和场景2中一样。 2、 增加一个人工型活动,修改。选择的任务和“提交”一样。但是由于单据的ID和 单据的编码是新增的时候就定好的,无法修改。所以只需要定义任务输入就可以了, 不需要定义任务输出。 [说明]到这里应该可以看出,流程变量的重要性。以场景中的billID为例,从提交开始 ID。然后再审批的时候,需要在输作为输出参数被赋值,保存了可以唯一标示一张凭证的 入参数中传入该变量,在修改的时候,也需要在输入参数中传入该变量。这样就保证了提交、 审批、修改这些业务操作所操作的凭证是同一张 谁提交的谁修改,参与人设置为流程发起人本人 定制修改消息 3、 编辑连接弧 首先编辑“审批”到“自动”的连接弧。如下方式设置条件。 [说明]变量为“审批结果”这个枚举类型的时候,在变量或比较值一栏,回发现,列出 了“通过”和“不通过”两个选项。 这是建模工具会自动根据之前的定义识别枚举,然后将枚举的值也会自动列在选择范围 内。 然后编辑“审批”到“修改”的连接弧。按照如下方式设置条件 保存。流程定制完毕。发布。在EAS中提交凭证,本人审批。在审批的时候,不通过。会发现会收到一条修改的消息。处理该消息,修改。流程会继续回到审批。 [说明]嵌入式工作流的特性。例如,受到修改消息后,不在消息中心处理,直接进入凭 证序时簿,修改。效果和在消息中心处理一样,流程一样会继续向下流转。 [说明]业务单据一旦进入工作流,就要受到工作流的约束。例如,刚刚提交完凭证,流程执行到审批节点。这个时候工作流要求的行为是“某个人执行审批操作“。如果这个时候 进入凭证序时簿,修改凭证,会提示:”已在工作流处理中,任务不匹配“。 流程定义的图形很难看,稍微调整一下。 其中路由活动没有任何作用,只是为了美化图形。 [说明]路由活动的设计本身就是没有任何作用的,单纯美化图形。但是,后在在路由活 4里面可以看到。 动上附加了业务语义,这一点在场景 7、场景4:互斥、分支的审批流程 场景说明:场景3已经是一个简单的审批业务了。但是如果存在这样的需求“我提交了之后,在审批之前,我发现提交的单据存在问题,需要修改”。在场景3的流程定义中,无法完成。流程执行到审批,去修改的时候,会提示“已在工作流中,任务不匹配”。那么场景4就是为了满足这样的需求。 仍以凭证为例,流程图如下: 定义步骤: 1、 提交、审批、自动、修改按照场景3设置。 2、 在提交后,审批前,增加一个路由活动,连接弧如图 3、 定制互斥路由节点 选中互斥出口,并且选择“所有连接”或者“满足条件的连接”中的一个。 这样定义的意思是:一旦流程流转经过这个路由活动,会同时创建这个节点的所有后继节点的实例,在这个场景中就是审批和修改同时创建。然后有任何一个实例被处理,那么剩下的就会自动被取消。 [说明]如果路由选择了互斥,那么出口条件必须是“所有连接”或者“满足条件的连接” 中的一个,否则互斥将不生效。 流程定制完毕。发布。在EAS中提交凭证,会发现在审批前可以修改凭证了。并且根据流程定义,修改后,还会流转到互斥点,那么同样还可以再次修改或者审批。 II、工作流常见问题解答 1、选定指定下一步会签人功能,进入会签时如果有一个人不同意那么便形成了否决直接进入下一个审批人,能不能不形成一票否决,让所有人都会签完成。 目前只支持会签一票制 2、传阅有什么功能,我们试验传给一个人,但那个人什么都没有收到。 传阅发送的是 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 消息,请到通知类查看,如果没有就确定一下该用户有没有对应职员 III、现场常见流程配置 1、不同的部门执行不同的流程(即流程执行可以通过组织过滤) 不同部门之间执行不同的流程有两种解决方法 1) 通过定义多条流程来实现 , 使用场景: 多个公司之间,由于业务需求,执行的流程不一致 例如:A公司的流程是 提交->上级审批->财务审批->结束 B公司的流程是 提交->上级审批->间接上级审批->财务审批->结束 其中B公司流程比A公司的流程多一个活动(间接上级审批),可以定义两条的流程实现 , 实现方法 ),以上面的场景为例,其中 定义两条流程(流程1和流程2 “上级审批”活动的参与人都设置成为“制单人的直接上级”。 “间接上级审批”活动的参与人设置成“制单人的间接上级”。 “财务审批”活动的参与人都可以设置成为“财务部” 其中一条流程(流程1)的“提交”活动的参与人设置成为“A公司的所有员工”,另一条(流程2)设置成为“B公司的所有员工”。 如此定义,如果A公司的员工录入预算表,则会自动执行流程1,B公司的员工录入预算表,自动执行流程2 , 不足和限制 如果公司多的话,需要多条这样的流程,一旦业务发生改变,又可能需要修改多条 流程定义 2) 通过定义条件参与人来实现 , 使用场景 多个公司之间,执行的流程图必须要完全一致 例如:A公司的流程是 提交->本公司预算专员审批->财务审批->结束 B公司的流程也是如此 提交->总公司预算专员审批->财务审批->结束 B公司流程和A公司的流程图完全一致(可能在某个活动的执行人不同,但是流程的活动数量以及流转方式完全一致),只需要定义一条流程即可 , 实现方法 以标准的预算流程为例说明 首先在“提交活动”多定义一个输出,这个输出可以用来区分公司,例如 输出这个变量 然后,再审批活动上定义参与人 右键新增一个“条件参与人” 添加条件 编辑条件 添加参与人单元 添加执行人 执行人选定为“A公司的预算专员”。 同样再次增加一个“条件参与人”,条件为: 执行人是“总公司预算专员” , 不足和限制 要求不同的公司的流程的流程图完全一致。一旦存在不一致,只能另行建立流程。 2、同一部门中的同一个人执行不同的流程 如果存在这样的情况,则不能通过录入预算表提交的方式来。只能通过在“流程中心”通过手工启动不同的流程的方式定义两条不同的流程,但是启动活动的参与人都是张三。进入流程中心,根据不同的业务需要,启动不同的流程 如果,从单据上能够获取到相应的信息,可以明确地区分单据的类型的话,例如常规的预算表单据编码是以cg开头,基建是以jj开头,那么就可以根据这部分信息,画流程分支。就还可以通过录入单据的方式启动流程。 IV、现场常见问题解决方案 1、如何定义决策结点 1、 新增一个流程变量,字符串型(由于建模工具存在bug,请一定要在新建决策活动之前, 先新增流程变量,并且之后不会再新增流程变量) 2、 新增一个决策活动,在任务页面按照如下设置 3、 然后如图画流程 4、 在人工决策->张三审批的连接弧上定义条件 请注意,在里面出现了“给张三审批”的字样,就是在定义人工决策任务的时候决策项中的一项。 5、 在人工决策->李四审批的连接弧上定义条件 6、 就这样定义即可 2、后台事务使用说明 (一) 新建后台事务 点击新增按钮。 输入后台事务名称 选择任务 从“选择任务”对话框中选择需要的任务点击确定退出 如果所选任务有参数请输入有意义的参数。 设置调度 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 也就是执行计划 选择调度计划类型 详细设置选定类型的调度计划。 设置完成后点击确定退出。 设置好后台事务名称、任务、调度计划后就可以点击“保存”按钮保存后台事务。 保存成功。 保存后的后台事务如果需要运行需要点击“发布”按钮进行发布。 点击“发布”按钮后弹出“发布事务”对话框。 点击“发布事务”对话框下面的“发布”按钮进行发布。 这样一条后台事务就定义完成并已经生效。 (二) 手工转储工作流数据 工作流监控中可以进行工作流数据手工转储,如果需要手工转储请点击“转储”。 3、oracle下字符集不匹配工作流解决方案 如下操作,如果有测试帐套的话,请先在测试帐套上验证一下 1、 请在数据库中执行如下的SQL删除原有的流程定义: delete from t_wfd_processdef where fprocdeftype='NORMAL' 2、 通过建模工具导入流程 邮件中的allInitProcess.jar是包含了所有流程的包 1) 使用建模工具登录,选中流程视图 2) 然后选择菜单,工具导入流程模型 3) 在弹出的向导中,选定allInitProcess.jar,并钩选所有流程。 4) 导入完成后,请再次试试看能否打开流程定义 4、判断有无直接上下级脚本 com.kingdee.bos.workflow.service.ormrpc.IEnactmentService service = new com.kingdee.bos.workflow.service.ormrpc.EnactmentService( __bosContext); com.kingdee.bos.workflow.ProcessInstInfo[] procInstInfos = service .getProcessInstanceByHoldedObjectId(billID.toString()); com.kingdee.bos.workflow.ProcessInstInfo curProcInst = null; for (int i = 0, n = procInstInfos.length; i < n; i++) { if (procInstInfos[i].getState().startsWith("open.run")) { curProcInst = procInstInfos[i]; } } if (curProcInst != null) { initUserId = curProcInst.getInitiatorId(); com.kingdee.eas.basedata.person.app.PersonToWFAdapter adapter = new com.kingdee.eas.basedata.person.app.PersonToWFAdapter(); com.kingdee.bos.workflow.participant.Person[] persons = adapter .getSupervisor(__bosContext, initUserId); if (persons != null && persons.length > 0 && persons[0] != null) { 有直接上级 = true; } else { 有直接上级 = false; } } 5、凭证提交后就挂起是什么原因, 营口项目的一个案例: 凭证提交后就挂起是因为在提交活动的任务输出存在问题: 最后一个输出:获取本位币金额,应该是要获取所有的凭证分录的所有辅助帐的金额的和。 请修改流程定义,给这个输出增加一个聚合函数即可 6、根据人获取相应主负责的行政组织脚本. 首先新建一个流程变量 BOID类型 例如 orgId 脚本如下: String userId = ""; com.kingdee.eas.base.permission.IUser iUser = com.kingdee.eas.base.permission.UserFactory .getLocalInstance(__bosContext); com.kingdee.eas.basedata.person.PersonInfo info = iUser.getUserInfo( new com.kingdee.bos.dao.ormapping.ObjectUuidPK( com.kingdee.bos.util.BOSUuid.read(userId))).getPerson(); if (info != null) { String personId = info.getId().toString(); com.kingdee.eas.basedata.org.IPositionMember iPositionMember = com.kingdee.eas.basedata.org.PositionMemberFactory .getLocalInstance(__bosContext); com.kingdee.eas.basedata.org.PositionMemberInfo positionMemberInfo = iPositionMember .getPositionMemberInfo("select position.adminOrgUnit.id where person.id = '" + personId + "' and isPrimary = 1"); orgId = positionMemberInfo.getPosition().getAdminOrgUnit().getId(); } 7、流程导入说明 比如说allInitProcess.jar是包含了所有流程的包 1) 使用建模工具登录,选中流程视图 2) 然后选择菜单,工具导入流程模型 3) 在弹出的向导中,选定allInitProcess.jar,并钩选所有流程。 4) 导入完成后,请再次试试看能否打开流程定义 8、指定下一步参与人技巧 1、 原来定义的参与人不变 2、 添加一个条件永不为真的条件参与人 3、 为这个条件参与人添加一个参与人单元,这个参与人单元的包含的参与人为最大的组织 单元的所有员工 保存参与人即可 9、结合权限系统的通用流程 工作流已经封装一个工具方法,通过公司ID和权限项的名字获取拥有该公司该权限的 人。 定制方法如下: 1、 定义一个“外部数据类型”的流程变量,例如:审批人 2、 在启动活动输出该单据所对应的公司的ID,输出到一个流程变量,例如companyID 3、 在审批活动前增加一个脚本活动,脚本如下: 审批人 = com.kingdee.bos.workflow.participant.ParticipantHelper.getPermissionOwners ( __bosContext , companyID.toString ( ) , "权限项的名字(例如凭证审批的权限项 gl_voucher090_audit)" ) ; 4、 在审批活动选择参与人为流程变量“审批人”的本人 , 后续的改进 在审批活动的定义上增加权限项选择,自动获取拥有该权限项指定权限的人。 10、工作流典型脚本示例 工作流中的脚本语法符合java规范 工作流系统内置一个系统变量__bosContext,是此次工作流调用脚本活动的上下文 业务场景1:已经有UserId,获取这个User对应的主负责行政组织的组织Id 新增流程变量orgId,BOID类型。 脚本如下(红色的为流程变量): //获取User对象的远程控制接口 com.kingdee.eas.base.permission.IUser iUser = com.kingdee.eas.base.permission.UserFactory .getLocalInstance(__bosContext); //获取User绑定的人员 com.kingdee.eas.basedata.person.PersonInfo info = iUser.getUserInfo( new com.kingdee.bos.dao.ormapping.ObjectUuidPK( com.kingdee.bos.util.BOSUuid.read(userId))).getPerson(); //如果该用户有对应的人员 if (info != null) { String personId = info.getId().toString(); //获得主负责职位 com.kingdee.eas.basedata.org.IPositionMember iPositionMember = com.kingdee.eas.basedata.org.PositionMemberFactory .getLocalInstance(__bosContext); com.kingdee.eas.basedata.org.PositionMemberInfo positionMemberInfo = iPositionMember .getPositionMemberInfo("select position.adminOrgUnit.id where person.id = '" + personId + "' and isPrimary = 1"); //获取对应的对应组织Id orgId = positionMemberInfo.getPosition().getAdminOrgUnit().getId(); } 业务场景2:获取凭证的第3条分录的报告币金额 定义一个amount的变量,外部数据类型 脚本如下(红色的为流程变量): //获取凭证定义 com.kingdee.eas.fi.gl.VoucherInfo voucherInfo = (com.kingdee.eas.fi.gl.VoucherInfo) com.kingdee.eas.fi.gl.VoucherFactory .getLocalInstance(__bosContext).getValue( new com.kingdee.bos.dao.ormapping.ObjectUuidPK(billID)); //获取分录 com.kingdee.eas.fi.gl.VoucherEntryCollection entries = voucherInfo .getEntries(); //获取凭证的第3条分录的报告币金额 amount=entries.get(2).getLocalAmount(); 注意事项: 1、 脚本中出现的所有的非java.lang包下的类,一定要写pacakge+className的方式。 例如 com.kingdee.eas.fi.gl.VoucherEntryCollection entries = voucherInfo.getEntries(); java.util.Map map=new java.util.HashMap(3); 2、 脚本可实现的功能非常强大,理论上可以任意修改EAS的业务数据,使用的时候一定 要区分业务场景,恰到好处。 11、如何定义条件参与人, 场景:流程启动后,根据单据属性的不同,参与人不同。 流程定义: 1、 在启动活动,将需要判断的单据属性输出到流程变量。示例中选择的是凭证类型的编码 2、 后续活动中,根据流程变量中的值设置条件参与人 例如存在两种情况,在凭证类型为A类型的时候,有销售部完成审批,在凭证类型为B类型的时候由财务部完成审批。 添加两个条件参与人,如图设置即可。 说明:如示例流程,当凭证被提交后,如果凭证的凭证类型为“A类型”,则工作流之 会为销售部分配任务。如果凭证类型为“B类型”则工作流只会为财务部分配任务。如 果类型即不是A也不是B那么回去为默认参与人中指定的人分配任务。 12、条件参与人设置简易说明 以凭证的流程为例,简要说明要如何设置条件参与人:审批的参与人设置如下 首先在“凭证提交”多定义一个输出,这个输出可以用来区分公司,例如 输出这个变量 然后,再审批活动上定义参与人 右键新增一个“条件参与人” 添加条件 编辑条件 添加参与人单元 添加执行人 执行人选定为A公司可做审核业务的人即可。 同样再次增加一个“条件参与人”,条件为: 执行人是B公司可做审核业务的人 13、流程无法启动的原因 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 1、 流程的启动活动的参与人定义和当前提交人不一致。流程定义了张三,但是现 在是李四提交 2、 当前用户没有对应的职员。 3、 流程的生效和失效时间设置有问题 4、 流程被禁用 14、流程挂起原因分析 1、 流程定义错误,在某个人工型活动找不到参与人。 处理方式:重新指定参与人,恢复挂起即可。 2、 流程定义错误,使得流程在流转的时候无法根据连接弧条件计算得出后续路径 处理方式:暂无 3、 某个自动方法执行错误(单据设置审核状态但是期间设置存在问题),或者数据库 错误(数据库当机),导致挂起。 处理方式:修改业务错误或数据库问题,直接撤销挂起即可 对于流程挂起,都通过在工作流监控图的工具栏的“执行日志”按钮,察看到具体的挂起原因 十、集成模块----预警平台问题 1、客户化开发的单据无法在预警平台上显示,有什么解决办法, 打开预警平台的预警系统配置,单击“新增”,可新增相关单据的预警模板,刷新后即可看见所需的单据及所在目录。然后根据预警模板,可设置相应的预警条目设置。 2、设置即时预警消息时,对于BOS开发的单据,“设置及时预警触发动作”默认下只有“提交”,如果想加入“删除”等触发动作应该如何做, 切换到studio工具的大纲视图,然后找到actionRemove,右键选择“属性”,按照actionSubmit里的设置,在扩展属性里加上预警的扩展属性,在服务绑定里绑定预警的服务。 十一、集成模块----报表问题 1、定义报表步骤参考 前提: 1.需要修改报表前请先做好备份 2.不管是一般报表还是多维报表,定义报表前必须保证报表所关联的数据源生成sql正常 定义一般报表步骤: 1、如果数据源比较复杂,除了本身自带的基础资料的属性外,还需要通过id等属性和其他数据源相关联, 请在studio里定义;如果数据源比较简单,只有自身自带属性,则可以直接在bim里定义数据源.数据源的定义方法跟一般的query的定义没有区别. 2.如果需要做数据行的分组,小计,总计等功能,请在bim里打开"数据加工"的功能,在弹出面板的第三个页签"分组汇总输出"中,做关于某个字段的分组,组内的小计,以及所有行的汇总功能.注:数据加工的功能请参考数据源"个人薪酬累计数据源",里面做了典型的多分组及汇总功能。 3.数据源生成的sql正常,做完数据加工的设置,就可以定义一般报表了,把前两步定义好的数据源关联上此报表即可. 定义多维报表步骤: 1.定义多维报表所需要的事实表的数据源,检查生成的sql正常. 2.定义多维报表所需要的维度表,检查生成的sql正常. 3.定义一个多维数据源,把事实表和多维表关联起来, 4.定义一个多维报表,把多维数据源与多维报表关联起来即可. 十二、集成模块----组织架构 1、单据和基础资料是如何做组织隔离的及其他, 假如BIM中定义了一个主业务组织是采购组织的单据,那么: 序时簿的过滤: 1、 首先到用户的组织范围中查询用户有哪些组织的权限; 2、 再找出用户的组织范围中的组织有哪些是采购组织; (例如用户的组织范围中可能有A、B、C三个组织,但是A是财务组织,B、C是采购组织,那么必 须把A给过滤掉); 3、功能权限的过滤,看看用户对当前单据有没有查看的权限 4、 看看筛选出来的B和C这两个采购组织是不是实体,如果不是采购组织实体,那么也必须过滤掉; 编辑界面的过滤: 1、用户设置了单据的主业务组织是采购组织,则在单据的界面上应该动态加一个F7类型的字段“采购组 织” 2、该“采购组织”必须是必录的、可修改的 3、该"采购组织"的过滤条件参照序时簿的条件1、2、4 2、建了一个F7关联组织单元,通过组织单元实现OU隔离,而这组织单元没有细分为销售组织或库存组织之类的,请问应该引用哪个组织单元实体,(我们目前用的是FullOrgUnit) 如果建的是fullOrgUnit是做不了准确的ou隔离的,你可能需要删掉这个字段 再建具体类型的(采购、销售、库存等)组织。 3、F7关联组织单元的过滤跟一般的过滤没什么不同, 都是通过过滤queryInfo实现的 4、指定单据业务属性(即主业务组织)有什么意义,体现在哪里, 指定当前单据的业务属性可以控制当前登录用户的访问权限,比如,单据Test的业务属性为库存组织,当前登录用户的组织范围有采购组织,财务组织,行政组织,由于此用户没有库存组织的权限,所以访问不到这个单据。 5、是不是绑定库存组织的单据就不能引用业务属性是销售组织的基础资料, 引用基础资料是在设计期做的,跟运行期的组织控制没关系 6、基础资料的业务属性和单据的业务属性之间有什么关系, 都是为了起访问控制作用,所不同的是,基础资料可以不设业务属性,但是单据的业务属性的设置必须对应一个特定的组织 7、具体到项目,是不是所有的基础资料和单据的业务属性都指定是:库存组织, 基础资料如果是公用的,它的业务属性可以设为无; 单据和基础资料如果是库存模块,当然要设为库存组织 8、知道一个OrgUnitInfo,如何获取此info下面的子OrgUnitInfo, 找OrgUnitInfo的长编码字段longNumber,他们是由!隔开的,这里可以找到所有ou的编码信息。 9、在程序中给F7增加过滤参数,发现有组织隔离的F7,比如养户档案,得到F7的Filter后增加一个FilterItemInfo条件,调试的时候没有看到我加的条件,只看到了框架做的组织隔离的条件,(适用于序时簿的过滤) 重载方法 protected FilterInfo getDefaultFilterForQuery() { FilterInfo info =super.getDefaultFilterForQuery(); FilterInfo info1 = new FilterInfo(); info.merge(info1,"AND"); } 10、做过组织隔离的F7进行再过滤在实现类构造函数里添加如下代码(适用于编辑界面) EntityViewInfo evInfo = new EntityViewInfo(); FilterInfo filter = new FilterInfo(); filter.getFilterItems.add("",""); // 加用户的过滤项 evInfo.setFilter(filter); F7PromptControl.setEntityViewInfo(evInfo); 11、getCurrentFIUnit()和getCurrentOrgUnit()之间的区别, 如果我当前登录的组织是库存组织, getCurrentFIUnit()是不是就会找当前组织的上一级财务组织单元,其他的 getCurrentCtrlUnit(), getCurrentAdminUnit(), getCurrentCostUnit()等是否也是这个原理, getCurrentFIUnit就是取当前财务组织,一般用于财务类型的单据; getCurrentOrgUnit是取当前的业务组织,适用于所有单据; getCurrentFIUnit()是指去当前登录用户所对应的财务组织; 同理:getCurrentCtrlUnit()、getCurrentAdminUnit()、getCurrentCostUnit()分别指当前用户所切换组织所对应的CU,行政组织,成本组织。 十三、代码应用问题 1、如何在BIM中添加图片, 在业务单元定义界面增加一个标签类型字段,如为:TestImage,则对应的标签控件名为:lblTestImage,再如业务单元名为:TestBill,则在“TestBillEditUI.java”中的的构造函数中的Super()语句下添加, public TestBillEditUI() throws Exception { super(); this.lblTestImage.setIcon(new javax.swing.ImageIcon("E:\Images\testimage.jpg")); } 2、我的BIM运行测试时,有时会读到Jar包里面的代码,而不是先运行自己的代码。有时候却正常。请问是什么原因, 理论上是优先读取本地的class,然后才是库文件,如果出现了这种不正常的现象,请检查本地是否生成了class 3、获取当前窗口的工作状态(新增、修改或查看) getOprtState().equals(OprtState.ADDNEW); 4、在BOS视图,打开单据UI,可以看到file菜单有关于"提交"的选项,选择项有提交、提交并新增,提交并打印等。但在运行时在任何单据可都看不到这个菜单,请问如何才能看到并能使用这个菜单项, 有些按钮被应用框架屏蔽了,你可以在单据的loadFields()方法里设这些 按钮的可见性 5、在listui 中,有个小数字段,我在EDITUI中录入0时,保存后在LISTUI中显示为空,而不是0,请问怎么让他显示出来, 请重载listui里的getQueryExecutor()方法,然后在语句“super.getQueryExecutor();”后面加上exec.option().isAutoIgnoreZero = false; 用来设置0不转换为空。 6、ListUI中如何获取当前行, 先是判断当前选中行,然后根据选中行的ID=getSelectKeyValue();可得到当前选中行的具体信息。 7、我想让一个EditUI的分录不能新增行,已经把新增行的按钮什么的都去掉了,但在分录的最后一列按回车,table还是会自动新增一行。请问怎么屏蔽掉, 你在屏蔽“新增分录”那个按钮的同时, 调用屏蔽table的自动新增行语句disableAutoAddLine(); 使之不能自动新增行 8、多分录单据如何刷新editData, 调用loadData(); 9、定义了一个接口,如: public interface Inventory { public void updateInventory(); } 然后新建一个实现这个接口的业务单元,请问怎么操作, 一个业务单元有自己的接口,不必自己定义接口,只需要定义一个 方法就可以了。 10、定义异常,有一个主异常号,具体怎么定义,能不能重复,有什么规则, 异常根据向导直接新建就可以了,主异常号建议不重复,子异常号在本异常内不能重复,目前并没有什么特定的规则。 11、如果我想通过代码取物料中的“多计量单位”的记录(见下图),请问怎么实现, String materialID = "";//物料ID EntityViewInfo view = new EntityViewInfo(); FilterInfo filter = new FilterInfo(); filter.getFilterItems().add(new FilterItemInfo("material.id",materialID)); view.setFilter(filter); MultiMeasureUnitCollection units = MultiMeasureUnitFactory.getRemoteInstance().getCollection (view); 12、对于ControllerBean的方法,如何实现线程同步,有一个库存实体 (InventoryControllerBean)里有一个更新库存的方法(updateInventory()),在实现这 个方法的时候,我必须先查出一条记录,再对这条记录进行修改,然后再把这条记录提交。 这不是原子操作,请问怎么保证这个方法执行过程中没有其它方法对相同的一条记录进行 脏读取或修改, 不必要使用线程同步,只需要把你的几个方法写在一个事物里面就可以了 13、在运行界面的分录当中,最后一个字段的回车会跳到下一新增的记录,但不执行相应 的插入或新增方法的初始化代码。 如果想添加自己的代码,请在调用方法addLine()后加 14、this.getTable(kDPanel1).addRow()新增的行保存时为何会提示Error type 应该调用应用框架的addLine()方法 15、oracle 外键查询语句 select oc.name as "CONSTRAINT_NAME",o.name as "TABLE_NAME",o1.name as "R_TABLE_NAME" from sys.con$ oc, sys.con$ rc, sys.obj$ o, sys.cdef$ c,sys.obj$ o1,sys.cdef$ c1 where oc.con# = c.con# and c.obj# = o.obj# and c.rcon# = rc.con#(+) and o.owner# = userenv('SCHEMAID') and c.type#=4 and rc.con# =c1.con# and c1.obj# = o1.obj# and c1.type#=2 and o1.name = 'tableName.toUpperCase()' 只需要把红色的文字换成相应的要查找的表名就可以了。 16、单据经过审批以后,需要把审核人写到单据里,应该怎么做, 在单据对应的实体里加上方法auditBill(ctx,model),然后在单据生成的对应的 controlBean类中在方法auditBill里加上写审核人的代码,如: protected void _auditBill(Context ctx, IObjectValue model) throws BOSException { // TODO 自动生成方法存根 //super._auditBill(ctx, model); PurReqInfo purReqInfo = null ; // 进行值对象转化 purReqInfo = (PurReqInfo)model; // 获取当前日期 Date currentDate = new Date(); // 获取用户信息 UserInfo currentUser = (UserInfo) ctx.get(SysContextConstant.USERINFO); // 设置审核人 purReqInfo.setAuditor(currentUser); // 设置单据状态 // purReqInfo.setState(PurOrderType.Excute); // purReqInfo.setBizDate(currentDate); // 更新单据 try { update(ctx, new ObjectUuidPK(purReqInfo.getId()),purReqInfo); } catch (EASBizException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (BOSException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } 17、请问分录是如何过滤的, 分录的过滤,需要在过滤语句前设置它的分录类型和名字, 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 如下: filter.setEntryType(EntryFilterType.NORMAL); filter.setEntryName("xxx") ps:xxx是分录的名字 十四、升级参考步骤 第一步:备份 升级前请备份帐套、源代码以及自定义的元数据 第二步:安装 安装eas的server端、bos工具、客户端(client根据需要选择安装) 第三步:升级帐套 A.设置帐套升级信息 启动eas的管理控制台,切换到数据中心管理页签,鼠标焦点置于记录列表处,如下图: 按“F10”键,弹出帐套升级界面,如下图: 在此界面输入需要升级的帐套的数据库地址、用户名、密码以及帐套名称。 选中“执行指定的文件”,取消“强制运行所有文件”的选择,按”F7”按钮定位升级文件。 注意: 升级时,根据用户所用的数据库类型,相对应的版本不同,升级文件update.xml 也有所不同。比如温氏目前用的是sql server数据库,是从eas5.0的sp2升级到eas5.1 ,则 应该使用的升级文件是: W:\eas\Server\server\tools\admin\upgradescript\5_0_2to5_1_0\mssql\update.xml 另外,因为目前升级文件是从W:\eas\Server\server\tools\admin目录下读取update.xml文件, 则在执行升级前,请把 W:\eas\Server\server\tools\admin\upgradescript\5_0_2to5_1_0\mssql\update.xml文件复制到 W:\eas\Server\server\tools\admin目录下 温馨提示:因为具体环境不同,谨供参考以上路径的相对路径 设置完数据库相关信息,单击“确定”,即开始执行升级脚本。 B.升级过程中的问题 在升级的具体执行中,因为帐套不标准,可能会出现中断,请在中断界面按“Ctrl+E”, 获取出错信息,我这里将升级系统过程中的出错信息大致分为三类: a: 如果是外键导致数据表无法删除,则需要在数据库里手动删除相应数据表外键 b: 如果是某sql文件找不到,则需要查看升级文件是否最新 c: 如果是某外键已存在、某数据表已存在、某列重复之类的,则不用理会 因为升级脚本是每次执行都从头开始读取,所以在遇到中断时,从最后的出错信息位置找到 相应的出错SQL,然后注销掉update.xml文件中此SQL以前的(包括本SQL)的脚本。这样 继续做升级操作时,原先执行过的脚本就不会重复执行。 C.升级后主菜单记录的写入 帐套升级成功后,会发现写主菜单的数据表T_PM_MAINMENUITEM中没有系统 的菜单记录。因为目前升级对此数据表的处理方式,是先把整个数据表删掉再重建,然后 写入EAS系统的菜单记录,这样系统自定义的一些菜单就被冲掉。 所以在升级后,有必要在原有帐套寻找温氏定义的菜单记录,通过如下查询语句获取: select * from t_pm_mainmenuitem where fname like ‘BIM%’ 这些菜单记录需要写入到升级后的帐套里,用数据转换工具将这些记录转成写入到数据库的 插入语句,转换后的插入语句谨供参考(插入SQL位于文档最后的附表): D.更改主菜单数据表中分组基础资料的属性 数据表T_PM_MAINMENUITEM的字段值FuiOprt在序时簿状态默认为view,因为应用框架的变更,如果数据表T_PM_MAINMENUITEM的记录是分组基础资料的单据,且FuiOprt值为View时,新增,修改、删除按钮将会灰掉,不能使用,所以现在统一将数据表 T_PM_MAINMENUITEM中属于用户自定义的单据的记录的FuiOprt字段值改为’NULL’ 请参考以下SQL语句修改。 UPDATE t_pm_mainmenuitem SET fuioprt = NULL WHERE fuioprt IN (SELECT fuioprt FROM t_pm_mainmenuitem WHERE fuioprt = 'VIEW' AND fnumber LIKE 'BIM%') 通过以上步骤,得到升级后适合用户使用的帐套。 第四步:注册帐套 注册此帐套,并根据需要部署到server端(如果需要运行客户端,启用外部apusic时请部署) 第五步:导入最新解决方案 启动bos工具,切换到业务建模工具视图,导入解决方案,在导入的解决方案目录的相应位置加入自定义的元数据目录custom以及src目录 第六步:设置解决方案的帐套 确认解决方案设置中,所用的帐套为最新升级后的帐套 第七步:发布 对自定义的元数据统一重新发布一遍,发布时如果有关联其他基础资料的单据,请先发布被关联的基础资料。另外有少数单据没在BIM中定义,请自行在studio中发布,发布时请注意保持studio的发布路径和bim的路径保持一致。 第八步:在java视图编译 通过菜单【文件】—>【转换成java工程】,将默认的非java工程转成java工程,并切换到java视图,将整个src重新编译一遍。版本升级后,会有一些类、一些目录已经废弃不用了,所以会有一些编译错误,比如某些import的类,包找不到,静态类非静态类的互转,重载不合理,类型转换错误等。 第九步:测试 做完以上步骤,此系统的升级基本上已经完成。请启动快捷测试,测试升级后的系统。 十五、版本遗留缺陷 1、在BIM里面执行“生成工作流和单据转换平台目录”,提示生成完成,从控制台可以找到用户开发的基础资料已经加入了目录树的信息。之后启动EAS测试运行,但在编码规则定义的界面上,找不到用户开发的基础资料的目录。 另外,在java代码里面,单据的editui.java都有一个方法“setAutoNumber()”,但在基础资料的editui.java里面没有这个方法,它是如何去调用编码规则的呢, eas5.0环境下,基础资料没有设置编码规则所需的某些扩展属性,应用框架也没有给基础资料设置编码规则,所以会出现上述不合理的现象 eas5.1已经自动实现了基础资料的编码规则问题,不用做任何修改;对于以前在eas5.0环境下建立的基础资料,目前的解决办法是: 切换到studio视图,在基础资料对应的实体里将扩展属性codingRuleEnabled设为true;再添加扩展属性OrgType,并设OrgType的值为Company; 另一方面,因为编码规则的生成代码是生成在实现类的,而实现类在发布生成代码时是不能修改的,所以请备份以前的实现类xxxxEditUI.java,然后删除实现类, 重新发布生成代码,再把原有的实现类自己添加的代码加入到新生成的实现类的相应位置。 2、bos5.1发布5.0单据,会出现一些单据LISTUI界面新增、修改或删除不可用问题 数据表T_PM_MAINMENUITEM的字段值FuiOprt在序时簿状态默认为view,因为应用框架的变更,如果数据表T_PM_MAINMENUITEM的记录是分组基础资料的单据,且 FuiOprt值为View时,新增,修改、删除按钮将会灰掉,不能使用,所以现在统一将数据表 T_PM_MAINMENUITEM中属于用户自定义的单据的记录的FuiOprt字段值改为’NULL’ 请参考以下SQL语句修改。 UPDATE t_pm_mainmenuitem SET fuioprt = NULL WHERE fuioprt IN (SELECT fuioprt FROM t_pm_mainmenuitem WHERE fuioprt = 'VIEW' AND fnumber LIKE 'BIM%') 3、EAS5.1.0升级到5.1.1无法收到消息的问题 检查一下服务端的bosconfig.xml中是否存在如下的配置项: 如果没有则必须添加该配置。添加在配置项中。例如: …… 然后重启应用服务器即可。
本文档为【使用EAS BOS过程中常见问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_435706
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:88
分类:生活休闲
上传时间:2018-01-19
浏览量:112