解决用户信息高速缓存与数据库之间的用户不匹配情况

当用户信息高速缓存与数据库之间出现用户不匹配情况时,用户信息高速缓存会保留对未在数据库中的用户的引用。 如果使用高速缓存中的用户信息进行进一步的数据库操作,那么不匹配情况之后的数据库事务可能会失败,且出现约束违例异常。 要防止出现此不匹配情况,可将 user-info-cache-block-period 配置设置添加到 100Custom.xml 文件中。 您可以使用此设置指定高速缓存条目被视为无效且未使用的时间段(如果未通过从数据库至少成功读取一次此条目来进行确认)。

关于此任务

访问用户信息时,IBM® BPM 会将此信息装入用户信息高速缓存中。 如果 IBM BPM 数据库中的用户尚不可用,该数据库也会对用户信息进行初始化。 如果涉及高速缓存和数据库初始化的事务失败,那么数据库条目将回滚,但高速缓存条目不会回滚。 因此,高速缓存与数据库之间会出现用户不匹配情况。

高速缓存与数据库之间出现用户信息不匹配的情况仅在少数环境中发生。 因此,指定的时间段将设置为缺省值 0 毫秒,这意味着高速缓存条目将始终被视为有效。 只有在遇到异常时才能更改该值,比如 SystemOut.log 文件中以下列行开头的 SqlIntegrityConstraintViolationException 异常:

com.lombardisoftware.client.delegate.BusinessDelegateException:
 PreparedStatementCallback;
 SQL [insert into LSW_USR_GRP_MEM_XREF (USER_ID, GROUP_ID) values (?, ?)];

过程

要将配置设置添加到 100Custom.xml 文件中,请完成以下步骤:

  1. 停止 IBM Process ServerProcess Center 的服务器。
  2. 打开每个 100Custom.xml 文件。 有关需要更新的个别 100Custom.xml 文件及其位置的信息,请参阅主题100Custom 配置文件的位置
  3. 在每个 100Custom.xml 文件中,添加 user-info-cache-block-period 设置。 例如,要阻止管理员访问任务实例数据,请将以下元素添加到 <properties> 元素下方:
    <server>
        <user-info-cache-block-period merge="replace">120000
        </user-info-cache-block-period>
    </server>
    以毫秒为单位指定时间段 (ms)。 如果您不想使用缺省值 0,建议时间段为 120000(2 分钟)。 如果未设置此设置,那么缺省情况下时间段为 0。 如果指定了值 0,那么高速缓存条目将始终被视为有效。
  4. 在每个 100Custom.xml 文件中,保存您所作的更改。
  5. 在浏览器中,打开每个 100Custom.xml 文件以确保它未包含任何特殊字符。
  6. 请完成下列其中一个步骤:
    • 在集群环境中,请通过强制同步并重新启动部署环境来确保将更改传播到节点。
    • 在独立服务器环境中,重新启动服务器。