Am I heading in the right direction ?

If you have questions or if you want to share your opinion about Aware IM post your message on this forum
Post Reply
4xjbh
Posts: 177
Joined: Thu Dec 22, 2005 10:01 pm
Location: Brisbane

Am I heading in the right direction ?

Post by 4xjbh »

I have 3 Business Objects (BO). People, Companies, Projects.

If I want to associate companies to multiple projects do I create another BO say called "ProjectContacts" with this BO Recording links between Companies and Projects and People and Projects.

eg.

Number Name Company Type
051011 Tyron Place JD Const Builder
051052 Johnson Crt JD Const Builder
053014 Spirit JHJ Archit. Builder

Then I could have a tab/form in companies which have a query to show the projects associated to the company.

[/url]
aware_support
Posts: 7523
Joined: Sun Apr 24, 2005 12:36 am
Contact:

Post by aware_support »

You do not have to create any extra objects. If you want to associate companies to projects just define attribute "Projects" in the Company business object of type "Project". When defining an attribute tick the "multiple allowed" checkbox to indicate that a company can be related to multiple projects. You can also immediately define a matching attribute in the "Project" object called "Company".

So a Company will be related to multiple projects through "Projects" attribute and a Project will be associated with a single company through "Company" attribute.

Similarly, if you want to associate people to projects just create "Projects" attribute in the "People" (or "Person"?) object of type "Project". Tick "multiple allowed" checkbox as well and define matching attribute in the "Project" object called "People".

Once you define the attributes Aware IM will automatically generate a user interface to allow users to associate particular projects with particular companies and particular people with particular projects. Once a user does this Aware IM will always show the right association on the forms of the corresponding objects - you do not even have to define a query.

Please also refer to the User Manual that explains references in Aware IM in detail. They are very different to other products and much easier to use as Aware IM generates a LOT of things automatically - including database tables, links between them and queries.
Aware IM Support Team
4xjbh
Posts: 177
Joined: Thu Dec 22, 2005 10:01 pm
Location: Brisbane

Post by 4xjbh »

I have this working exactly as you have outlined but in the returned data I want to show if the company is the owner, builder, client, consultant etc. Example: In an Architects office we deal with Company ABC. ABC could be the Builder for our client or ABC can be our client. If I have an attribute named Category in Company how do I make ABC a client in Project xyz and a Builder in Project LMO.

I have not worked out a way to do this without creating another BO
aware_support2
Posts: 595
Joined: Sun Apr 24, 2005 2:22 am
Contact:

Post by aware_support2 »

Yes, you are right. You do need a separate business object to represent a relationship between two objects that, in addition to linking the objects, also has to capture some additional information. In your case it would be the role of the company on the project and the company representative.

Another approach you may consider, that does not require the additional business object, is to have a separate attribute for each role a company may have on a project. For example, on the Project object you may have attributes Builder, Client and Consultant (multiple values not allowed), all of type Company. Respectively, on the Company object you would have matching attributes ProjectsBuilt, ProjectsCommissioned and ProjectsConsulted (multiple values allowed) of type Project. Then the form for object Project will show each company in a separate cell rather than in a table with other companies. Similarly, the form for object Company will show separate tables for projects where the company was the builder, client or consultant. However, if the number of potential company roles (i.e. the category values) is more than a few, or you want to have a freedom to enter a new role at run-time rather than being constrained by the predefined category values, this approach becomes impractical.

Regardless of which approach you take, Aware IM has a very flexible query mechanism, so you will be able to run queries like show all projects where company ABC was the builder and/or company XYZ was a consultant, etc.

You may have a look at objects Loan or Reservation in the configuration of the Library sample application for an example of a link object (between objects Member and Item) with additional information.
Aware IM Support Team
4xjbh
Posts: 177
Joined: Thu Dec 22, 2005 10:01 pm
Location: Brisbane

Post by 4xjbh »

OK. I am pulling my hair out trying to get this attribute to work.

I have created the BO that lists what Company is linked to Projects and what role it plays. Mutiple Companies can be related to one Project with same or different roles.

In the Company BO I have a Projects tab which has an attribute called CompanyProjects. I am trying to search the ProjectCompanies BO and display the results for the current company in the CompanyProjects attribute. ie List every project the current Company is related too.

FIND ProjectCompanies WHERE ProjectCompanies.CompanyName=Company.CompanyName

Thanks
aware_support2
Posts: 595
Joined: Sun Apr 24, 2005 2:22 am
Contact:

Post by aware_support2 »

So, your design is like this (correct me if I am wrong):

Business objects:
Company -- CompanyProject -- Project

Attributes:
Company.Projects (multiple) -- matching to -- CompanyProject.Company (single)
Project.Companies (multiple) -- matching to -- CompanyProject.Project (single)

If this is correct, when you create a new instance of CompanyProject in the operating mode (the browser) and select a company and a project for it, the new instance will automatically appear on both Company and Project object forms (this is similar to registering a new Loan in the Library sample application, which then automatically becomes visible on Member and Item forms). You do not even need to add any search functionality, the system does it all automatically for you. This way the table for attribute Projects on the Company form should display all projects (i.e. CompanyProject instances) for the company. If there are too many items in the list, or if you want to see only the projects where the company had a particular role, you can narrow the list down by clicking the filter button in the caption of the table and entering desired criteria.

Please note the importance of matching attributes. They are absolutely essential for the system to be able to automatically display related objects.

You will also need to add a couple (or more) shortcut attributes to object CompanyProject for display purposes. Particularly, you would need an attribute CompanyName with shortcut path set to Company.Name and an attribute ProjectName with shortcut path set to Project.Name. Then you can select attribute CompanyProject.CompanyName to be displayed on the Project form for attribute Companies. Similarly, you can select attribute ProjectName to be displayed on the Company form for attribute Projects. Please have a look at Loan object in the configuration of Library sample application for an example of shortcut attributes.

Let me know if this makes sense. There isn't really much to it once you get used to the system. It does many things automatically for you.
Aware IM Support Team
4xjbh
Posts: 177
Joined: Thu Dec 22, 2005 10:01 pm
Location: Brisbane

Post by 4xjbh »

Thanks. I was changing the "Matching Attributes" to none.

I was on the train reading the user guide on the train and found the "Matching Attributes" note and the lightbulb went off over my head............then your reply was posted bringing clarity.

Your quick responses are appreciated and I am now hooked.
Post Reply