> Am 10.10.2019 um 12:31 schrieb Jonathan van Alteren 
> <jvalte...@objectguild.com>:
> 
> Hah, those percentages feel very real to me at the moment :-S
> 
> Can you explain what GemStone IIRC means? (Novice speaking here :-)) If 
> GemStone solves this at the moment an object goes from Stone to Gem, perhaps 
> we can take that architecture as an example and somehow apply it locally 
> within the same image? What would be required for something like that? Just 
> thinking out loud here...
> 
IIRC means „if I remember correctly“ ;)
Gemstone as the name says is a combination of gem and stone. Stone is the 
database part in the system that manages the global heap. A gem is more or less 
what a pharo vm is. When a gem opens a transaction all used objects get copied 
from the stone in the gem heap. On committing  the transaction the gem writes 
back the data to the stone. This is very brief and mostly not exactly like that 
but gives the picture

Norbert
> 
> Kind regards,
> 
> Jonathan van Alteren
> 
> Founding Member | Object Guild
> jvalte...@objectguild.com
>> On 9 Oct 2019, 19:09 +0200, Norbert Hartl <norb...@hartl.name>, wrote:
>> 
>> 
>> Am 09.10.2019 um 16:48 schrieb "jtuc...@objektfabrik.de" 
>> <jtuc...@objektfabrik.de>:
>> 
>>> 
>>> This is a tricky mine field. Sometimes you need a lot of business 
>>> functionality in objects referenced in your objects that are currently in 
>>> the editor. So I'm still to see a project in which the memento pattern 
>>> really worked for more complex scenarios. How deep do you dive to have 
>>> enough memento objects to provide the functionality needed. I guess you can 
>>> do that with some sort of object-level transaction framework that 
>>> automatically creates mementos of whatever object is being navigated to 
>>> during some kind of processing-context. I guess slots could be of use here. 
>>> But this is not trivial for general cases.
>> 
>> Yes it is tricky. You can have copies of business objects but you have 
>> always references to the business objects not pointing to the copy. 
>> And you need to know which objects should be tracked. In Gemstone IIRC it is 
>> easy as it is the time the object is copied from the stone to the gem it is 
>> registered in the current transaction. So you can check it and committing if 
>> it changed because you have to write it back. The important point here might 
>> be get noticed when a reference is acquired. In pharo it is not that easy 
>> but could be done if object would be reified and interceptable. 
>>> In my experience, this problem area makes for the other 70% of the time 
>>> spent on developing GUI or Web applications, besides the 60% for GUI design 
>>> and implementation and 25% business logic...
>>> 
>> 70% + 60% + 25% + 30% = 185%
>> 
>> sounds indeed very realistic if it comes to project planning. 😛There is even 
>> a rule saying that for the first 90% of the project you need the first 90% 
>> of time and for the last 10% of the project you need the second 90% of time. 
>>> I'd be interested to learn about patterns to handle such more complex 
>>> things. We constantly travel back and forth between implementing stuff in 
>>> the GUI handlers (copying values to the GUI classes that access themselves 
>>> during GUI operations and push values to the business objects when the 
>>> users clicks on OK), using mementos (which most of the times are nets of 
>>> mementos that are created manually - "we know what we'll touch in this 
>>> Editor") and operating on business objects directly and relying on the 
>>> persistence mechanism (Glorp in our case) and its rollback behaviour. All 
>>> three have lots of weaknesses and seem to have their place nevertheless.
>>> 
>>> So this is a very interesting discussion and I think this is an area that 
>>> has not been solved yet.
>>> 
>> I think it isn‘t solved and I find every piece of information about it very 
>> interesting.
>> 
>> Norbert
>>> Joachim
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> Am 09.10.19 um 16:25 schrieb James Foster:
>>>> Thanks for the explanation. And, yes, this is an artifact of your design; 
>>>> if you put intermediate values into domain objects then they will remain 
>>>> in your domain objects to be seen later. From what you’ve described, I 
>>>> don’t see how it would be any different in a non-image environment (Java, 
>>>> C#, etc.), unless you re-read the entire object graph from the database. 
>>>> As someone else mentioned, this would be a good place for the Memento 
>>>> Pattern.
>>>> 
>>>> James
>>>> 
>>>>> On Oct 9, 2019, at 1:59 AM, Jonathan van Alteren 
>>>>> <jvalte...@objectguild.com> wrote:
>>>>> 
>>>>> Hi James,
>>>>> 
>>>>> I see how my explanation might be unclear.
>>>>> 
>>>>> We have a main form for the agenda and a subform for an item, which is 
>>>>> shown using Seaside call/answer. The save button of the subform is 
>>>>> clicked, which adds the item to the underlying agenda model object, but 
>>>>> the save button of the main form is not clicked by the user. The callback 
>>>>> for the main save button sends the save message to the agenda object, 
>>>>> causing the database to be updated.
>>>>> 
>>>>> So yes, the browser does submit the data on the subform, it's the main 
>>>>> form component that doesn't receive the save button callback. I realize 
>>>>> that this is in large part an issue with our design. However, the way 
>>>>> object persistence seems to work in the image environment plays a large 
>>>>> role. 
>>>>> 
>>>>> 
>>>>> Kind regards,
>>>>> 
>>>>> Jonathan van Alteren
>>>>> 
>>>>> Founding Member | Object Guild
>>>>> jvalte...@objectguild.com
>>>>>> On 8 Oct 2019, 15:41 +0200, James Foster <smallt...@jgfoster.net>, wrote:
>>>>>> 
>>>>>>> On Oct 8, 2019, at 3:05 AM, Jonathan van Alteren 
>>>>>>> <jvalte...@objectguild.com> wrote:
>>>>>>> 
>>>>>>> We've encountered an issue where a user makes changes to an agenda, but 
>>>>>>> does not click the Save button. Instead, the user closes the browser or 
>>>>>>> uses the navigation to go to a different part of the application. When 
>>>>>>> navigating back to the original agenda, the changes made previously 
>>>>>>> (e.g. items added) are still being displayed, even though they were 
>>>>>>> never explicitly saved.
>>>>>> 
>>>>>> Here is what I don’t understand: how did the change get from the user’s 
>>>>>> client agent (browser) to the server? If you make a change to a field in 
>>>>>> a form and then close the browser, who sent the change to the server? If 
>>>>>> you show the save domain value in a different location, with a 
>>>>>> dynamically-generated id and name (so it isn’t cached in the browser), 
>>>>>> or written to the Pharo Transcript, does the value still change? That 
>>>>>> is, are you sure that the change is in the reflected in the Smalltalk 
>>>>>> image and not just somehow cached in the browser?
>>>>>> 
>>>>>> James
>>>>>> 
>>>>>> 
>>>> 
>>> 
>>> --  
>>> -----------------------------------------------------------------------
>>> Objektfabrik Joachim Tuchel          mailto:jtuc...@objektfabrik.de
>>> Fliederweg 1                         http://www.objektfabrik.de
>>> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
>>> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
>>> 
>>> 

Reply via email to