[FX.php List] Design for Locked Records?
Steve Winter
steve at bluecrocodile.co.nz
Wed Jan 6 10:19:54 MST 2010
Yip, as you say nothing too complex...
In terms of how far I go, depends on the solution, the client and the
security... If it's anything which invovlea taking money off people,
then it's for to be bulletproof!
I've got a pretty basic set of things that I do in every solution that
I develop to trap for the key issues, then as you say, will enhance to
suit the needs/budget of the individual client...
Cheers
Steve
Sent from my iPhone
On 6 Jan 2010, at 15:45, Jonathan Schwartz <jschwartz at exit445.com>
wrote:
> Wow. That's pretty robust. Nothing technically challenging...just
> planning for potential conflict.
>
> Curious...what determines the level of error trapping and exception
> handling in your client projects? Do the clients explicitly or
> implicitly request this level of handling?
>
> Clients cover the gamut. Some of my own clients might not notice
> that the web server has been down for 1/2 day, so record locking
> isn't high on their list. ;-)
>
> In my current project, this is the first where FMP users might have
> the possibility to conflict.
>
> Ultimately, I guess the answer is to present the potential issue to
> the client and see if they want to pay for extra programming to
> handle the occasional conflict.
>
> Thanks for the perspective.
>
> Jonathan
>
>
>> Hi Jonathan,
>
>>
>
>> In many of my solutions I'm just ignoring it, as there are seldom
>> (if ever) FM client users of most of the systems I've developed.
>
>>
>
>> In one solution I've done recently I did have to track it, and I
>> also needed to report on every change that a web user was making in
>> a 'logging' table, so here's what I did;
>
>>
>
>> When the web form is loaded it put all of the current values into a
>> session variable, so I know the state of the database at the moment
>> when the web user loaded the page.
>
>>
>
>> When the form is submitted, I trap for a 301. If I receive a 301 I
>> then stick the current values which the web user has submitted into
>> a second session variable. Next I retrieve the current values from
>> the database. So I now have three sets of data;
>
>>
>
>> - original
>
>> - web users desired content
>
>> - db current
>
>>
>
>> I then do a comparison, field by field, of each of the fields.
>
>>
>
>> First I compare what the web user is submitting, with what's
>> currently in the db. If they are the same, then there's no problem,
>> can just submit that value.
>
>>
>
>> If they are different, then I do a second comparison between what
>> was originally in the database, and what is in the database now. By
>> doing this I can tell if the FM Client user has changed things. If
>> these values are the same, then I know that the FM client user has
>> not changed the field, but the web user has, so it's fine to submit
>> that data too.
>
>>
>
>> The final check if the original and the current are different, is I
>> then need to compare what the web user was submitting, with what is
>> in there now (i.e what the FM client user did). If they are the
>> same, no problem, can just submit what the web user was doing,
>> since both users have made the same change [this really only works
>> with single select or radio buttons, rarely with text entry or
>> checkboxes]
>
>>
>
>> Now I'm left with a (hopefully small) set of cases where both the
>> FM client user, and the Web user have tried to make changes to the
>> same field, but have set different values.
>
>>
>
>> If there were no collisions, I now also know which fields the web
>> user was changing, from what, and to what, so can stick those
>> changes into my logging table...
>
>>
>
>> At this point, I display the original form back to the web user. I
>> put an error at the top of the page saying 'Another user has
>> modified this record since you began editing it. Please review the
>> errors below'. In the fields where there were no problems, I simply
>> put the submitted data back into the field (so if they were
>> unchanged, only changed by the web user, or changed by both, but to
>> the same thing).
>
>>
>
>> Where the 'collisions' occurred, I put what is currently in the
>> database into the field/select/checkbox/radiobutton, then display a
>> text message with the values which the web user had posted beside
>> it. In this way they can see what's in the db now, plus what they
>> were putting in, and amend the new values as required.
>
>>
>
>> Because this system is all in a 'closed' solution I can't give you
>> access to it, but if you get really stuck then I could probably rip
>> some code out an knock up a demo quickly enough...
>
>>
>
>> Hope this helps...
>
>>
>
>> Cheers
>
>> Steve
>
>>
>
>> On 6 Jan 2010, at 00:40, Jonathan Schwartz wrote:
>
>>
>>> Hi Dale,
>>>
>>> Thanks for the response. I assume that 301 would be the error.
>>
>>>
>>> If the FMP user left the cursor in the field and went to lunch or
>>> even went home for the day, it would be a long wait.
>>>
>>> Wondering if anyone is dealing with this, or, just ignoring it.
>>>
>>> J
>>>
>>> At 6:22 PM -0600 1/5/10, Dale Bengston wrote:
>>>> Jonathan,
>>>
>>>>
>>>
>>>> Happy new year!
>>>
>>>>
>>>
>>>> What type of response do you get from FX if you try to modify a
>>>> locked record? Do you get error 301 "Record is in use by another
>>>> user"? Maybe you could trap for that and manage the expectations
>>>> of your web users that they may need to try again later.
>>>
>>>>
>>>
>>>> Dale
>>>
>>>>
>>>
>>>> On Jan 5, 2010, at 5:55 PM, Jonathan Schwartz wrote:
>>>
>>>>
>>>>> Any takers?
>>>>
>>>>>
>>>>
>>>>> I'm developing a solution where the client employees are
>>>>> interacting with the same db that the online system uses. It is
>>>>> possible that an office worker might be "in" a record while the
>>>>> online customer is trying to update.
>>>>
>>>>>
>>>>
>>>>> What to do?
>>>>
>>>>>
>>>>
>>>>> Error out?
>>>>
>>>>> Try again?
>>>>
>>>>> Send a message to the office worker? (possible?)
>>>>
>>>>> Save the data to another file?
>>>>
>>>>>
>>>>
>>>>> Just looking for ideas.
>>>>
>>>>>
>>>>
>>>>> J
>>>>
>>>>>
>>>>
>>>>>
>>>>
>>>>> Happy New Year Folks,
>>>>
>>>>>
>>>>
>>>>> Does anyone design for the instance where an fx.php transaction
>>>>> tries to update a record that is being used by a native
>>>>> FileMaker user, and thus is locked?
>>>>
>>>>>
>>>>
>>>>> If so, how do you handle?
>>>>
>>>>>
>>>>
>>>>> Thanks
>>>>
>>>>>
>>>>
>>>>> J
>>>>
>>>>> --
>>>>
>>>>> Jonathan Schwartz
>>>>
>>>>> Exit 445 Group
>>>>
>>>>> jonathan at exit445.com
>>>>
>>>>> http://www.exit445.com
>>>>
>>>>> 415-370-5011
>>>>
>>>>> _______________________________________________
>>>>
>>>>> FX.php_List mailing list
>>>>
>>>>> FX.php_List at mail.iviking.org
>>>>
>>>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>>
>>>>> --
>>>>
>>>>> Jonathan Schwartz
>>>>
>>>>> Exit 445 Group
>>>>
>>>>> jonathan at exit445.com
>>>>
>>>>> http://www.exit445.com
>>>>
>>>>> 415-370-5011
>>>>
>>>>> _______________________________________________
>>>>
>>>>> FX.php_List mailing list
>>>>
>>>>> FX.php_List at mail.iviking.org
>>>>
>>>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>>
>>>
>>>>
>>>
>>>> _______________________________________________
>>>
>>>> FX.php_List mailing list
>>>
>>>> FX.php_List at mail.iviking.org
>>>
>>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>
>>
>>>
>>>
>>> --
>>> Jonathan Schwartz
>>> Exit 445 Group
>>> jonathan at exit445.com
>>> http://www.exit445.com
>>> 415-370-5011
>>> _______________________________________________
>>> FX.php_List mailing list
>>> FX.php_List at mail.iviking.org
>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>
>
>>
>
>> Steve Winter
>> steve at bluecrocodile.co.nz
>> m: +44 77 7852 4776
>
>> 3 Calshot Court, Channel Way
>> Ocean Village, Southampton SO14 3GR
>
>>
>
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>
>
> --
> Jonathan Schwartz
> Exit 445 Group
> jonathan at exit445.com
> http://www.exit445.com
> 415-370-5011
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.iviking.org/pipermail/fx.php_list/attachments/20100106/598b9d4d/attachment.html
More information about the FX.php_List
mailing list