Tratamento de draft
Tratamento de draft (draft handling) é um mecanismo de apps SAP Fiori, do RAP e do CAP que armazena alterações não salvas de um business object como um draft no servidor, separado dos dados ativos. O tratamento de draft permite que os usuários retomem trabalhos interrompidos, executem validações durante a edição e vejam quando outra pessoa está alterando o mesmo objeto, até que o Save transforme o draft na versão ativa.
Resumo
- Tipo
- Padrão transacional (versão provisória de um business object)
- Camada
- Lógica de negócio e modelo de dados, refletido em Aplicações de UI
- Habilitado em
- Behavior definition do RAP (with draft), modelo de serviço do CAP
- Variantes
- Draft exclusivo, draft colaborativo
- Suporte na UI
- SAP Fiori elements para OData V2 e V4
- Quem trabalha com ele
- Desenvolvedores ABAP e CAP, desenvolvedores SAP Fiori
- Aplica-se a
- SAP S/4HANA (todas as opções de implantação), SAP BTP
Camada: Lógica de negócio e modelo de dadosOnde se encaixa ▾
Camada: Lógica de negócio e modelo de dados
Também envolve: Aplicações de UI
Abrir o mapa de arquitetura →Como funciona o tratamento de draft?
Em um app habilitado para draft, a edição segue quatro etapas:
- Um usuário escolhe Edit em um objeto existente ou começa a criar um novo. O back-end cria uma instância de draft em uma tabela de draft separada.
- Cada alteração é gravada no draft em segundo plano, de modo que nada se perde se o navegador for fechado.
- Validações, controle de campos e valores padrão são executados sobre o draft enquanto o usuário trabalha, e as mensagens aparecem antes de salvar.
- Save ativa o draft: seu conteúdo se torna a versão ativa e o draft é removido. Discard, por sua vez, exclui o draft.
Os dados ativos permanecem intocados até a ativação: uma requisição de compra para a Cedar Office Supply na Alder Manufacturing pode ser iniciada na sexta-feira e concluída na segunda. O tratamento de draft, portanto, separa o trabalho em andamento dos dados de negócio no nível da persistência, e não apenas no navegador.
Qual é a diferença entre draft exclusivo e draft colaborativo?
- Draft exclusivo: um único usuário é dono do draft. Somente o dono pode alterá-lo, ativá-lo ou descartá-lo, e os outros usuários não veem as alterações antes que sejam salvas.
- Draft colaborativo: vários usuários autorizados podem trabalhar no mesmo draft ao mesmo tempo. No SAP Fiori elements para OData V4, a object page mostra quem está no draft e bloqueia um campo enquanto alguém digita nele.
No RAP, a escolha é uma única palavra-chave no cabeçalho da behavior definition: with draft para exclusivo ou with collaborative draft para drafts colaborativos. Antes de planejar o draft colaborativo, verifique a palavra-chave na documentação de palavras-chave ABAP (ABAP keyword documentation) da sua release. O draft exclusivo continua sendo o caso mais comum, e o draft colaborativo é adequado para objetos que várias pessoas completam juntas.
Como funcionam os bloqueios e a vida útil do draft?
Os drafts mudam o comportamento dos bloqueios. No RAP:
- Quando um draft é criado para um objeto existente, a instância ativa recebe um bloqueio exclusivo que dura um período definido, mesmo que a sessão do usuário termine.
- Após esse período, o draft entra em uma fase de bloqueio otimista. Se o dono retomar o trabalho, o framework tenta bloquear o objeto novamente.
- Se alguém alterar o objeto ativo diretamente nesse meio-tempo, o draft se torna inválido.
- Drafts que permanecem intocados são descartados automaticamente por um serviço de ciclo de vida de drafts, por padrão após 28 dias, segundo a documentação do RAP da SAP.
Um campo de total ETag, obrigatório para business objects do RAP habilitados para draft, detecta se a versão ativa mudou enquanto o draft existia. O tratamento de draft, assim, substitui um bloqueio curto de sessão por uma reserva mais longa que acaba expirando.
Como habilitar o tratamento de draft?
- RAP: adicione a palavra-chave de draft ao cabeçalho da behavior definition, além de uma tabela de draft por entidade e um total ETag. O draft se aplica ao business object inteiro, nunca a entidades isoladas. O RAP suporta draft a partir do ABAP 7.55, que corresponde ao SAP S/4HANA 2020.
- CAP: a anotação @odata.draft.enabled na entidade do serviço habilita o draft, e o runtime o trata de forma genérica.
- Apps SAP S/4HANA mais antigos: drafts implementados com BOPF no ABAP Programming Model for SAP Fiori ainda existem e podem ser levados para business objects do RAP baseados em BOPF.
- SAP Fiori elements: a UI identifica o draft a partir dos metadados do serviço. A SAP afirma que o suporte completo do SAP Fiori elements a serviços OData V4 é garantido apenas para cenários habilitados para draft. Para OData V2, o draft não está disponível no SAP NetWeaver AS for ABAP 7.50.
O tratamento de draft é uma decisão do serviço; a UI apenas reflete o que o back-end declara.
Quais são os erros comuns com o tratamento de draft?
- Tratar "locked by another user" como bug. A mensagem geralmente significa que um colega tem um draft aberto. Peça ao dono que o salve ou descarte, ou aguarde o fim da fase de bloqueio.
- Ler a tabela de draft diretamente. A SAP alerta que as tabelas de draft só devem ser acessadas pelo framework RAP, por exemplo pela ação Discard.
- Esquecer o total ETag. Um business object do RAP habilitado para draft exige um.
- Construir um app OData V4 editável sem draft. Os usuários perdem a retomada e as informações de bloqueio, e o SAP Fiori elements oferece apenas suporte limitado.
A maioria dos problemas de tratamento de draft vem de entender mal as regras de bloqueio e de vida útil, e não do framework.
Draft exclusivo vs. draft colaborativo vs. edição sem draft: qual é a diferença?
| Edição sem draft | Draft exclusivo | Draft colaborativo | |
|---|---|---|---|
| Quando os dados chegam ao back-end | Somente no Save | Continuamente, no draft | Continuamente, no draft compartilhado |
| Retomada após interrupção | Não | Sim, pelo dono | Sim, por todos os usuários convidados |
| Edição simultânea | Impedida por um bloqueio curto de sessão | Bloqueada enquanto o bloqueio exclusivo vigora | Permitida, com bloqueios por campo |
| Uso típico | Fluxos simples com poucos campos | A maioria dos apps transacionais SAP Fiori | Objetos completados por várias pessoas juntas |
Perguntas frequentes
Onde ficam armazenados os drafts do SAP Fiori?
Os drafts ficam armazenados no servidor, em tabelas de draft que pertencem ao business object, separadas das tabelas ativas. No RAP, cada entidade de um business object habilitado para draft precisa de sua própria tabela de draft, e o framework RAP grava e exclui os dados do draft.
Quanto tempo dura um draft do SAP Fiori?
No RAP, drafts que ninguém toca são descartados automaticamente pelo serviço de ciclo de vida de drafts, por padrão após 28 dias. O bloqueio exclusivo sobre o objeto ativo termina antes; a partir daí, uma alteração direta de outro usuário pode invalidar o draft.
Por que um app SAP Fiori diz que o objeto está bloqueado por outro usuário?
Muito provavelmente outro usuário tem um draft aberto para o mesmo objeto, e a fase de bloqueio exclusivo desse draft ainda não terminou. O dono pode salvar ou descartar o draft; caso contrário, o bloqueio expira e o draft passa para uma fase otimista.
Todos os apps SAP Fiori usam drafts?
Não. O tratamento de draft é uma decisão de back-end por business object. Muitos apps transacionais atuais do SAP Fiori elements são habilitados para draft, mas existem apps sem draft, normalmente para fluxos de edição simples em que as alterações são enviadas apenas quando o usuário salva.
Fontes
- SAPUI5 SDK: Draft Handling (SAP Fiori elements for OData V4)
- SAP Help Portal: Draft Handling — exclusive and collaborative draft (RAP)
- SAP Help Portal: Pessimistic Concurrency Control (Locking) — locking in draft scenarios (RAP)
- SAP Help Portal: RAP BDL — Draft Handling (ABAP keyword documentation)
- SAP Help Portal: Service Binding — OData V4 and draft-enabled scenarios
- Aplica-se a
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Última revisão