Hi to all, It is possible to know if a entity it is changed after submit a form and first the entityManager flush this change in db? I make this kind of question because I need to controll if a entity be changed from the user, so I can sign a flag.
Morover I have the follow SFSB | @Stateful | @Scope(ScopeType.CONVERSATION) | @Name("gestione") | public class Gestione implements GestioneI { | | @PersistenceContext(type = PersistenceContextType.EXTENDED) | EntityManager entityManager; | | @Out(scope = ScopeType.CONVERSATION, required = false) | Documento doc; | | @In(required = false) | Long idDocumento; | | @In(required = false) | TaskInstance taskInstance; | | @In | private Actor actor; | | @Logger | private Log log; | | @DataModel | private List<TaskInstance> taskInstacesResponsabile; | | @DataModelSelection | private TaskInstance task; | | private String tab; | | @StartTask(flushMode=FlushModeType.MANUAL) | public String iniziaValutazioneDoc(String tab) { | | String out = continuaValutazioneDoc(tab); | | return out; | } | | @BeginTask(flushMode=FlushModeType.MANUAL) | public String continuaValutazioneDoc(String tab) { | | this.tab = tab; | | doc = (Documento) entityManager.createQuery("select distinct d from Documento d where d.id = :id").setParameter("id", idDocumento).getSingleResult(); | | return "/documento.xhtml"; | | } | | @BeginTask | @EndTask(transition = "confermato") | public String chiudiValutazioneDoc(String tab) { | | if (taskInstance.getStart() == null) | taskInstance.start(); | | this.tab = tab; | | return "/todo2.xhtml"; | } | | @EndTask(transition = "confermato") | public String confermaAInterno(String tab) { | | taskInstance.setActorId((String)taskInstance.getVariable("responsabile")); | | taskInstance.setVariable(getTrackVariableNameForActor(actor), actor.getId()); | | | this.tab = tab; | | return "/todo.xhtml"; | } | | @End | public String sospendiValutazioneDoc(String tab) { | | this.tab = tab; | return "/todo2.xhtml"; | | } | | | | | | @Destroy | @Remove | public void destroy() { | } | | | | public void caricaTasksInCarico() { | | JbpmContext context = ManagedJbpmContext.instance(); | | taskInstacesResponsabile = context.getSession().createQuery( | "select ti "+ | "from org.jbpm.taskmgmt.exe.TaskInstance ti, "+ | " org.jbpm.context.exe.VariableInstance vi join vi.processInstance pi " + | "where " + | " pi.end = null and " + | " ti.token.processInstance = pi and " + | " vi.name = :track and " + | " vi.value = :trackValue and " + | " ( ti.actorId = null or ti.actorId != :actorId ) and " + | " ti.isOpen = true" ).setString("track", getTrackVariableNameForActor(actor)).setString("trackValue",actor.getId()).setString("actorId", actor.getId()).list(); | | | for (Iterator iter = taskInstacesResponsabile.iterator(); iter.hasNext();) { | TaskInstance element = (TaskInstance) iter.next(); | log.error("TaskInstance n° #0 di #1", element.getId(), element.getActorId()); | } | | } | | /** | * Genero il documento pdf in memoria | */ | public String stampaDocumento() { | | FacesContext faces = FacesContext.getCurrentInstance(); | | ByteArrayOutputStream bAOS = PdfUtility.stampaPDF(doc); | | HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse(); | response.setContentType("application/pdf"); | response.setContentLength(bAOS.size()); | response.setHeader("Content-disposition", "Attachment; filename=\"" + doc.getClifor() + "_" + doc.getNumdoc() + ".pdf" + "\""); | try { | ServletOutputStream out; | out = response.getOutputStream(); | out.write(bAOS.toByteArray()); | } catch (IOException e) { | e.printStackTrace(); | } | faces.responseComplete(); | | return null; | | } | | | public String consultazioneDocumento( String tab) { | | doc = (Documento) entityManager.createQuery("select distinct d from Documento d where d.id = :id").setParameter("id", task.getVariable("idDocumento")) | .getSingleResult(); | | this.tab = tab; | return "/documento.xhtml"; | | } | | | | public String salvaDocumento() { | | entityManager.persist(doc); | | return null; | } | | public TaskInstance getTaskInstance() { | return taskInstance; | } | | public void setTaskInstance(TaskInstance taskInstance) { | this.taskInstance = taskInstance; | } | | /** | * Mi torna il nome della variabile track per l'utente actor | */ | private String getTrackVariableNameForActor(Actor actor) { | | String sActor = actor.getId(); | StringBuffer trackBuff = new StringBuffer(); | trackBuff.append("trackFor"); | if (sActor != null && sActor.trim().length() > 1) { | trackBuff.append(sActor.substring(0, 1).toUpperCase()); | trackBuff.append(sActor.substring(1)); | } | return trackBuff.toString(); | | } | | | } | | when I call from a xhtml page the action: gestione.stampaDocumento like: | <h:form> | <h:commandButton | action="#{gestione.stampaDocumento}" | value="#{messages.generapdf}" | style="border: none;" | image="/img/pdf.png" | title="#{messages.generapdf}" | rendered="#{s:hasRole('controllo')}"> | </h:commandButton> | </h:form> | The possible change that user made to the endity are flush in to the db, although i don't end the conversation, ( flushMode=FlushModeType.MANUAL is set in al @starttask ) Thanks !!! View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4069563#4069563 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4069563 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user