org.cougaar.core.qos.ca

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Science » Cougaar12_4 » org.cougaar.core.qos.ca 
org.cougaar.core.qos.ca

Coordination Artifacts are designed to separate out an abstract communication pattern, on the one hand, and the domain-specific clients of the communication on the other. The internal parts of the Artifact are concerned with organizing Communities, Relays and other COUGAAR infrastructure in a structured way in order to represent a pattern of inter-Agent chatter. Each kind of Artifact completes this by supplying Community names, data types etc.

Coordination Artifacts are specifically designed to operate across Plugins. At first glance this might appear to violate one of the design principles of COUGAAR. But on further reflection it can be seen that the Coordination approach is analagous to a cross-cut in Aspect Oriented Programming. Just as an Aspect cross-cuts the dominant Object Oriented decomposition, so a Coordination Artifact cross-cuts the Plugin "decomposition" of a COUGAAR Agent.

Coordination Artifacts are created by a CoordinationArtifactProvider, via requests made to the CoordinationArtifactBroker. A CoordinationArtifactProvider is like a COUGAAR ServiceProvider: its primary job is to find or make CoordinationArtifacts of some particular kind. But it also defines a set of Roles that describe the functions performed by clients of this kind of Artifact. For example in Artifacts that implement a multicast request (one request, multiple replies), the two Roles are queryer and responder. A Provider also implicitly defines a set of parameters that distinguish the individual instances of that kind of Artifact from one another.

Every Role in an Artifact can be seen from two perspectives: that of the Artifact and that of a Role player. Borrowing some terminology from the CORBA Component Model, we refer to these as Facets and Receptacles, respectively. The analogy is only approximate, however. Unlike CCM, both Facets and Receptacles are interfaces, and typically these interfaces overlap without being identical. On the other hand, a Receptacle is always bound to exactly one Facet, as in CCM, and is the client's only handle into the Artifact (which in this analogy is like a Component in CCM), also as in CCM.

This leads to the following Java interfaces:

  • RolePlayer: From the Artifact's perspective, each client plays one of the Artifact's defined roles. This interface specifies that abstracion.
  • Facet: The generic viewport that any given RolePlayer has into the Artifact is specified by a Facet, which is effectively a definition of the role.
  • Receptacle: The RolePlayer's handle on a Facet.
  • CoordinationArtifact: The creation of Facets and the linkage between Facets RolePlayers is handled at this layer.
  • CoordinationArtifactProvider: The main job of the Provider is to define the logical Roles and parameters, and to create and manage CoordinationArtifacts as needed.
  • CoordinationArtifactBroker: This interface defines a COUGAAR service that provides the top-level entry point into CAs.

Given these definitions, we can see that a Coordination Artifact is essentially coordinating communication between Role Players. But the Role Players as well implement a kind of coordination of their own, a dual of the Coordination Artifact: the Players coordinate the operation of the various Artifacts in which they play. Although the purposes and structure of these two sorts of coordination differ, they share one important feature: the logical structure of both can be described declaratively as set of dependencies between and actions among the parts. Furthermore, the interactions between a Role Player and an Artifact can be expressed as assertions, retractions or modifications of facts.

Rule languages are particularly good at expressing facts and dependencies, and the Coordination Artifact code is explicitly designed to work with rule systems, though it's written in a language neutral way. The assumption is that a collection of implementation classes of the abstract Artifacts and Role Players can be written to use a specific rule language and rule engine, while the common infrastructure can deal in general with facts, assertions, etc.

In this scenario, the rule engine is owned by the Role Player, and its collection of facts at runtime is partitioned by the Artifacts with which it interacts. Once a Player is bound to an Artifact, the primary means of interaction between them by means of facts: a given Player sends fact assertions, modifications and retractions into its Receptacle for a given Artifact in order to propogate those assertions etc to other Player's in the same Artifact; the Artifact in turn propogates assertions, retractions etc by sending them to the appropriate Player. Thus the RolePlayer and Receptacle interfaces are very similar, precisely because of this duality.

Java Source File NameTypeComment
AlarmCoordinationArtifactProvider.javaClass
AlarmServiceSleeperFacet.javaClass Does the main work of the Alarm Coordinaton Artifact.
BeanCoordinationArtifactProvider.javaClass This class is implements a Coordination Artifact for creating facts from beans.
BeanToFactFacetImpl.javaClass This class is the abstract implementation of a facet creates facts representing the creation or modification of Java Beans.
BlackboardExecutor.javaInterface This interface is the common base of Receptacle s and Facet s.
CommunityFacetImpl.javaClass Default implementation for Facets that deal with ABAs and Communities.
CommunityFinder.javaClass This utility class helps simplify Community lookup.
CommunityReceptacle.javaInterface This interface adds Community support to Receptacle .
ConnectionSpec.javaClass This simple struct provides a specification for a role in particular CoordinationArtifact .
CoordArtConstants.javaInterface
CoordinationArtifact.javaInterface See the package javadoc for more details on CoordinationArtifacts.
CoordinationArtifactBroker.javaInterface This interface describes the broker service that finds CoordinationArtifact s for RolePlayer s.
CoordinationArtifactBrokerPlugin.javaClass This plugin provides the CoordinationArtifactBroker service, which is implemented by an inner class.
CoordinationArtifactImpl.javaClass This class is the standard base implementation of CoordinationArtifact .
CoordinationArtifactProvider.javaInterface See the package javadoc for more details on CoordinationArtifactProviders.
CoordinationArtifactProviderImpl.javaClass This class represents the base implementation of a CoordinationArtifactProvider .
CoordinationArtifactProviderPlugin.javaClass This is a simple Plugin wrapper for a CoordinationArtifactProvider .
Facet.javaInterface A Facet represents a role in CoordinationArtifact , from the perspective of the Artifact itself.
FacetImpl.javaClass Default implementation for Facet.
FactAssertion.javaClass This class represents a queued assertion of a Fact.
FactRetraction.javaClass This class represents a queued retraction of a Fact.
FactRevision.javaClass This abstration represents a queued retraction or assertion of a Fact.
MetricsReaderFacet.javaClass
MetricsServiceCoordinationArtifactProvider.javaClass Coordination Artifact for the Metric Services, one role per service.
MetricsWriterFacet.javaClass
QueryCoordArtConstants.javaInterface A set of constants used by the QueryResponseCoordinationArtifactProvider .
QueryFacet.javaClass An abstraction of the query role in QueryResponseCoordinationArtifacts, as provided by QueryResponseCoordinationArtifactProvider .
QueryReceptacle.javaInterface This interface adds one method to CommunityReceptacle that allows RolePlayers to find out how many recipients a given message is expected to have.
QueryRelayImpl.javaClass
QueryResponseCoordinationArtifactProvider.javaClass This plugin is the generic implementation of a multicast query/response rpc CoordinationArtifactProvider .
Receptacle.javaInterface A Receptacle represents a role in a CoordinationArtifact from the perspective of the RolePlayer .
RelayReclaimer.javaClass
ResponseFacet.javaClass An abstraction of the response role in the QueryResponseCoordinationArtifact, as provided by QueryResponseCoordinationArtifactProvider .
ResponseRelayImpl.javaClass
RolePlayer.javaInterface This interface describes a generic CoordinationArtifact client.
SimplestRelayImpl.javaClass Implementation of a very simple Relay.
SleeperFacet.javaClass Does the main work of the Alarm Coordinaton Artifact.
ThreadServiceSleeperFacet.javaClass Does the main work of the Alarm Coordinaton Artifact via ThreadService Schedulables.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.