What you described seems to be very helpful to what I work on, and I&#39;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&#39;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&#39;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">&lt;<a href="mailto:larry.howard@vanderbilt.edu">larry.howard@vanderbilt.edu</a>&gt;</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 &quot;modify attribute&quot; operation is in conflict with the target session&#39;s state.<br>
<div><br></div><div>Since GME releases cherry pick from the trunk, I&#39;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&#39;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&#39;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&#39;s impractical to prove it&#39;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&#39;m using 9.12.15) on different machines and mirrors the actions made by the users on each others&#39; 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&#39;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&#39;d ultimately like to do is to grab a transaction when it&#39;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>