Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
OSEE/Developers Guide
Contents
OSEE Developers Guide
Architecture
Client Architecture
Although there is quite a bit to understand about the Architecture of OSEE, the main thing to understand right away is that OSEE provides an Extensible Framework called the OSEE Application Framework and also provides some Exemplary Applications built on this framework in the form of OSEE Define (the Requirements Management application) and OSEE ATS (Action Tracking System; the Configuration Management application).
The Application Framework provides all the necessary services to allow the application(s) to persist and share data in a common-version controlled object database.
Just like Eclipse provides the ability to add a plugin to the existing Eclipse environment, so OSEE allows other applications to add plugins and share the common data storage.
And just like Eclipse RCP allows an application to be built and deployed using the Eclipse framework but not include all the Exemplary applications like JDT, OSEE allows an application to be built and deployed using the OSEE Application Framework without including such applications as OSEE Define and OSEE ATS.
Client/Server Architecture
In order to be a scalable system, the Open System Engineering Environment (OSEE) has been slowly migrating into a distributed architecture where clients interact with an application server in-charge of managing access to an OSEE data store. Additionally, in an effort to provide load balancing, failure recovery, and code compatibility, clients consult an arbitration server before connecting to an application server. The arbitration server's responsibility is to keep track of all the application servers interacting with a common data store and direct clients to a healthy application server compatible with the client’s OSEE code version. In this arrangement, arbitration servers act as the initial access points into the OSEE server cloud where a collection of application servers manage client requests to access and operate on a common OSEE data store. Figure 1 shows an example of the OSEE Client/Server network.
In the figure above, three application servers interact with a single OSEE data store. The data store is comprised of a relational database and a remote file system used to store binary data. It is not necessary for the database and the binary data to exist on the same machine. The only requirement is that the application servers have access to both resources. Upon start-up, each application server registers himself on the data store’s server lookup table by entering its host address, port, supported code versions, and its unique id. When the arbitration server receives a request to find an application server to support a client connection, the arbitration server reads the data store’s server lookup table and selects the best match for the client. The client requests this information from the arbitration server upon start-up or whenever it can’t communicate with an application server. It is important to note that the arbitration server does not have to be a different server thanan application server. All application servers are able to act as an arbitration server. An application server is referred as an arbitration server when clients interact with it in this context. Figure 2 depicts the sequence of events involved in the arbitration process.
Once a client receives an application server's address and port information, the client must authenticate with the application server before it can gain access to the OSEE data store. During the authentication process, a client submits to the application server the current user's credential information and the authentication protocol id to use during the process. The application server verifies the user via the selected protocol and grants access to the data store by creating a session for the user. From this point forward, the application server will be responsible for managing access to the data store by identifying the user via the session id. Whenever a client wants to interact with the application server, it will need to submit its session id in order to gain access to the OSEE data store. Figure 3 shows the sequence of events involved in the authentication process.
Data Model
The OSEE framework is built around a user configurable and extensible data model comprised of attributes, artifacts, and relations. An attribute is a key value pair representing a single data element such as a description, a date, a number, or a file. These basic data elements are grouped into artifacts. Artifacts can be configured to have any number of attributes. By default, an artifact will always have an attribute of type name. In addition, artifacts can be related to one another via relations. By default, an artifact will always have a default hierarchy relation type. This allows artifacts to be connected together in a tree like fashion. In the example below, two instances of the basic artifact type are shown. Artifact 1 has an attribute of type name set to string data "X". Artifact 2 has an attribute of type name set to string data "Y". These two artifact instances are related via the default hierarchy relation type. Artifact 1 is Artifact 2's parent artifact.
Now that we have a basic understanding of the model, lets take a closer look at attributes and how they are defined. An attribute is defined through its attribute type. The attribute type is a blue print for constructing attribute instances. It defines the type of data the will be held by the attribute, the data source or who provides it, how many instances can be created, default value to use during creation, whether the attribute can be tagged for word searches, and if the attribute holds file data, its file extension. By default, data contained in the attribute can be represented through OSEE's basic data types:
- String Attribute
- Boolean Attribute
- Integer Attribute
- Floating Point Attribute
- Date Attribute
- Enumerated Attribute
OSEE provides 3 attribute data providers: the default attribute data provider, URI attribute data provider, and the Clob attribute data provider. The default attribute data provider is used for data containing less than 4000 characters in length. Data is stored and retrieved from the OSEE relational database. Most attribute types will use this data provider to handle its data content. The URI attribute data provider is used for large data. The provider communicates to the OSEE application server to store and retrieve data. The Clob attribute data provider is a hybrid provider using both the OSEE relational database and the application server to retrieve and store data. When the data contained by the attribute has less than 4000 characters, the provider uses the relational database. If the data exceeds the 4000 character limit, then the application server is used.
Configuration Properties
OSEE can be configured by setting the following Java system properties when launching Eclipse. Java system properties are key/value pairs and can
be passed as launch arguments in the form of -D<key>=<value> (i.e. -Dosee.authentication.protocol=trustAll). These -D options can be specified directly
in the command to launch Eclipse or in the corresponding ini file for the eclipse executable used.
System Property Name | Values | Default | Defining Class | Description |
---|---|---|---|---|
org.osgi.service.http.port | 1 - 65535 |
-1 |
OseeServerProperties | Port the client will use to communicate with the OSEE Application Server |
osee.application.server.data | [FILE SYSTEM PATH] |
User Home | OseeServerProperties | A directory on the file system to be used by the application server to store and serve artifact binary data. |
osee.derby.server | [<address>:<port>] |
OseeServerProperties | When specified, this system property sets the URL used to launch a derby database server. | |
osee.application.server.data | [FILE SYSTEM PATH] |
User Home | OseeServerProperties | A directory on the file system to be used by the application server to store and serve artifact binary data. |
osee.version | [<"e;version 1"e;>;<"e;version 2"e;>] |
OseeServerProperties | When specified, this system property sets the application server's supported client versions. NOTE: version string can use regular expressions | |
osee.check.tag.queue.on.startup | true, false |
false | OseeServerProperties | When specified, this system property allows the application server to check the tag queue and begin tagging and pending tag jobs. |
osee.connection.info.uri | [FILE SYSTEM PATH] |
OseeProperties | File system path or uri containing custom database connection information. | |
osee.db.connection.id | <db identifier> |
Default from db.connection file | OseeProperties | Specifies which database OSEE should connect to. This id references connection information specified in the ...db.connection.xml file. See <a href="dbconnection.php" >Database Connection Information</a> file for more information. |
osee.jini.forced.reggie.search | true, false |
false |
OseeProperties | If true, adds the lookupList to the global lookup list such that a refresh will try to locate the service again |
osee.jini.lookup.groups | user defined group name | OseeProperties | the Jini Group that all OSEE provided Jini services will register with | |
osee.log.default | FINE, INFO, WARNING, SEVERE |
WARNING |
OseeProperties | the default logging level for all loggers |
osee.port.scanner.start.port | 1 - 65535 |
18000 |
OseeProperties | the first port number to test for availability when a new port is needed |
osee.application.server | <address>:<port> |
OseeClientProperties | When specified, this system property sets the URL used to reference the application server and arbitration is bypassed. | |
osee.arbitration.server | <address>:<port> |
OseeClientProperties | The arbitration server address and port to use. This system property must be specified for the system to gain access to OSEE data. If the application server property is set then that address takes precedence and arbitration is bypassed. | |
osee.authentication.protocol | protocol name | OseeClientProperties | protocol to be used by the client to authenticate with the server | |
osee.choice.on.db.init | choice name | OseeClientProperties | the predefined database initialization choice | |
osee.file.specified.schema.names.on.db.init | true, false |
false |
OseeClientProperties | Specifies whether OSEE database initialization should use the schema names specified in the schema.xml files instead of using the connection schema. Using the connection specified schema is the default behavior. |
osee.import.from.connection.id.on.db.init | [FILE SYSTEM PATH] |
OseeClientProperties | Specifies where table data should be imported from during OSEE database initialization. The default is to use the database connection id specified in the schema.xml files. | |
osee.import.on.db.init | true, false |
false |
OseeClientProperties | Specifies whether OSEE database initialization should import database data as part of its tasks. |
osee.local.application.server | true, false |
false |
OseeClientProperties | When set to true launches an application server upon start up. Uses org.osgi.service.http.port arg to determine port to use. |
osee.local.http.worker.port | <port> |
Port Scan starting from 18000 |
OseeClientProperties | Port to use for local worker server. |
osee.prompt.on.db.init | true, false |
true |
OseeClientProperties | Specifies whether to interactively prompt the user during database initialization for init choice |
osee.record.activity | true, false |
true |
OseeClientProperties | Specifies whether user activity should be logged |
osee.ats.ignore.config.upgrades | true, false |
AtsProperties | ||
osee.ote.benchmark | true, false |
OteProperties | ||
osee.ote.cmd.console | true, false |
OteProperties | Specifies whether to enable the OTE command console | |
osee.ote.server.title | free text name | OteProperties | name given to the OTE server which is displayed in the test manager | |
osee.ote.timing.log.path | OteProperties |