@ abapify/adt-locks (中文(简体) )
ADT锁/开锁操作和锁库管理. 这是单身
跨区域使用的锁执行 abapify/adt-cli 单取:它包接
SAP APT 锁定/解锁 REST 端点, 解析其 XML 响应, 并持续
锁柄在可插件存储中, 这样多对象操作就可以释放
可靠地锁定失败.
安装
npm i @abapify/adt-locks
# or
bun add @abapify/adt-locks
使用量
单锁/通过服务解锁,并由基于文件的锁店支持:
import { createLockService, FileLockStore } from '@abapify/adt-locks';
const locks = createLockService(client, { store: new FileLockStore() });
const handle = await locks.lock('/sap/bc/adt/oo/classes/zcl_test');
try {
// ... make changes via the ADT client ...
} finally {
await locks.unlock('/sap/bc/adt/oo/classes/zcl_test', {
lockHandle: handle.handle,
});
}
N 对象的批量会话, 在失败时进行最佳回滚 :
import { createBatchLockSession } from '@abapify/adt-locks';
const session = createBatchLockSession(locks, {
targets: [
{ uri: '/sap/bc/adt/oo/classes/zcl_a' },
{ uri: '/sap/bc/adt/oo/classes/zcl_b' },
],
});
const acquired = await session.acquireAll();
// ... do work ...
await session.releaseAll();
坠机后恢复
SAP APT 需要精确 lockHandle 返回时间 LOCK 页:1 UNLOCK。 。 。 .
FileLockStore 持续,使后期进程可以释放它:
await locks.forceUnlock('/sap/bc/adt/oo/classes/zcl_test');
尽管它的历史名称, forceUnlock() 实值 没有 服务器侧力
操作: 只发送 UNLOCK 永远不要尝试
第二届 LOCK。如果手柄从未被坚持(例如服务器侧)
由中断对象创建的 CTS 锁 POST),SAP无法通过
URI (英语). 呼叫者必须等待到期,或要求SAP管理员清除.
在单簧管中的作用
- ADT锁的单一真相来源.
@abapify/adk(拯救流动),@abapify/adt-export,而CLI命令所有代表LockService而不是重新执行锁/解锁. - 仅取决于
@abapify/adt-client为了运输,它不知道 关于特定对象类型,可以使其在插件之间重新使用. - 锁定手柄绑定在客户端的安全会话上;参见
单相
AGENTS.md/安全会议协议 在此之前,任何呼吁都将取得成功.
相关
许可证
麻省理工学院