1 2 Previous Next 17 Replies Latest reply on May 5, 2017 5:32 PM by Malcolm

    Tips for Creating Multi-User Friendly Solution

    AjEGfmTech

      I am a basic, aspiring to be intermediate, in-house FM developer. We have invested in FileMaker Cloud (FMC) and I am getting ready to create an initial small/simple database to be published in FMC and accessed by users via WebDirect. Before I get too far, I want to make sure I have a solid multi-user friendly solution. We have about 150-200 potential users (all internal), though simultaneous use will probably only be a small fraction of that (I'm guessing about 10).

       

      I would like the users to have a consistent login screen that takes them to 'their home layout' for the database. This layout would be specific to the logged in user and would become a dashboard of sorts that I can show the user the records (portal), layouts (links) and data (charts) related to them. This layout would also be where the user could edit settings that effect their user experience.

       

      I have done a lot of researching and struggled to find the right terms to use when searching on this topic and as a result have not found much. Even the subject I have for this post seems not quite right. In what I have observed and read it seems like there is a method of creating a 'user preferences' table that would be able to take the login account (the FM account name used to login), match it up to the related user preference record and direct the user to a single-record layout based on that account. When I've played around with setting this up, it doesn't seem to work 'quite right'. One goal of this approach would be that any new records created in other tables by the user would be identified as belonging to that user, but in the tests I've played with, the actual results vary. I have a feeling I just don't have the basic foundation 'plumbing' setup quite right.

       

      I know I have not provided any real details to help 'solve' my question/request. I did that somewhat intentionally. At this point it seemed easier just to ask if anyone knows of an article, forum post, video or other resource that walks through some best practices for setting up what I'm calling a 'Multi-User Friendly Solution' (for a lack of coming up with any better name).

       

      Thanks in advance for any help.

        • 1. Re: Tips for Creating Multi-User Friendly Solution
          siplus

          A simple principle: if a field can be a global, make it such.

          • 2. Re: Tips for Creating Multi-User Friendly Solution
            Jaymo

            This YouTube video should get you started on how record locking works:

             

            Record Locking Defined - YouTube

            • 3. Re: Tips for Creating Multi-User Friendly Solution
              philmodjunk

              This layout would be specific to the logged in user and would become a dashboard of sorts that I can show the user the records (portal), layouts (links) and data (charts) related to them.

               

              You really, really do not want to give each user a different layout. Not only is there no need to do so, but setting up your design like that becomes a real nightmare as you end up constantly adding new layouts for each new user and have to make multiple identical layout changes each time you make a basic layout design update.

               

              Instead, you want a single "dashboard" layout based on a users table (could be your preferences table). Where you have one record for each user and from which you can use either relationships and/or portal filters to control what data appears on this layout. Note that true control of data access should be managed from the privilege Set settings in Manage | Security. It's possible, for example, to limit what records a given user can see and/or which records they can edit. Any User Interface designs you might employ to control access should be viewed as ways to make the user experience more friendly and not as a substitute for control employed via security settings. (As an example, you can keep the user from seeing "access denied" screens over data and prevent error dialogs explaining that access is denied as part of your interface design, but actual access is still a product of the user's privilege set.)

              • 4. Re: Tips for Creating Multi-User Friendly Solution
                dtsvirinko

                One goal of this approach would be that any new records created in other tables by the user would be identified as belonging to that user, but in the tests I've played with, the actual results vary. I have a feeling I just don't have the basic foundation 'plumbing' setup quite right.

                To achieve this, you need to add a set of utility fields to each table that will capture the username and timestamp when a record is created and/or modified. Here's an example of what this might look like:

                 

                CreatedOn

                CreatedBy

                ModifiedOn

                ModifiedBy

                 

                Use the auto enter options to capture this data automatically.

                 

                I hope this helps.

                • 5. Re: Tips for Creating Multi-User Friendly Solution
                  AjEGfmTech

                  Thanks for the reply siplus. I don't know how to interpret that, but I appreciate the time.

                  • 6. Re: Tips for Creating Multi-User Friendly Solution
                    Jaymo

                    What siplus is referring to is that global fields don't cause record locking. They can be edited by multiple people but never lock the record. They are also stored locally for each user in a multi-user environment so changes are not seen by other users.

                    • 7. Re: Tips for Creating Multi-User Friendly Solution
                      AjEGfmTech

                      Thanks for the video Jaymo. That wasn't necessarily what I was asking about, but is definitely good for me to know. :-)

                      • 8. Re: Tips for Creating Multi-User Friendly Solution
                        AjEGfmTech

                        Thanks for the input Phil. I had completely botched the wording in my initial post. I was 'not' intending to create a new layout for each user, but rather a new 'record' for each user that would be their 'home/dashboard'. I also was not intending to manage the user access and security outside of 'Manage > Security'. I would certainly use that for creating all accounts and privilege sets and restrict access based on the privilege set settings.

                         

                        What I am wondering about and not clear about is the 'best practice' method of setting up a set of 'People/User/Preferences' tables to facilitate a 'home/dashboard' perspective for the user while keeping the underlying table structure well organized.

                         

                        In my simple 'test' database I figured I would have People (table). Of the people in the database, many, but not all, would be users with FM created user accounts. I figured that 'user people' would need Preferences (table) for a place to enter their preferences as well as to provide a table to base the 'home/dashboard' layout on. I also thought it would be good to have a place to store system wide settings, so I created a Utility table for that. Then I created a table to represent data that the users would be creating and editing, I called that Scenarios (table). Lastly, I created a table to store information about the business items that each user is responsible for, which I called Stores (table).

                         

                        So, in my test I have...

                        - People

                        - Preferences

                        - Utility

                        - Scenarios

                        - Stores

                         

                        Screen Shot 2017-05-04 at 04.41.42 PM.png

                         

                        In the People table I created a Calc field to grab the logged in user account name [Get ( AccountName )].

                         

                        In the login script I set a variable for the Account Name, goto the Preferences layout, set a variable for the Preference primary key ID and then set that Preference pk as a global in the Scenarios table. I then search the Preferences table for the account name variable and display the result.

                         

                        Screen Shot 2017-05-04 at 04.49.08 PM.png

                         

                        The goal with all of that is to establish the logged in user record for the 'home/dashboard' layout. I just get the feeling this is not a good way to achieve my desired result and I'm thinking this is something that has been done so many times that there are some 'common best practices' for how to set this up. I'm just looking for a resource to show or discuss those best practices.

                        • 9. Re: Tips for Creating Multi-User Friendly Solution
                          AjEGfmTech

                          Thanks DTS. I do have those 'utility' fields for every table I ever create. The thing with that is that what if I want to pass 'ownership' of a record from one user to another? What if I want a record to be shared by more than one user? It seems I need a way to establish a connection between the 'user person' and the records they are responsible for (or share responsibility for) in various tables.

                           

                          I'm probably explaining this poorly.

                          • 10. Re: Tips for Creating Multi-User Friendly Solution
                            philmodjunk

                            I don't see the point to having a scenarios table. You already have a table with one record for each user. The user can view and edit data from the context of a record in that table (people) when such context is needed.

                            • 11. Re: Tips for Creating Multi-User Friendly Solution
                              AjEGfmTech

                              Sorry, I should have explained better. The 'Scenarios' are restaurant delivery pricing schemes. I created this simple database to allow our Owners and GM's to look at different pricing schemes, or 'scenarios', kind of like a calculator. The user home/dashboard would show the scenarios they have created, as well as scenarios created by all store Owners/GM's. Again, this is just a vehicle for me to use to work out a solid multi-user setup. It's not really that relevant to the multi-user part, it's just 'typical content' to play with.

                               

                              I'm a bit surprised that it seems nobody has resources for best practices in setting up multi-user databases? Maybe this is just too simple and obvious for most people?

                              • 13. Re: Tips for Creating Multi-User Friendly Solution
                                philmodjunk

                                Much of the time, there isn't that much different in terms of basic design between how you set up a single user solution and one stored by many. You do have to consider record locking issues should it be possible that two users might try to edit the same record at the same time. The sessions model is one way to handle those issues, but is not the only option.

                                 

                                You also have to consider access control issues to insure that each user is only allowed to do what is necessary for their particular role as a user of the database.

                                • 14. Re: Tips for Creating Multi-User Friendly Solution
                                  AjEGfmTech

                                  Thank you SO much Tom! While I need to review the links more closely, that indeed is what it seems I was looking for. And now it has a name! :-)  Session Model. Thank you very much!

                                  1 2 Previous Next