> I have multiple customers that each have their own version of the inspection. (This could be over hundreds of customers)
> Do I create a business object for each different type of inspection?
This depends on how different the inspection versions are. If you could generalize them and come up with a set of common attributes like InspectionDate, EquipmentName, PerfomedBy, etc., you can have a single Inspection object. If, on the other hand, some inspection versions may be so unique that their attributes or rules would make no sense for other customers, you would have to create a new inspection object for each unique situation. This means you would have to accommodate each of your customers individually, listen to their requirements and make changes to the business space to create a new inspection object (if you cannot reuse an existing one) and add a rule to use the specific inspection object for this particular customer.
> Do I create different business spaces for each customer and then consolidate reporting for internal use across all business spaces?
You can, and this would simplify the design a little since you do not need to add the logic to differentiate between customers and deal with multiple inspection types. This means, however, that you would end up with many independent business space configurations that you would have to maintain separately. If you want to make an improvement to your application you would need to make it in every business space separately. Also, you cannot run reports across multiple business spaces.
If you opt for a single business space you can run your internal reports even if you have different inspection objects. The way to implement it is to define a business object group Inspection with specific inspection objects as its members. This assumes that however different these objects may be, there would be some common attributes across them (like the ones mentioned above) so you could use these attributes when defining queries/reports on group Inspection.
> Do I need to create rules for each instance of each different inspection?
This depends on the customer requirements for their specific inspection version. If there is some processing/validation logic in addition to specific data then you would have to add specific rules to implement this logic.
> If I have different inspection objects then how would I display the approiate "inspections query result set" on a common Project Object form?
First, you make the Inspections attribute of object Project to be of type Inspection, which is a group as described above. Second, you remove the Add New Item from the presentation option for the attribute, meaning the users will not be able to click the button to add a new inspection. Instead, you define a process, say called CreateInspection, that takes Project as its input and creates a specific inspection object depending on the customer. This process would consist of rules like the following:
If Project.Customer.Name = 'CustomerA' Then ENTER NEW InspectionA WITH InspectionA.Project = Project
If Project.Customer.Name = 'CustomerB' Then ENTER NEW InspectionB WITH InspectionB.Project = Project
If Project.Customer.Name = 'CustomerC' Then ENTER NEW InspectionC WITH InspectionC.Project = Project
Third, you define an operation, say called 'New Inspection' for the Project form with operation type Start Process and process name CreateInspection. When the user clicks on the operation while on the Project form, the process will start and create a specific inspection object depending on the name of the customer associated with the project.
Please check the business object group Communication in the Library sample application and read the Library Case Study document for details on object groups. Please also check operation New Email defined on the Member form for an example of starting a process from a form.
Aware IM Support Team