<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">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. &nbsp; &nbsp;These changes decorate events, such as OBJEVENT_ATTR, with state information to support characterizations like&nbsp;<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. &nbsp;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. &nbsp;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. &nbsp; 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><br><div>
<span class="Apple-style-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; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 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 class="Apple-interchange-newline">
</div>
<br><div><div>On Dec 6, 2011, at 1:49 AM, Jae young Bang wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">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 apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-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; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div>~Jae</div><div><a href="mailto:jaeyounb@USC.edu">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 class="Apple-interchange-newline"><blockquote type="cite"><div>So there's good news and bad news. &nbsp;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. &nbsp;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">gme-users@list.isis.vanderbilt.edu</a><br></blockquote><blockquote type="cite"><a href="http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users">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">gme-users@list.isis.vanderbilt.edu</a><br><a href="http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users">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">gme-users@list.isis.vanderbilt.edu</a><br>http://list.isis.vanderbilt.edu/mailman/listinfo/gme-users<br></blockquote></div><br></div></div></body></html>