电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶云星空BOS专题中级课-App插件.pptx

金蝶云星空BOS专题中级课-App插件.pptx_第1页
1/49
金蝶云星空BOS专题中级课-App插件.pptx_第2页
2/49
金蝶云星空BOS专题中级课-App插件.pptx_第3页
3/49
11993-2019金蝶国际软件集团有限公司④内部公开请勿外传BOS平台部2020年7月1993-2018金蝶国际软件集团有限公司金蝶云星空BOS专题中级课App层插件开发2课程大纲3Content010203总体介绍App层插件执行计划最佳实践04答疑054Content010203总体介绍App层插件执行计划最佳实践04答疑055金蝶云星空分层架构图展示层SilverlightWeb客户端WPF桌面客户端服务层动态表单UI生成服务内核层表单动态生成引擎动态表单控制服务Web服务器动态表单视图模型动态表单控制器动态表单数据模型扩展逻辑层动态表单编程接口表单生成插件表单逻辑服务表单操作缺省值计算函数业务插件动态表单元数据应用服务器动态表单逻辑组件动态表单服务端插件动态表单服务端编程接口数据库服务器元数据业务数据校验规则客户端公共编程模型+客户端插件+第三方设备集成接口移动客户端Office客户端HttpHttp业务服务6操作简介校验规则服务调用权限服务插件•可以配置内置的校验规则,如单据合法校验等,有效的减少了用户代码量•可以调用系统内置的服务端服务,减少代码的重复量,以达到复用的目的。•可直接利用现有的权限功能对当前操作设置权限,无需代码编写•开发可以对当前操作轻松的编写二开插件实现自定义的事件干预7App层插件事件运行时机8Content010203总体介绍App层插件执行计划最佳实践04答疑059App层插件-继承关系10App层插件-示例代码11App层插件-插件注册12App层常用服务服务名称功能说明MetaDataService读写元数据ViewService读取单据的数据QueryService数据查询服务SystemParameterService读写系统参数UserParameterService读写用户参数SaveService数据保存服务NetworkCtrlService网控管理CacheUtil缓存读写工具类DBUtils数据库访问工具类TemporaryTableUtil临时表管理工具类13标准校验器14标准表单服务15App层插件案例演练-插件事件执行演练单据:采购订单演练场景:执行提交操作演练内容:操作服务插件事件执行过程<1>编写服务插件,重写所有插件事件。<2>调试服务插件,观察插件事件的执行顺序。16App层插件案例演练-校验器演练单据:采购订单演练场景:保存操作演练内容:如何编写校验器,在保存采购订单数据时进行超额检查<1>当采购总数量超过100时,禁止保存。<2>当采购总金额超过10000时,禁止保存。17App层插件案例演练-校验器18App层插件案例演练-交互异常演练单据:采购订单演练场景:审核操作演练内容:如何发起交互?<1>如何输出一个标准交互?<2>如何输出一个复杂交互?<3>插件中如何知道用户在交互界面上选择了【是】还是【否】?校验器中:validateContext.IgnoreWarning插件事件中:Option.HasInteractionFlag<4>哪些位置可以发起交互?校验器,表单服务,事务内的BeginOperationTransaction事件和EndOperationTransaction事件。19App层插件案例演练-交互异常20App层插件案例演练-事务处理演练单据:销售出库单演练场景:销售出库单保存时事务内插件事件发生中断演练内容:如何处理操作内的事务异常?<1>如何优雅的中断当前操作?(注意回滚内存脏数据)<2>嵌套事务有哪些注意事项?(避免隐式提交事务,不要在事务中执行耗时逻辑)<3>不同的事务类型有什么差异?TransactionScopeOption是否存在环境事务范围参与Required否参与新事务(将成为根范围)RequiresNew否参与新事务(将成为根范围)Suppress否不参与任何事务Required是参与环境事务RequiresNew是参与新事务(将成为根范围)21App层插件案例演练-动态服务插件演练场景:当系统中所有库存相关的业务单据被反审核后,都要调用一个更新库存的服务插件,这种业务场景应该怎么来实现呢?方案1:每个业务单据都注册该插件(少量单据时推荐)。方案2:使用动态服务插件在后台注册(大量单据时推荐,此方法还可以防止用户在BOSIDE禁用该插件)。演练内容:如何注册动态服务插件?往T_META_OPERATESERVICEPLUGIN表中插入一行数据就可以搞定。22App层插件案例演练-动态服务插件23Content010203总体介绍App层插件执行计划最佳实践04答疑0524执行计划应用场景•任务需要定时执行•任务需要多次执行定时任务•任务执行资源消耗大•任务执行时间长耗时任务•数据清理,数据同步•日志归档,系统维护后台任务25执行计划运行框架后台Job•Windows服务•负责任务调度管理中心站点•提供任务执行上下文•任务执行权仲裁(多个计算站点)计算站点•K3CloudApp•负责任务的执行•记录执行日志26执行计划开发过程测试任务执行计划列表进行测试检查任务执行情况注册任务执行计划列表新增任务配置运行参数编写任务继承IScheduleService接口实现Run方法27执行计划开发过程28执行计划案例演练演练单据:销售订单演练场景:开发一个定时任务,每隔1分钟刷新一次销售订单汇总数据到指定的表中,用于给演示大厅的看板提供数据源。演练内容:<1>编写执行计划完成汇总数据刷新功能。<2>配置执行计划,使之能定时执行。29Content010203总体介绍App层插件执行计划最佳实践04答疑0530App层插件开发最佳实践-重要的事情说三遍以下对象实例任何时候都禁止二开修改:<1>元数据(BusinessInfo和LayoutInfo下的所有属性)。<2>上下文(Context下的所有属性)。一定要修改时,深拷贝一份,在备份上改。31App层插件开发最佳实践-禁止修改元数据32App层插件开发最佳实践-服务定义约束App层服务都是走单例模式,所有服务请求共用同一个服务实例,因此,服务类中不允许定义变量,只允许定义方法,否则可能会造成数据冲突,甚至串账等严重后果。33App层插件开发最佳实践-DataReader必须使用using代码块访问DataReader,否则很容易产生连接池资源耗尽问题:using(IDataReaderrs=DBUtils.ExecuteReader(ctx,sql,parm)){//todo}如果不使用using,将会导致:数据库连接不能及时释放;连接池被耗尽;提示连接已关闭,数据库无法正常连接。34App层插件开发最佳实践-DataReader35App层插件开发最佳实践-SQL性能问题<1>不要在事务中执行长耗时的数据库操作。<2>不要循环执行SQL,更不要嵌套循环执行SQL<3>SQL参数化<4>控制SQL语句大小<5>控制查询语句返回的数据量36App层插件开发最佳实践-SQL性能问题-参数化37App层插件开发最佳实践-SQL性能问题-SQL太大38App层插件开发最佳实践-避免事务失效问题如果是Oracle账套环境,要避免在事务内执行DDL语句(例如createtable,createindex,droptable,truncatetable等)。因为DDL语句的执行会隐式的触发事务的提交,从而导致该语句后的数据库操作语句执行时,产生事务已失效的中断。为避免此类问题,建议在事务外围执行DDL语句。39App层插件开发最佳实践-插件抛异常问题尽量不要在AfterExecuteOperationTransaction事件中throw异常。因为前面事务已经提交,后面抛出异常容易导致后续业务不正常。例如单据启用了工作流,提交成功后抛出异常,会导致工作流后续业务处理不正确。正确的做法是把异常信息作为提示信息放到OperationResult中,另外,如果是数据不合法校验,应该在事务前或事务中抛出异常。40App层插件开发最佳实践-批操作性能问题不要在事务中循环数据包去做读写数据库的操作!!!不要在校验器中循环数据包去做读写数据库的操作!!!否则在批量处理时会带来严重的性能问题,例如:1000张单据批量审核,就是1000次数据库操作,会严重影响性能。41执行计划最佳实践-如何避免任务重复执行执行计划通过账套进行隔离,每个账套独立运行自己名下的执行计划。<1>不要将同一个账套注册到不同的管理中心。<2>测试环境和正式环境要严格隔离,严禁混用。<3>执行计划处理逻辑只和账套数据有关,与站点和服务器无关。42执行计划最佳实践-如何避免任务并发执行执行计划运行框架采用异步运行模式,不支持独占任务模式,不支持同步任务模式。如果当前务的执行时间超过了执行计划设置的执行间隔,当到达下一个执行时间点时,新的任务实例会马上启动,从而可能产生同一个时间点,多个任务实例都在执行的情况。如果您的计划任务必须在独占模式下运行,需要在Run接口中自行增加任务独占运行的控制逻辑。43执行计划最佳实践-WebApi调用问题不建议在执行计划中直接调用WebApi服务。如果确实有应用需求,可调用Kingdee.BOS.WebApi.FormService.dll里面的WebApiServiceCall类。这种调用方式避免了Http请求,并且绕开了用户登录验证,可有效提升性能。44执行计划最佳实践-计划启动不了,停不下来?总有用户反馈,我的执行计划启动不了,或者停不下来,怎么办?写日志!!!推荐方案:1.关键节点写日志(比如任务开始位置,结束位置)。2.假如trycatch了代码块,不要吃掉异常,要把异常写日志。45执行计划最佳实践-问题排查思路46工具推荐工具名称用途ILSpy反编译工具,反编译.NET组件,源码学习。ReSharper代码生成工具,深度代码分析,智能代码协助,实时错误代码高亮显示,简化编码工作。dnSpy反编译调试神器,无需任何源代码,生产环境可直接反编译程序集,修改代码和调试程序集。windebugWindows调试工具,进程死锁,系统闪退,IIS崩溃,dump文件分析利器。47Content010203总体介绍App层插件执行计划最佳实践04答疑0548答疑时间49Thanksterimakasih感謝谢谢ありがとうขอบคุ ณ1993-2019金蝶国际软件集团有限公司

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

金蝶云星空BOS专题中级课-App插件.pptx

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信