A hierarchical organization of Projects, Packages, and objects lends itself to a modular approach for developing Clarify solutions.
A Project is the primary hierarchical level, or parent folder, used for organizing design-time objects. It is the deployable unit when distributing solutions to remote Servers, and the shareable unit when collaborating with other team members via an SVN Repository.
In this example, all resources (objects and other files) for your company’s transactions with one trading partner are all contained in ProjectA, while ProjectB houses all resources necessary for doing business with another trading partner.
Projects and their resources are built and maintained in the Studio’s Clarify Workbench perspective.
Projects are placed in a version control system so they can be shared with other team members. Once you place a Project in version control, you can synchronize changes, resolve differences, keep track changes, and see project history.
A Package is the secondary hierarchical level, or child folder, used for organizing objects. A Project can contain one or more Packages. For example, you can create different Packages according to their functionality, usability, or category.
An individual object, or resource, is located within one Package. An object is in only one place at one time.
All resources for one trading partner can be easily found, deployed, modified, and re-deployed. if organized within a single Project. These resources are separate from other trading partners.
Despite being separate, a Project may reference a Package in another Project. Therefore, although an object only exists in one place, it can be used in multiple Projects.
In the above diagram, Package2 might contain a Database Adapter for a purchase orders database. If the Package that the Database Adapter resides is made available to other Projects, other Projects that need to interact with that database can reference that single Database Adapter.
Cleo recommends that a separate Project, called Core, be created for common resources. That Project should contain objects that can be used by multiple trading partners.
If a Project is to make its resources available to other Projects, you must explicitly declare the Packages in the Project to be shared.