При использовании RequestContextExecutor в SAP CP Neo, это будет зависеть от арендатора поставщика, как вы правильно заметили.
В настоящее время S / 4 SDK не предлагает универсального способа выполнения кода от имени другого арендатора.Это в основном связано с тем, что информация об арендаторах по-разному представлена в средах SAP CP.Например, в Cloud Foundry арендатор кодируется как часть поля «zid» в веб-токене JSON.Поэтому сложно запускать код от имени разных арендаторов.Таким образом, в SAP CP Cloud Foundry у вас фактически не было бы этого запасного варианта для арендатора поставщика.
Тем не менее, для SAP CP Neo, я ожидаю, что вы сможете использовать следующий подход для запускаCallable
на основе контекста другого арендатора.Затем это должно позволить вам получить текущего арендатора, как и предполагалось, в контексте соответствующего Callable
.
ScpNeoTenant currentTenant = (ScpNeoTenant)TenantAccessor.getCurrentTenant();
TenantContext currentTenantContext = currentTenant.getTenantContext();
currentTenantContext.execute("anotherTenantId", new Callable<MyResult>() {
@Override
public MyResult call() {
return new RequestContextExecutor().execute(new Callable<MyResult>() {
@Override
public MyResult call() {
Tenant tenant = TenantAccessor.getCurrentTenant();
// ...
return myResult;
}
});
}
});
Я еще не проверял это, поэтому, пожалуйста, дайте мне знать, если это работает!