IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

IBM FileNet Enterprise Manager 如何实现类似数据库的触发和对触发的处理

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

史进军, 软件工程师, IBM
张炜琛, 软件工程师, IBM

2009 年 9 月 03 日

本文介绍了 Content Engine 中 subscription 相关的 event action, target object 和 trigger event 的概念,并讲解了如何在 Content Engine 中添加用户自定义的 event(custom event)和 event action,最后又在 FileNet Enterprise Manager 模拟了建立 subscription 的全过程。借助本文,读者可以更好的掌握 Content Engine 中 subscription 的相关概念和技术,更好的利用 Content Engine 完成工作并提高效率。

前言

IBM FileNet P8 4.0 Platform 是一个以内容和流程管理为核心的产品,主要应用在金融行业,为企业提供流程管理和内容管理的相关服务。

Content Engine(CE)则是 IBM FileNet P8 4.0 Platform 产品最核心的组件之一。它负责内容管理的核心解决方案,并为结构化数据、半结构化数据和非结构化数据进行统一集中式管理。其具体的功能有:内容的搜索与存储、版本管理、文档的生命周期管理、事件订阅等。

Content Engine 提供了一个框架可以使 System Event 或者 Custom Event 在 Content Engine 中的 object 或 class 上被触发时执行用户指定的行为(Event Action)。我们称之为 subscription,也就是说 subscription 是将 event action、一个或者多个 event 与一个监听触发 event 的 target Content Engine object 或 class 绑定在一起。一般而言,event action 是被开发者编码实现的,而 subscription 则是在 Enterprise Manager 被管理员所添加。

在 Content Engine 中可以使用 subscription 等相关技术来实现类似数据库的触发器的功能,从而可以实现对复杂流程的控制、维护数据完整性、审计等多种功能。





回页首


举例

假设我们已经通过编码实现了一个 event action(参见下面相关概念中关于 event action 的介绍和如何实现 event action 部分),让它在某个指定类型的 document 被删掉后发送一封 email 。我们需要执行以下步骤来实现并验证这个 subscription:

  1. 在该 document class 上创建一个 subscription,并将这个 event action 指派给它;
  2. 选择 Deletion Event 作为这个 subscription 的 trigger events 之一;
  3. 创建上述 document class 一个对象,然后将其删除;
  4. 您可以去您指定的邮箱中查找关于删除该 document 对象的 email 。

在 CE 中,当任何一个 object 或 class 发生了某个 event,subscription 处理器都会检验在其上是否指定了这个事件作为触发事件。如果指定了,处理器就会读取相应的 event action 的内容,并调用相应的方法作为该 event 的响应。





回页首


相关概念

当定义一个 subscription,您需要设置 event action, target object, and trigger event,下面就分别介绍它们的定义:

Event Action

Event action 是指一个实现了 Content Engine API's EventActionHandler 接口的 Java™ 类,即描述了当某一个 trigger event 触发 target object 定义的 subscription 时,Content Engine 需要执行的操作。

Event action 有着广泛的用途,如:

  • 通知 / 通讯:你可以实现一个 event action 用来自动根据特定的事件和源对象给合适的人发送相关的 email 等信息。
  • 记录日志 / 计数:通过跟踪 CE 中各种不同对象和事件的使用频率来自动生成关于事件的详细记录,或者自动增加相关计数器,并将这些信息写入数据库或者文件中。
  • 过滤:对于像文档生命周期(document life cycle)或者工作流流程(workflow process)等复杂的流程,您可能需要一个高级的过滤器用来在系统接收某个 document 之前对于这个 document 的内容或者 document 本身进行过滤。您也可以编写一个 event handler 来拒绝某些特定的 document 的进入并且中止或者回滚事务(transaction)。

Target Object

Target object 是指被 subscription 作用的对象,它可以是以下几种类型:

  • Class definition:在这种情况下,subscription 可以影响到它的所有 instance 。
  • Single instance:在这种情况下,subscription 只会影响到该对象的某一个 version 。
  • Version series:在这种情况下,subscription 可以影响到一个 versionable object 的所有 version,而每个 version 都是一个独立的 instance 。

上面的例子就属于 Class definition 的情况。

虽然您可以将 subscription 指派给独立的 instance,但是如果将 subscription 指派给 class 会让它变得更加有效,因为将 subscription 指派给 class 会保证它的对象会得到一致的管理。而且,在 class 上建立 subscription 会减少同时运行的 subscription 的总量,从而提升系统性能。

Trigger Event

Trigger event 是指希望被用来触发某个 subscription 的事件,而 target object 的类型决定了哪些 trigger event 类型对于其上的 subscription 是可用的。

上面的例子里,trigger event 的类型是“ Deletion Event ”。

下面的表格描述了在 Content Engine 中不同 target object 上可供使用的 trigger event 类型:


表 1. Event 信息表
Event 类型描述 Target object 类型
Cancel Checkout Event 无论何时,在一个 document 上的 reservation 被取消时就触发一个指定的 event action 。 Document
Change Class Event 无论何时,在一个 object 的所属 class 被变更时就触发一个指定的 event action 。 Document, folder, custom object
Change State Event 无论何时,在一个 document 的声明周期状态( lifecycle state )被变更时就触发一个指定的 event action 。 Document
Checkin Event 无论何时,在一个 document 被 check in 时就触发一个指定的 event action 。 Document
Checkout Event 无论何时,在一个 document 被 check out 时就触发一个指定的 event action 。 Document
Classify Complete Event 无论何时,在一个 document 已经被 classifier 处理过后触发一个指定的 event action 。 Document
Creation Event 无论何时,在某个 class 的实例被创建并保存时触发一个指定的 event action 。 Document, folder, or custom object
Custom Event 无论何时,在一个用户定义的 custom event 出现时触发一个指定的 event action 。很多种类的 object
Deletion Event 无论何时,在一个对象被从 object store 删除时触发一个指定的 event action 。 Document, folder, or custom object
Demote Version Event 无论何时,在一个 document 降级到一个 minor version 时触发一个指定的 event action 。只在允许 versioning 的 document 上有效。 Document
File Event 无论何时,在一个对象被归档到一个文件夹时触发一个指定的 event action 。(包括子文件夹的创建) Folder
Freeze Event 无论何时,在一个 document 的 Freeze 方法被调用时触发一个指定的 event action 。 Document
Lock Event 无论何时,在一个对象的 Lock 方法被调用时触发一个指定的 event action 。 Document, folder, or custom object
Promote Version Event 无论何时,在一个 document 升级到一个 major version 时触发一个指定的 event action 。只在允许 versioning 的 document 上有效。 Document
Unfile Event 无论何时,在一个对象被从一个文件夹中删除时触发一个指定的 event action 。(包括子文件夹的删除) Folder
Unlock Event 无论何时,在一个对象的 Unlock 方法被调用时触发一个指定的 event action 。 Document, folder, or custom object
Update Event 无论何时,在一个对象的 properties 被改变时触发一个指定的 event action 。 Document, folder, or custom object
Update Security Event 无论何时,在一个对象的 Security 设置被改变时触发一个指定的 event action 。 Document, folder, or custom object

Custom Event

尽管 Content Engine 已经提供了很多种类的 event,但其强大的可扩展性使您仍然可以根据需要创建自己的 custom event 。

在默认情况下,Event 下面存在这一个 CustomEvent 类,它是所有用户定义的 custom event 的基类。也就是说使用 Enterprise Manager 创建自己的 custom event 就是创建了一个 CustomEvent 的子类。

一旦创建了一个 custom event 并且刷新了 object store,那您就可以在给 class 或者 object 创建 subscription 时从可用 event 列表中选取该 custom event 。

小结

在 Content Engine 中,subscription 包含了 event action, target object 和 trigger event,它们代表的含义分别为:


表 2. 概念小结表
Event actionSubscription 被触发后,执行的操作
Target object设置 subscription 的目标,即在哪监听 trigger event 的发生,并触发 event action
Trigger event描述了哪种(或哪些)事件可以触发该 subscription 。





回页首


如何实现 Event Action

上面提到过 Event action 是指一个实现了 Content Engine API's EventActionHandler 接口的 Java™ 类,而 EventActionHandler 接口里只定义了一个方法:

void onEvent ( ObjectChangeEvent  event, Id  subscriptionId)
			 

其中 event 表示 Trigger event,而用户或者开发者可以通过 subscriptionId 来获取与这个 event acion 关联的对象,即 target object 。实现了 EventActionHandler 接口中的 onEvent()方法的 class 即可作为 event action 。

如:

public class DeleteDocumentEventHandler implements EventActionHandler 

 { 

 public void onEvent(ObjectChangeEvent event, Id subscriptionId) 

 { 

 //send an email message 

 } 

 } 

在实现了这个方法后,您可以将该 class 编译成 class 文件或打包成 JAR 文件,然后就可以在新建 subscription 时,使用该 event action 。





回页首


使用 Enterprise Manager 创建 Subscription

1. 在可以创建 subscription 的 object 或者 class 上点击右键,选中 Add Subscription:


图 1. 新建 Subscription
图 1. 新建 Subscription

2. 输入 Subscription 的名字:


图 2. 输入 Subscription 的名字
图 2. 输入 Subscription 的名字

3. 选择是对该 class 的所有 instance 都生效,还是对单独的某一个生效:


图 3. 选择 Subscription 影响的对象
图 3. 选择 Subscription 影响的对象

4. 从可用 event 列表中选择触发 Subscription 的 trigger event(前面提到,您可以建立自己的 custom event 看来扩展 Content Engine 提供给您的 trigger event)


图 4. 选择 trigger event
图 4. 选择 trigger event

5. 选取 Event Action,即当上面选中的 event 出现时,做出什么相应。您可以在这里创建新的 Event Action, 只需要指定实现 EventActionHandler 接口的 class 或者 JAR 文件的路径,然后给该 Event Action 命名即可。


图 5. 选择 Event Action
图 5. 选择 Event Action

6. 指定一些附加的属性:


图 6. 指定附加属性
图 6. 指定附加属性

7. 最后点击 Finish 。


图 7. 点击 Finish
图 7. 点击 Finish

这样,我们就完成了在 ContentEngineTest 类上建立名称为 SubscriptionTest、trigger event 为 Deletion Event、Event Action 为 Workflow Event Action 的一个 Subscription 。

这个 Subscription 会在 ContentEngineTest 的实例(Target object)被删除(Deletion Event)时自动触发 Workflow Event Action 。





回页首


总结

本文介绍了 Content Engine 中 subscription 相关的 event action, target object 和 trigger event 的概念,并讲解了如何在 Content Engine 中添加用户自定义的 event(custom event)和 event action,最后又在 FileNet Enterprise Manager 模拟了建立 subscription 的全过程。借助本文,读者可以更好的掌握 Content Engine 中 subscription 的相关概念和技术,更好的利用 Content Engine 完成工作并提高效率。希望本文对您的工作有所帮助。



参考资料

学习

获得产品和技术
  • 使用可直接从 developerWorks 下载的 IBM 试用软件 构建您的下一个 Linux 开发项目。


讨论


作者简介

史进军的照片

史进军:就职于 IBM 中国开发中心 ECM FVT 部门,对 FileNet Content Engine 的框架有深刻理解,有丰富的客户支持和项目经验。


张炜琛的照片

张炜琛:就职于 IBM 中国开发中心 ECM FVT 部门,对 FileNet Content Engine 有深刻理解。




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款