The system architecture, as depicted in Fig.1, incorporates eight components, viz., Facilitator, Design Agent (D-Agent),
    Feature Identification  Agent  (FI-Agent), Manufacturing Capability Agent (MC-Agent), Manufacturability Evaluation
    Agent (ME-Agent), Assemblability Evaluation Agent (AE-Agent), Cost Evaluation Agent (CE-Agent), and Process
    Planning Agent (PP-Agent). The last six service agents (usually encapsulated pre-existing legacy tools) and the D-Agent
    (console agent) interact with each other through the Facilitator. Inter-agent communication includes both informal
    communication and formal exchange between programs. Currently, KQML (Knowledge Query and Manipulation
    Language) is used as a protocol for exchanging information, both data and knowledge, across the Internet. JATLite
    (Java Agent Template, Lite), a public domain API that creates client agents written in Java, is used as an agent development
    environment. The agents are driven from this Java agent template.

          The description of each agent's functionality or responsibility is as follows:
    (1) Facilitator: It is responsible for the management of interactions in the agent community, and conflict resolution. It
        "knows" which agent is available, and what function each agent has. Each agent receives messages from the Facilitator,
        and sends results back to it after completing their jobs. The Facilitator routes the requests received to appropriate agents
        based on its knowledge of capabilities of each agent, which is known as content-based routing.
    (2) D-Agent: This is a Java applet generated from a Web page. It is used by a designer to submit the design information of
        his/her product, before or after modifications, to the system for manufacturability and/or assemblability analysis, and
        process plan generation of the design. It advises the designer to make necessary modifications to his/her product design.
    (3) FI-Agent: This agent is responsible for retrieving attributes for each feature in a design. These attributes are feature type,
        tag, orientation, location and dimensions. This information is then used for manufacturability /assemblability evaluation.
    (4) MC-Agent: This agent manages manufacturing capability models from different factories, which contain information of
        shop-floor resources available (machines and  tools)  and   capability   of   these   resources.   These models are stored
        in individual databases located at different local sites. They are connected to the MC-Agent via the Internet. The agent is
        responsible for looking for a suitable capability model if the Facilitator informs it of a manufacturability evaluation failure,
        and making a ranking of optional factories for the design according to the cost estimation results from the CE-Agent.
    (5) ME-Agent: This agent is responsible for the manufacturability evaluation on the product design by acquiring a capability
        model from the MC-Agent. It returns information about conflicts i.e., manufacturability evaluation failures, to the
        Facilitator if evaluation fails for the given capability model, as well as some suggestions for product redesign or searching
        for a suitable capability model.
    (6) AE-Agent: This agent is responsible for the assemblability evaluation of the product design. It returns information about
        conflicts i.e., assemblability evaluation failures to the Facilitator if evaluation fails.
    (7) PP-Agent: This agent is responsible for the generation of an optimal process plan based on the design and selected
        resources.
    (8) CE-Agent: This agent makes a cost estimation for each factory based on the generated process plan.
 
         Each agent, except the MC-Agent, has a local database, which is used to store and manage messages received from
    other agents. All the individual databases, together with those from the MC-Agent, are integrated into a distributed
    database via the Internet.