服务- sdk
艾伯塔省数字服务平台的SDK.
利用这个图书馆为ADSP建造以节点为基础的平台和租户服务.
开始
初始化SDK,用于平台或租户服务.
import { AdspId, initializePlatform } from '@abgov/adsp-service-sdk';
const serviceId = AdspId.parse(environment.CLIENT_ID);
const {
coreStrategy,
tenantStrategy,
...sdkCapabilities,
} = await initializePlatform(
{
displayName: 'My platform service',
description: 'Example of a platform service.',
serviceId,
accessServiceUrl: new URL(environment.KEYCLOAK_ROOT_URL),
clientSecret: environment.CLIENT_SECRET,
directoryUrl: new URL(environment.DIRECTORY_URL),
configurationSchema,
events: [],
roles: [],
notifications: [],
},
{ logger }
);
见 ADSP 发展指南 详细情况.
审计行动分类
在定义审计行动时使用共享常数 :
import {
AuditAction,
AuditCategories,
AuditSeverities,
BuiltInRetentionClasses,
} from '@abgov/adsp-service-sdk';
const UPDATE_CASE: AuditAction = {
name: 'case.update',
version: 1,
category: AuditCategories.Administrative,
severity: AuditSeverities.Info,
retentionClass: BuiltInRetentionClasses.Compliance,
};
AuditCategory 财务报告和审定财务报表 AuditSeverity 由常数产生的字符串结合,所以存在
字符串正文和序列目录值仍然兼容. retentionClass 现为a
字符串: 应用程序可能使用自定义类名称, 如 case-history 当一个相应的
保留期已配置。 内建类常数指定名称,而不是保留期.
审计服务客户端
注册行动 auditActions 并记录返回的事件 auditService数字 :
const { auditService } = await initializeService(
{ serviceId, displayName: 'Case service', description: 'Case management', auditActions: [UPDATE_CASE] },
{ logger },
);
const outcome = await auditService.record(UPDATE_CASE, { actor: { id: user.id, type: 'user' } });
if (outcome.status !== 'recorded') {
logger.warn(`Audit event ${outcome.eventId} was not recorded: ${outcome.reason}`);
}
默认情况下,每个事件都会在自己的HTTP请求中立即发送. 等着 record() 检查它的
结果:它绝不拒绝 recorded 是指服务确认的存储器或同位素
重复,不只是在记忆中排队接收。 一旦所有电话结算,就不再单独审计
flush() 这是需要的。 正常的应用程序关闭必须等待飞行中的请求和任务.
立即发送并不能使火灾和遗忘的呼叫安全防止过程终止.
对于高通量工作量,选择客户端分批通过 audit 选项
initializeService 或者说 initializePlatform数字 :
const { auditService } = await initializeService(
{
...serviceOptions,
auditActions: [UPDATE_CASE],
audit: { batchSize: 100, batchIntervalMs: 500 },
},
{ logger },
);
通过设置启用了夹击 batchSize 大于 1; 部分批次等待至
batchIntervalMs (默认为500毫秒). 关机前,打电话 await auditService.flush() 如果批号
或未等待的记录。 此配置保留了先前的100个事件/ 500-ms的行为;
新默认会增加 HTTP 请求量 。 审计处仍然在数据库上批发
服务器,独立于客户端批量.
两种模式都保留有限制的飞行/重试内存,瞬间重试相同 eventId,以及
页:1 audit.client.dropped_events 标准。 失败的交付如果
响应已丢失; 以相同方式重发送 eventId。 。 。 . AuditClientOptions 导出为已键入
配置,包括请求超时和重试延迟. 见
审计事务文件。 。 。 .