BOS金后台事务开发文档.doc

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BOS金后台事务开发文档

后台事务开发文档 目 录 1. 简单后台事务示例 3 2. 后台事务执行过程及原理 13 2.1. 后台事务定义 13 2.2. 后台事务发布 14 2.3. 后台事务执行 15 3. 代码实现后台事务定义 22 3.1. 非持久化后台事务 22 3.2. 错过策略 25 3.3. 人工干预(撤销,挂起,唤醒) 28 3.4. 调度计划时间 33 简单后台事务示例 在进行后台事务示例测试之前,我们需要做一些准备工作,首先,我们要在BOS Studio的BIM视图下新建几个元数据,如图1所示: 如上图所示,新建了四个元数据(其中T_BO_BandOffice.table是根据实体右键导出表直接导出得到的),其实这四个元数据很简单,FileLogFacade.facade只有一个方法logWriter(String str);该方法实现了向服务器上的C:/file.log输入日志。 BandOffice.entity上新建了一个方法,该方法和FileLogFacade.facade的方法logWriter(String str)作用一样,名字为testLog(String str),只是为了示范两个不同的调用。 实体BandOffice.entity还新建了一个TestLogEvent的事件,该事件可以引用实体本身的方法logWriter,也可以引用功能FileLogFacade的testLog方法。 再定义了一个业务功能FileLogFunction,在这个业务功能中定义了一个操作fileLog;通过应用,与实体上的事件关联起来。 在定义好这些元数据后,我们需要把这些元数据进行发布,使服务器端在运行时能够加载这些元数据。 上面是我们对解决方案的发布方案设置,如红框标识的,我把元数据发布后生成的代码放在W:\workspace\bs_job\dev\test目录中,如下图所示,元数据发布后在这个目录下生成的代码,这是实体和功能(facade)发布时生成的代码,其他元数据发布时不生成代码。 在FileLogFacadeControllerBean中会生成功能定义的_logWriter方法,通过在这个方法中写逻辑即可实现,而实体定义的方法会在BandOfficeControllerBean中生成_testLog方法。 元数据发布后,我们需要重新生成系统子树,这样我们在重启服务器后可以在事务任务选择树中看到我们定义的功能。具体生成系统子树的方法,请参照《生成系统子树的两种方法.doc》。 登陆EAS后,我们选择系统平台——后台事务定义,进入后台事务定义界面: 接着我们就按要求进行定义,下面我们定义调度计划设置: 定义好后,我们进行保存,这个时候我们可以进行发布了,如下图: 我们再进入:系统平台——后台事务定义表,我们可以看到我们刚才定义的那个事务了 我们设置好了调度计划,当时间到达时,触发该事务,就会执行一个事务实例,我们可以查看该事务实例,我们也可以直接点击工具栏中的启动,这样会立刻启动一个事务实例。 从上面可以看出,事务执行成功。我们再来看看我们实现的功能,就是在服务器目录下写入一条时间信息记录: 后台事务执行过程及原理 首先我们要弄清楚,在EAS系统的后台事务管理平台中定义一个后台事务的过程是怎样的,你可以通过对代码的跟踪进行了解, 后台事务定义 首先我们在后台事务定义界面上新建一个后台事务(如下图所示),这些后台事务定义信息会被保存在T_WFD_PROCESSDEF中,可以在这个界面对已经定义好的后台事务定义进行修改和删除,当我们选择左边系统子树的某个后台事务定义节点,它对应的信息就会从该表中获得并显示在右边的界面上。 现在我想描述一下右边这颗系统子树的生成过程。这可系统子树是在该界面的构造函数的initializeUI()方法中进行初始化的 final BusinessTreeUtil tempPTU = new BusinessTreeUtil( BusinessTreeUtil.PROCESS); ((KingdeeTreeModel) this.packagekDTree.getModel()).setRoot(null); JobUtils.resetStartTimeMillis(); tempPTU.initialBusinessTreeView(this.packagekDTree,true); JobUtils.printTimeMillis(initialBusinessTreeView); this.packagekDTree.addTreeSelectionListener(new InnerTreeSelectionListener()); BusinessTreeUtil中有三个静

文档评论(0)

1444168621 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档