What you described seems to be very helpful to what I work on, and I'd like to check out your commits.<div><br></div><div>I tried to find how I can access to the GME trunk you mentioned, but I didn't see it on the GME website nor on the ISIS repository website. Would you please let me know how I can do that unless I'm not allowed to have an access?</div>
<div><br></div><div>Thank you very much!<br><br><div class="gmail_quote">On Tue, Dec 6, 2011 at 4:56 AM, Howard, Larry P <span dir="ltr"><<a href="mailto:larry.howard@vanderbilt.edu">larry.howard@vanderbilt.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word">If you poke around on the GME trunk you may find a set of commits from lph that attempt to enable a plugin to produce an adequate operation stream. These changes decorate events, such as OBJEVENT_ATTR, with state information to support characterizations like <div>
<br></div><div>object Foo attribute Bar modified from x to y</div><div><br></div><div>Such characterizations are useful for consistency checking when applying operations from a stream to another editing session. For example, if Foo.Bar is not x, then the "modify attribute" operation is in conflict with the target session's state.<br>
<div><br></div><div>Since GME releases cherry pick from the trunk, I'm fairly certain that these exploratory changes were never included in a subsequent release. But their implementation may provide some insight in ferreting out state from the originating context of operations with which to construct adequate operation streams.</div>
<div><br></div><div>Note that I was only interested in a plugin-based strategy for constructing journals of operations from GME editing sessions. Lower-level engagement with GME's transaction machinery was beyond the scope of the work, which was principally concerned with using such journals in scaffolding conflict resolution.</div>
<div><div class="im"><br><div>
<span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div>
<div>Regards,</div><div>lph</div><div>--</div><div>Larry Howard, Sr. Research Scientist</div><div>Institute for Software Integrated Systems, Vanderbilt University</div></div><div><br></div></span><br>
</div>
<br></div><div><div></div><div class="h5"><div><div>On Dec 6, 2011, at 1:49 AM, Jae young Bang wrote:</div><br><blockquote type="cite"><div style="word-wrap:break-word">Thank you for your response.<div><br></div><div>The bad news is not really bad for me. I am a PhD student, and the problem you described as the bad news is actually my research topic. I use GME to build a prototype to evaluate my idea.</div>
<div><br></div><div>The good news would be bad news for me if I understood it correctly. Did you say that it would be hard to implement such an operation stream?</div><div><br></div><div>Thank you again!</div><div><br><div>
<span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">
<span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">
<span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">
<span style="border-collapse:separate;font-family:Arial;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div style="word-wrap:break-word">
<div><div><div>~Jae</div><div><a href="mailto:jaeyounb@USC.edu" target="_blank">jaeyounb@USC.edu</a></div></div></div></div></span></div></span></div></span></div></span></span>
</div>
<br><div><div>On Dec 5, 2011, at 9:08 PM, Howard, Larry P wrote:</div><br><blockquote type="cite"><div>So there's good news and bad news. The bad news is that, even with adequate operation streams, consistency among a set of independent editing sessions is impossible to achieve using only them. The good news is that GME makes it sufficiently difficult to produce adequate operation streams that it's impractical to prove it's impossible by trying it out.<br>
<br>Regards,<br>lph<br>--<br>Larry Howard, Sr. Research Scientist<br>Institute for Software Integrated Systems, Vanderbilt University<br><br><br>On Dec 5, 2011, at 6:18 PM, Jae Young Bang wrote:<br><br><blockquote type="cite">
Hello,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I am building a system that has multiple instances of GME (I'm using 9.12.15) on different machines and mirrors the actions made by the users on each others' machines.<br>
</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">For example, if there were two users A and B, B would see what A does on A's machine such as creating new objects, updating attributes and registries, and removing objects. A and B would eventually have the same model in their local GME instance.<br>
</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I first tried to listen to ObjectEvents, transfer them over, and replay the events by developing a plugin that captures ObjectEvents and modifies the MGA model according to the captured ObjectEvents. It works, but it ruins the undo/redo architecture because it does not consider the transaction architecture.<br>
</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I figured what I'd ultimately like to do is to grab a transaction when it's completed, transfer it over, and execute the transaction on the other side by putting it in the transactions list.<br>
</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">What I wonder is how to implement it. It seems like a plugin cannot manipulate transactions as nested transactions are not allowed. When objectEventPerformed is invoked, the plugin is in the middle of a transaction, and the transaction ends after the objectEventPerformed returns.<br>
</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Would it be possible to do this with a plugin, or would it not be possible to do this with a plugin?<br></blockquote><blockquote type="cite"><br>
</blockquote><blockquote type="cite">Thank you very much for your help!<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-- <br></blockquote><blockquote type="cite">Jae young Bang<br></blockquote>
<blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">gme-users mailing list<br></blockquote><blockquote type="cite"><a href="mailto:gme-users@list.isis.vanderbilt.edu" target="_blank">gme-users@list.isis.vanderbilt.edu</a><br>
</blockquote><blockquote type="cite"><a href="http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users</a><br></blockquote><br>_______________________________________________<br>
gme-users mailing list<br><a href="mailto:gme-users@list.isis.vanderbilt.edu" target="_blank">gme-users@list.isis.vanderbilt.edu</a><br><a href="http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users</a><br>
</div></blockquote></div><br></div></div>_______________________________________________<br>gme-users mailing list<br><a href="mailto:gme-users@list.isis.vanderbilt.edu" target="_blank">gme-users@list.isis.vanderbilt.edu</a><br>
<a href="http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users</a><br></blockquote></div><br></div></div></div></div></div><br>_______________________________________________<br>
gme-users mailing list<br>
<a href="mailto:gme-users@list.isis.vanderbilt.edu">gme-users@list.isis.vanderbilt.edu</a><br>
<a href="http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Jae young Bang<br><br>Doctoral Student,<br>Department of Computer Science, <br>Viterbi School of Engineering,<br>University of Southern California, <br>Los Angeles, California, USA<br>
<br>jae@IEEE.org<br>jaeyounb@USC.edu<br>+1-310-849-6002<br><a href="http://ronia.net">http://ronia.net</a><br>
</div>