在 IBM Business Process Manager 中清除数据

IBM® Business Process Manager 是一款不断积累数据的有状态产品。与任何有状态产品一样,拥有偶尔清除一些状态的战略,这对它的持续健康至关重要。本文将探讨 IBM BPM 中一些收集数据的区域,以及如今存在的清除该数据的方法。 本文来自于 IBM Business Process Management Journal 中文版

Dave Spriet, 软件开发人员, IBM

Dave Spriet 是 IBM 多伦多软件实验室的一名软件开发人员。他为 WebSphere Message Broker 开发工具,专注于面向对象的技术、XML、XML 模式和 UML 建模。他拥有 McMaster University 的计算机科学与统计学士学位(荣誉学位)。


developerWorks 投稿作者

Phil Coulthard, 首席架构师,BPM 和 SOA 工具, IBM

Phil Coulthard 是 BPM 和 ODM CTO 办公室的成员,该办公室在架构上管理 IBM Business Process Manager 和 Operational Decision Manager。他是 IBM BPM 中的工具的首席架构师,过去九年一直在 BPM and Integration 工作,在此之前,他曾是 IBM i(那时称为 iSeries)中的编译器和工具的首席架构师。



2014 年 2 月 10 日

如果数据不受限制地增长,那么随着时间的推移,数据增长可能导致磁盘空间问题和性能问题,因为数据库查询将会花费更长的时间。在本文中,我们将介绍 IBM BPM 收集数据库中或文件系统中的数据的所有区域。在信息特定于 IBM BPM Advanced 或 Standard 版本时我们会指明,并提供特定于版本的信息。我们会回溯到 IBM BPM 的 V7.5.1.1 版,但此处介绍的许多内容都适用于以前的 WebSphere Process Server 和 WebSphere Lombardi Edition 产品。

本文将介绍以下主题:

  • Process Center 项目和快照
  • Process Server 流程和任务实例数据
  • Performance Data Warehouse 事件数据
  • 可能会积累一些额外的辅助数据,但没有上述数据那么快
  • IBM Business Monitor,IBM BPM 的一个补充产品。

Process Center

Process Center 包含许多项目,它们是一些可部署的流程应用程序或可重用的工具包。

流程应用程序和工具包

流程应用程序和工具包可从一个项目的 Process Center 的 Manage 选项卡归档,如 图 1 中所示。

图 1. 归档流程应用程序和工具包
归档流程应用程序和工具包

点击查看大图

图 1. 归档流程应用程序和工具包

归档流程应用程序和工具包

归档一个项目不会删除它或回收它在数据库中的空间,只会标记它,使它默认情况下不会显示在 Process Center UI 中。要实际删除一个项目,可选择显示归档的项目,然后删除该项目,如 中所示。为此,必须先归档该项目。

图 2. 删除归档的流程应用程序和工具包
删除归档的流程应用程序和工具包

删除一个项目将删除所有快照和流程实例,以及所有 BPM Advanced 内容,比如关联的 BPEL 流程实例、业务级应用程序和企业应用程序。

此删除功能已添加在 BPM V7.5.1.0 中,仅可从用户界面使用。没有完成此操作的脚本化的方式。

Process Center 中的快照

在使用 Process Designer 编辑一个流程应用程序或工具包时,将会更改它的一个称为 Current(或者以前称为 Tip)的特殊版本或快照。在任何时间点,您都可以创建一个新快照并为该快照命名。可以将已命名的快照部署到 Process Server 中,但 Current 版本是不可编辑的。

您可能不知道的是,每次将工件保存在 Process Designer 中时,就会在数据库中创建一个未命名的快照。这对您查看历史记录很有帮助,但由于数据库会不断增长,这么做具有一定的代价。

您可归档各个命名的快照,而无需归档整个项目和它的所有快照。您可以从流程应用程序或工具包的 Snapshots 页面,使用每个快照下拉菜单完成此操作。再次申明,这不会删除快照,只会标记并隐藏它。

那么如何删除 Process Center 中的快照呢?BPM V8.5.0 引入了 BPMSnapshotCleanup wsadmin 命令,可以使用它来删除已命名的和未命名的快照。必须先对已命名的快照进行归档,然后才能删除它们。

这个重要的命令已作为 8.0.1.2 修复包的一部分向后移植到 BPM V8.0.1 中。如果您使用的是 V8.0.1,那么可以更新到 V8.0.1.2 来获得此命令,您还会获得我们稍后将介绍的另外两个与清除相关的命令。

8.5.01 修复包引入了启用未命名快照的自动清除的新功能。通过向 100custom.xml 文件中添加以下代码,可以启用此功能:

<unnamed-snapshots-cleanup-config>
    <enabled>true</enabled><cleanup-start-time>23:23:59<
	/cleanup-start-time><cleanup-duration-minutes>5<
	/cleanup-duration-minutes><clean-after-number-named-snapshots>4<
	/clean-after-number-named-snapshots>
</unnamed-snapshots-cleanup-config>

请参阅 IBM BPM V8.5 信息中心中的 自动删除未命名快照,了解有关的更多细节。

与此同时,还有一种删除未命名快照的简单方法:将一个快照导出为 twx 文件,然后将它重新导入不同的 Process Center 中。未命名的快照不会被导出。

Process Center 中的高级内容

如果您拥有 IBM BPM Advanced,而且拥有包含高级内容(比如 BPEL 流程)的流程应用程序和工具包,那么您需要采用某种战略来删除业务级应用程序 (BLA),以及已存在的该内容在 Process Center 回放服务器中创建的企业应用程序。

对于 Process Center 中每个包含模块或库的流程应用程序或工具包,无论是直接包含还是通过一个工具包继承,都会为 Current 快照以及包含高级内容的工具包和流程应用程序的每个命名快照创建一个 BLA。该 BLA 将被命名为 <Acronym>-<Snapshot-name>,例如 PA1-V1.0。

在这些 BLA 中,每个模块或库将生成一个包含一项资产的 EAR。这些 BLA 是按需创建的,既可以在从 Process Designer 执行回放时创建,也可以在从 Integration Designer 发布到 Process Center 时创建,而且将保留到流程应用程序或工具包被取消激活的时候。与创建包含高级内容的工具包、从流程应用程序使用这些工具包以及创建工具包和流程应用程序的快照一样,这些高级内容可能快速积累,影响服务器启动时间、内存使用和一般信息。

通常您实际上只需要流程应用程序的 Current 快照的 BLA,所以您可从任何工具包的 Current 快照和工具包或流程应用程序的任何命名快照删除它们。要删除 BLA,只需 “取消部署” 您的快照。可在 Process Center 的 Snapshots 页面上看到此选项,如果该快照的高级内容已部署,那么可以在 Current 快照的下拉菜单中看到它。对于命名快照,您首先需要使用 Deactivate 操作,如果已经有了部署的高级内容,那么您会看到 Undeploy 操作。当然,您始终可以使用 WebSphere 管理控制台或命令手动删除 BLA 和 EAR。不要担心会删除一些可能需要的内容,因为这些 BLA 会在需要时重新创建。

如果您使用了高级集成服务 (AIS),它们是 BPMN 与 BPEL 流程之间的桥梁,那么我们推荐您使用 façade 模式,以减少所涉及的 EAR 的大小。此模式已在 developerWorks 文章 使用 IBM Business Process Manager Advanced V7.5 实现 Facade 模式 中介绍。


Process Server

Process Server 是用来安装您的流程应用程序快照的地方和您运行快照中的流程的地方。在 Process Server 中,您主要需要考虑的是(在积累内容方面)如何删除这些安装的快照,以及如何在流程完成或终止后删除它们。

Process Server 中的快照

您能够并且会将同一个流程应用程序的多个快照安装到某个给定的 Process Server 中。随着时间的推移,这些快照可能不断积累,使得删除不再使用的快照成为明智之举。

对于 BPM Advanced 客户,一定要记住的是,如果一个流程应用程序包含任何高级内容,比如来自 Integration Designer 的模块或库,那么将会为此流程应用程序创建一个具有 EAR 的业务级应用程序。在概念上,BPM 内容会安装 到一个 Process Server 中,在这之后会部署 BPM Advanced 内容,最终会生成和安装 BLA 和作为要素的 EAR。这是理解相关 wsadmin 命令所需的可靠线索。

您只能在 BPM V8.0.1 或更高版本中使用引入 BPMDeleteSnapshot wsadmin 命令从 Process Server 删除快照。要让此命令生效,必须满足一些前提条件,其中包括:

  • 快照不能拥有任何正在运行的实例,不能是默认的快照。使用 BPMShowSnapshot 命令确定是否属于这些情况。
  • 快照不能是活动的。使用 BPMDeactivateSnapshot 命令取消激活快照。对于 BPM Advanced 流程,您还需要使用 BPMStop 命令。这些命令可预防 BPMN 和 BPEL 流程的新实例启动,允许现有的实例进入静默状态。
  • BPM Advanced 内容(包括 BLA 和 EAR)需要使用 BPMUndeploy 命令取消部署。

在成功删除一个快照后,请注意,它的所有业务流程定义 (BPD) 实例都将和它一起删除。

Process Server 中的实例

这里要考虑两种类型的实例:用户或人工任务实例,以及流程实例。BPMN BPD 流程和 BPEL 流程均如此。任务和流程实例都记录在数据库中,甚至在任务和流程完成后也是如此。因此,考虑偶尔清除较老的实例很重要。

删除流程实例时,还会删除任务实例。也可采用与流程独立的方式删除 BPEL 人工任务实例,但 BPD 用户任务不属于这种情况。

要删除 BPD 流程实例,以及与它们有关联的任务实例,从 BPM V8.0.1 开始,您可以使用 BPMProcessInstancesCleanup wsadmin 命令。这允许您识别要删除的具体实例,或者识别要删除在其范围内完成的任何实例的日期范围。您还可以识别删除完成的、取消的、失败的还是所有类型的实例。此命令已在 V8.0.1.2 和 V8.5.0.1 中增强,以包含指定最长持续时间和要删除的最大实例数量的额外参数,进而使它成为可在一个定期计划的作业中运行的候选命令,所以您可以限制它对系统的影响和限制它的工作。

在 V7.5.x 中不存在此命令,但可使用 V7.5.x 提供的一个存储过程 LSW_BPD_INSTANCE_DELETE 来显式删除识别的流程实例。请注意,有一个中间修复程序显著改善了这个存储过程的性能。有关的细节,请参阅 APAR JR46453

BPM Advanced 提供了一些删除 Business Process Choreographer (BPC) 人工任务和流程实例的选项:

  1. 在 Integration Designer 中建模人工任务和 BPEL 流程时,指定在完成时自动删除实例。
  2. 使用 BPC Explorer 单独删除任务或流程。
  3. 使用 BPC API 创建一个自定义实用程序。
  4. 使用所提供的 jython 脚本 deleteCompletedTaskInstances.pydeleteCompletedProcessInstances.py 删除一批任务,或者按照状态、是否拥有用户或完成日期来删除流程实例。
  5. 使用 Human Task Manager 或 Business Flow Manager 管理控制台页面中的 Cleanup Service,计划自动删除任务或流程实例的作业。您可以指定何时运行,运行多长时间,要删除多少个实例,以及要通过状态和日期条件删除哪些实例,如 图 3 中所示。
图 3. 用于清除 BPEL 流程实例的 Cleanup Service 计划
用于清除 BPEL 流程实例的 Cleanup Service 计划

在 BPM Advanced 中,可清除其他一些内容,包括:

  • 不再需要的 BPM 流程和人工任务模板
  • 审计日志条目
  • 持有队列中失败的消息
  • 未使用的共享工作项

有关如何删除这些内容的信息,可在信息中心主题 清除 Business Process Choreographer 的过程 中找到。我们还强烈建议阅读 developerWorks 系列文章 操作 WebSphere Process Server 环境

Process Server 中的持久订阅事件

一个 BPD 的中间消息活动中的消息事件可设置为持久性的,这可通过勾选属性中的 Durable Subscription 来启用,如 中所示。

图 4. 图 4. 为中间事件指定一个持久订阅
为中间事件指定一个持久订阅

点击查看大图

图 4. 图 4. 为中间事件指定一个持久订阅

为中间事件指定一个持久订阅

如果在 Process Designer 中指定,这些持久的消息将不断积累,需要偶尔进行清理,即使您选择了 Consume Message。在过去,没有内置的方式来完成这种清理,但这已在 V8.0.1.2 和 V8.5.0.1 中通过一个名为 BPMDeleteDurableMessages 的新 wsadmin 命令得以解决,该命令接受 3 个参数:

  • olderThan:仅将删除比此天数更早的事件
  • maximumDuration:该命令将仅运行此时间量
  • transactionSlide:要为每个事务删除的事件量

例如:
BPMDeleteDurableMessages {-olderThan 30 -maximumDuration 60 -transactionSlice 100}


Performance Data Warehouse

BPD 流程可支持跟踪,这意味着事件发送到 Performance Data Warehouse 并记录在它的数据库中。发送多少事件主要取决于您的 BPD 是否打开了自动跟踪,在 V8.5.0.1 之前,自动跟踪都已默认为新 BPD 打开。

打开自动跟踪后,Performance Data Warehouse 可能迅速积累许多数据。不幸的是,过去没有任何产品提供的和受支持的方式来删除任何这类数据。结果,许多客户求助于自定义 SQL 代码,直接访问数据库来根据保存时间或状态条件删除或移动数据。

也可通过丢弃并重新创建表来完全删除所有 Performance Data Warehouse 数据,如这两个技术说明中所述:

好消息是,现在为从 Performance Data Warehouse 中选择性地清除数据提供了一定的支持,这些支持已在 8.5.0.1 和 8.0.1.2 修复包中提供。在这些版本中,perfDWTool 拥有一个名为 prune 的新选项,允许清除超出给定天数的数据,如下所示:
perfDWTool.sw –u uid –p pwd –nodeName node prune –daysOld days

这将删除所有早于 days 的数据。请注意,这需要从集群中一个活动的节点运行,集群的所有成员都将运行。您应尝试在服务器最空闲的时候运行它。它的操作可能受 3 种新设置影响,您可以在 100custom.xml 中忽略这些设置:

  • prune-batch-size:要在单个清除操作中删除的记录数。默认值为 1000。
  • prune-operation-time-box:该操作将运行的时间量(以秒为单位)。默认值为 10800 或 3 小时。
  • prune-operation-time-box-retry :将尝试该操作的次数。默认值为 4,所以它将重试 3 次。

其他数据

尽管大多数积累的数据都来自流程、任务和事件,您还需要考虑一些其他的积累区域,本节将介绍这些区域。

文档附件

继承的 Coach 支持通过 API 以及预先提供的控件将文档上传到内部文档存储。这些文档不可单独删除,它们与流程实例有关联,因此将在删除流程实例时删除它们。您也可以编写自己的服务,使用 TWDocument 中的 JavaScript 方法 deleteAllVersions 删除这些数据。

在 V8.0.0 和 V8.0.1 中引入下一代 Coach 时,没有提供等效的内置文档附件村粗功能,但支持访问外部企业内容管理系统。但是,这种内置的附件功能已在 V8.5.0 中使用用于外部 ECM 系统的相同 Coach 视图重新引入。与继承的 Coach 一样,没有删除这些附件的显式方式,它们会在其删除其父流程实例时删除,可使用 deleteAllVersions 以编程方式清除它们。

临时目录

安装期间,以及在运行时执行一些操作期间,文件会放在系统临时目录 (%temp%) 中。这些文件会不断积累,所以您应当留意该目录,拥有偶尔清除它们的策略。


IBM Business Monitor

如果使用了 IBM Business Monitor,那么您还应该偶尔清除这里的数据,因为它会很快地积累起来。IBM Business Monitor 中为删除和归档数据都提供了成熟的支持。Business Monitor 在管理控制台中带有一个事件清除功能,您可以针对监视器模型进行配置,如 中所示。

图 5. IBM Business Monitor 中的 Purging Event Console 页面
IBM Business Monitor 中的 Purging Event Console 页面

点击查看大图

图 5. IBM Business Monitor 中的 Purging Event Console 页面

IBM Business Monitor 中的 Purging Event Console 页面

您可指定要删除的实例的保存时间,也可以可选地指定要将其中清除的实例归档为 CSV 文件的目录。

备注:此功能仅清除终止的实例;它绝不会删除活动的实例,无论实例保存时间由多长。

这种清除和归档可一次完成,如 清除和归档实例数据 中所述,也可计划定期运行,如 计划清除和归档实例数据 中所述。


结束语

在本文中,我们给出了 IBM Business Process Manager 和 IBM Business Monitor 中您需要留意的积累数据的关键区域,介绍了如何清除这些数据。 表 1 总结了这些数据类型和各种版本中清除它的选项。

表 1. 基于版本清除各种类型的数据的选项
数据 V7.5.1x V8.0.1x V8.5.0x
Process Center 中的流程应用程序和工具包 使用 Process Center UI 执行归档和删除 使用 Process Center UI 执行归档和删除 使用 Process Center UI 执行归档和删除
Process Center 中的快照 使用 Process Center UI 执行归档和删除 V8.0.1.2 中的 BPMSnapshotCleanup 命令BPMSnapshotCleanup 命令,以及 V8.5.0.1 中添加的可计划的服务
Process Center 中的 Advanced BLA 和 EAR 使用 Process Center UI 取消部署以删除 BLA 和 EAR 使用 Process Center UI 取消部署以删除 BLA 和 EAR 使用 Process Center UI 取消部署以删除 BLA 和 EAR
Process Server 中的快照 V8.0.1.0 中的 BPMDeleteSnapshot 命令 BPMDeleteSnapshot 命令
BPD 流程实例 LSW_BPD_INSTANCE_DELETE 存储过程 V8.0.1.2 中的 BPMProcessInstancesCleanup 命令 BPMProcessInstancesCleanup 命令,已在 V8.5.0.1 中改进
BPEL 流程实例 BFM 中的 deleteCompletedProcessInstances.py 脚本或 Cleanup Service BFM 中的 deleteCompletedProcessInstances.py 脚本或 Cleanup Service BFM 中的 deleteCompletedProcessInstances.py 脚本或 Cleanup Service
BPD 持久事件 V8.0.1.2 中的 BPMDeleteDurableMessages 命令 BPMDeleteDurableMessages 命令
Performance Data Warehouse V8.0.1.2 中的 prune 命令 V8.0.1.2 中的 prune 命令
Business Monitor Purge and Archive Instance Data 控制台操作和可计划的服务 Purge and Archive Instance Data 控制台操作和可计划的服务 Purge and Archive Instance Data 控制台操作和可计划的服务

希望此信息会帮助您维护一个健康的 BPM 系统。请注意,在编写本文时,最新的修复包为 7.5.1.1、8.0.1.2 和 8.5.0.1。在推出新 IBM BPM 版本时,请查阅它们的信息中心中的 “新功能” 部分,以查看是否添加了任何与数据清除相关的额外功能。您可以在 IBM BPM Library 页面 上找到 BPM 信息中心的所有版本。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=962178
ArticleTitle=在 IBM Business Process Manager 中清除数据
publish-date=02102014