Versionamento de objetos e notificação

Gostaria de trocar algumas ideias:

Eu tenho uma classe item, bem básica

class Item {
  private String nome;
  private String descricao;
}

Esse item tem de ser versionado, para isso criei

public class Revisao {
	private int numero;
	private RevisaoEnum status;
	private Usuario responsavel;
	private Date alteradoEm
}

public enum RevisaoEnum {
	ATIVO (1, "Ativo"),
	INATIVO (2, "Inativo"),
	ANALISE (3, "Análise"),
	REVISAO (4, "Revisão"),
	CONFERENCIA (5, "Conferência");
}

class Item {
  private String nome;
  private String descricao;
  private List revisoes;
}

Se qualquer um dos campos observados é alterado, gera uma nova versao. O problema é q existem muitas alterações menores, virgulas, correção de ortografia, etc. Aí pensei em ter um objeto “rascunho” onde todas as alterações sçao feitas até uma nova revisão ser liberada. Assim a criacao de uma nova versão não é automática (o que geraria bem menos revisões) mas depende do usuário definir.

Alem disso tenho de fazer um esquema de notificações cada vez q uma nova revisão é liberada. As notificações depende do status da alteração, então toda ver q tiver uma nova revisão tenho de verificar quem está inscrito para receber as notificações e tb toda vez q atualizar a versão oficial, essa parte ainda não pensei como fazer.

Estou no caminho certo, alguem tem alguma ideia para melhorar esse modelo?

Interessante.

Os dados que estão vinculados a versão antiga do seu item devem apontar para a nova versão do item ? Não existe histórico ? Por exemplo… imagine o seguinte cenário:

o objeto X versão 1.2 estava vinculado ao objeto item versão 3. Mas o objeto Y versão 1.3 estava vinculado ao objeto item versão 4. Só que eu gostaria apenas de atualizar os objetos X, Y, Z que estão em revisão.
E ai ???

Agora, se voltando a sua idéia original.
Notifier é uma boa idéia sim. Tem aquela implementação (cretina) de manter uma lista de objetos que serão notificados. Cada objeto que será notificado receberá um evento de notificação cuja mensagem seja a nova versão do objeto sem que a versão do objeto for modificada.

Olá, voltando ao assunto:

A princípio os objetos não são relacionados então não existe esse problema de versões vinculadas.

Mas tenho de manter um histórico de todas as alterações e versões. Alteração são coisas pqnas, tem um ciclo interno, aí é gerada uma nova versão q tem um ciclo para ser aprovada.

Sim eu dei uma olhada em notifier, e estou indo para este caminho.