1 Reply Latest reply on Jul 16, 2007 6:57 AM by harpritt k

    Workspaces and Concurrent Conversations

    harpritt k Novice

      Hi again

      im having a bit of a bad day - i can seem to get my mojo back from friday night!....

      Ive just noticed that when i log Person A in to Browser A and then Person B in to Browser B - That Person A in Browser A Flicks over to person B.

      Ive been thumbing through the JBOSS SEAM book by Yuan & Huete and come accross a chapter that talks about Works Spaces and Concurrent conversations, its late and im a bit tierd so i may have read it wrong but it seems to imply that conversations are kept seperate by default so the symptoms above should only happen if ive told the app to share the user accross sessions..... damn it...

      ... can anyone point me in the right direction for a solution please..

      Thanks again.... i hate being a noob.....

        • 1. Re: Workspaces and Concurrent Conversations
          harpritt k Novice

          Hi ya

          Got this one licked! Im not entirely sure what the exact reason is but i will try to explain what i had and what i did to correct it.



          THIS IS WHAT I HAD
          Symtoms : User A on Browser A would get logged out by user B on Browser B....

          @Stateful
          @Name("ticketSystem")
          @Conversational
          public class TicketSystemAction implements TicketSystem {
          
           @In(required = false)
           @Out(scope = BUSINESS_PROCESS,required = false)
           ChangeRequest changerequest;
          
          
          
           @In(required = false)
           GsmsMetaData gsmsMetaData;
          
           @In(required = false)
           NewGSMSData newGsmsData;
          
           @In(required = false)
           RequestState requestState;
          
           @In(required = false)
           RequestReference requestReference;
          
           @In
           User user;
          
          
           @Begin
           public String newTicket() {
           if (changerequest.getCrAction().equals("EDIT")) {
           return "editdoc";
           }
           if (changerequest.getCrAction().equals("NEW")) {
           return "newdoc";
           }
           if (changerequest.getCrAction().equals("MOVE")) {
           return "movedoc";
           }
           if (changerequest.getCrAction().equals("DELETE")) {
           return "deletedoc";
           }
           if (changerequest.getCrAction().equals("OTHER")) {
           return "other";
           }
           //throw exception
           return "home";
           }
          
           @End
           @CreateProcess(definition = "changerequestprocess")
           public String submitTicket() {
          
           //CREATE Change request
          
           //PERSIST IT
           getChangeRequestDAO().saveCr(changerequest);
          
          
           return "home";
           }
          
          
          
           @BeginTask
           public String view_cr_waiting_appapproval() {
           return "viewcrwaitingappApproval";
           }
          
           @EndTask(transition = "accept")
           public String appAcceptcr() {
           return "home";
          
           }
          
           @EndTask(transition = "reject")
           public String appRejectCr() {
           return "home";
           }
          
           @BeginTask
           public String view_cr_waiting_editor_revise() {
           return "view_crwaiting_edrevise";
           }



          THIS IS WHAT I DID

          I Moved the methods invold in conversational scope into a seperate class....

          @Stateful
          @Name("createChangeRequest")
          public class CreateChangeRequestAction implements CreateChangeRequest {
          
           @In(required = false)
           @Out(scope = BUSINESS_PROCESS,required = false)
           ChangeRequest changerequest;
           @In(required = false)
           GsmsMetaData gsmsMetaData;
          
           @In(required = false)
           NewGSMSData newGsmsData;
          
           @In(required = false)
           RequestState requestState;
          
           @In(required = false)
           RequestReference requestReference;
          
           @In
           User user;
          
          
           @Begin
           public String newTicket() {
           if (changerequest.getCrAction().equals("EDIT")) {
           return "editdoc";
           }
           if (changerequest.getCrAction().equals("NEW")) {
           return "newdoc";
           }
           if (changerequest.getCrAction().equals("MOVE")) {
           return "movedoc";
           }
           if (changerequest.getCrAction().equals("DELETE")) {
           return "deletedoc";
           }
           if (changerequest.getCrAction().equals("OTHER")) {
           return "other";
           }
           //throw exception
           return "home";
           }
          
           @End
           public String submitTicket() {
          
           //CREATE CHANGE REQUEST
          
           getChangeRequestDAO().saveCr(changerequest);
          
           TicketSystem TS = new TicketSystemAction();
          
          
           return TS.startTheCrProcess();
          
           }
          



          This was a hunch that worked, Id really like to know why it did what it did but i dont have the time. Ill post again when i work out.....

          ...