<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.transcends.co/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.transcends.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tobias</id>
		<title>RifidiWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.transcends.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tobias"/>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Special:Contributions/Tobias"/>
		<updated>2026-06-04T02:49:48Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>https://wiki.transcends.co/index.php/EdgeServerJMS</id>
		<title>EdgeServerJMS</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/EdgeServerJMS"/>
				<updated>2009-06-13T15:37:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Future Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=JMS in the Edge Server=&lt;br /&gt;
This page describes how JMS is used in the Edge Server&lt;br /&gt;
==A very, very brief JMS Introduction==&lt;br /&gt;
JMS (Java Messaging Service) is a standard for a messaging API as specified by JSR 914.  A ''JMS Provider'' is an implementation of the JMS specification. The idea is that there is a server whose job it is to route messages.  It is up to the provider to define exactly how this server works.  For example, some providers require you to start the server administratively from the command line and allow you to control it using JMX. Other providers allow you to start the server in your source code. &lt;br /&gt;
&lt;br /&gt;
There are two types of clients to the server.  A ''JMS Consumer'' will consume JMS Messages.  A ''JMS Producer'' will send messages to the server.  &lt;br /&gt;
&lt;br /&gt;
There are two ways to use JMS.  You can either use a ''point-to-point'' model, or you can use a ''publish-subscribe'' model.  The basic difference is that with the point-to-point model, for every message produced, there is at most one consumer.  With the publish-subscribe model, there can be more than one consumer.  Point-to-point implementations will use a ''JMS Queue'' as a destination.  Publish-subscribe implementations will use a ''JMS Topic''. For a better explanation, see: this [http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html|FAQ article].&lt;br /&gt;
&lt;br /&gt;
Rifidi Edge Server uses ActiveMQ as its provider.  With ActiveMQ, the server is called a Broker.  Rifidi uses spring to create and start the broker.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Rifidi Edge Server uses JMS (ActiveMQ) to pass certain kinds of data from component to component. The edge server separates its usage of JMS into two logical components:&lt;br /&gt;
* Internal Message Bus - This is used for tag data that is collected by sensor plugins (e.g. Commands executing on an Alien9800 session).  It is implemented using an ActiveMQ broker with one Destination (specifically a Topic).  Since it is only used internally, clients (both producers and consumers) connect to it using a vm connection.&lt;br /&gt;
* External Notification - This is used to expose tag events and notification events to software outside the edge server. It is implemented using an ActiveMQ broker with two Destinations (one Topic for tag events and one for notification events).  Clients to the broker (both producers and consumers) can connect to it using a vm connection.  Clients external to the edge server can use a TCP connection.&lt;br /&gt;
&lt;br /&gt;
There are two kinds of events used in the Rifidi Edge Server:&lt;br /&gt;
* Tag Events - These events consist of tag data produced by sensors (depicted in blue below)&lt;br /&gt;
* Notification Events - These are system events such as a new reader being created, a session state change, or a property on a reader changing. (depicted in red below)&lt;br /&gt;
&lt;br /&gt;
[[Image:Edgeserverjms.png|thumb|500px|none]]&lt;br /&gt;
&lt;br /&gt;
The image above shows commands (JMS Producers) producing tag events and sending them to the internal topic.  Other components (such as ReaderFactories) produce notification events.  There are two consumers of events that are put on the internal topic: Esper (which uses the events as a stream for event stream processing) and the notification plugin (which simply relays the events to the external tags topic.  External edge server clients can then connect to the two external topics to get notification and tag events.&lt;br /&gt;
==Components==&lt;br /&gt;
There several JMS objects that are automatically created when the edge server starts up (inside jms.xml in the spring folder of the core bundle).  These objects should be reused when applicable.  The objects that should be reused are made available as OSGi services.&lt;br /&gt;
===Broker===&lt;br /&gt;
As mentioned above, there are two brokers: an internal and and external one.  You can connect to either broker within the edge server using a vm connection. &lt;br /&gt;
* For the internal broker use this url: vm://internalBroker&lt;br /&gt;
* For the external broker use this url: vm://externalBroker&lt;br /&gt;
* To create a connection to the external broker from outside the vm, you can use this url: tcp://localhost:1099&lt;br /&gt;
===Destination===&lt;br /&gt;
There are three topic automatically created:&lt;br /&gt;
* &amp;lt;tt&amp;gt;org.rifidi.edge.external.notifications&amp;lt;/tt&amp;gt; - Used to send system messages to software outside of the edge server&lt;br /&gt;
* &amp;lt;tt&amp;gt;org.rifidi.edge.external.tags&amp;lt;/tt&amp;gt; - Used to send tag events to software outside of the edgeserver&lt;br /&gt;
* &amp;lt;tt&amp;gt;org.rifidi.edge.internal&amp;lt;/tt&amp;gt; - Used to collect tag messages from sensors&lt;br /&gt;
&lt;br /&gt;
These three destinations are available as services in the osgi registry.  The bean names are:&lt;br /&gt;
* &amp;lt;tt&amp;gt;externalNotificationsDest&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;externalTagsDest&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;internalDest&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can access them from another bundle as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Get a reference to the internal Message Buffer --&amp;gt;&lt;br /&gt;
&amp;lt;osgi:reference id=&amp;quot;internalMB&amp;quot; interface=&amp;quot;javax.jms.Topic&amp;quot; bean-name=&amp;quot;internalDest&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Connection Factories===&lt;br /&gt;
A connection factory allows JMS clients to create connections to the broker.  There are two connection factories available in the OSGi service registry (one for each broker).  Both connection factories use the vm transport.&lt;br /&gt;
* &amp;lt;tt&amp;gt;internalBrokerConFac&amp;lt;/tt&amp;gt; allows you to create connections to the internal broker&lt;br /&gt;
* &amp;lt;tt&amp;gt;externalBrokerConFac&amp;lt;/tt&amp;gt; allows you to create connections to the external broker&lt;br /&gt;
&lt;br /&gt;
you can access them from another bundle as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Get reference to connection factory to internal Broker --&amp;gt;&lt;br /&gt;
&amp;lt;osgi:reference id=&amp;quot;confac&amp;quot; interface=&amp;quot;javax.jms.ConnectionFactory&amp;quot; bean-name=&amp;quot;internalBrokerConFac&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
A template is a class provided by spring that helps you produce messages.  They are thread-safe and are intended to be used by multiple components.  If used without any kind of pooling, templates will create a JMS Connection, a JMS Session, JMS Producer each time it sends a message.  However, the two templates available in the OSGi registry wrap a connectionfactory in a &amp;lt;tt&amp;gt;PooledConnectionFactory&amp;lt;/tt&amp;gt; to avoid this problem.  These templates should usually not be used to consume messages and instead a &amp;lt;tt&amp;gt;SimpleMessageListenerContainer&amp;lt;/tt&amp;gt; (see below) should be used instead.  There are two templates available in the OSGi registry:&lt;br /&gt;
*&amp;lt;tt&amp;gt;internalJMSTemplate&amp;lt;/tt&amp;gt;.  This is used to produce messages and send them to the internal broker.  It wraps the &amp;lt;tt&amp;gt;internalBrokerConFac&amp;lt;/tt&amp;gt; and has its default destination set to &amp;lt;tt&amp;gt;org.rifidi.edge.internal&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*&amp;lt;tt&amp;gt;externalJMSTemplate&amp;lt;/tt&amp;gt; This is used to produce messages and send them to the external broker.  It wraps the &amp;lt;tt&amp;gt;externalBrokerConFac&amp;lt;/tt&amp;gt; and does not have a default destination set.&lt;br /&gt;
&lt;br /&gt;
You can access the templates from another bundle as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Get a reference to the internal message bus --&amp;gt;&lt;br /&gt;
&amp;lt;osgi:reference id=&amp;quot;internalMB&amp;quot; interface=&amp;quot;org.springframework.jms.core.JmsTemplate&amp;quot; bean-name=&amp;quot;internalJMSTemplate&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting up a Producer==&lt;br /&gt;
This section shows you how to set up a JMS producer in the Rifidi Edge Server&lt;br /&gt;
===Tag Producer===&lt;br /&gt;
Sensor plugins will need to be able have access to the internal message bus to add tag events to it.  In order to do this, they need to have this statement in their spring xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;osgi:reference id=&amp;quot;internalMB&amp;quot; interface=&amp;quot;org.springframework.jms.core.JmsTemplate&amp;quot; bean-name=&amp;quot;internalJMSTemplate&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the &amp;lt;tt&amp;gt;internalJMSTemplate&amp;lt;/tt&amp;gt; already has the internal topic as its default destination, the spring xml does not need to get a destination out of the OSGi registry.&lt;br /&gt;
&lt;br /&gt;
Now they can pass this bean into the objects that will use it (for a sensor this is typically the ReaderFactory).&lt;br /&gt;
&lt;br /&gt;
To send a message, you might have to define a message creator that implements &amp;lt;tt&amp;gt;MessageCreator&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Used to create a JMS message to send to the Queue that collects Tag Data&lt;br /&gt;
	 * &lt;br /&gt;
	 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
	 * &lt;br /&gt;
	 */&lt;br /&gt;
	private class ObjectMessageCreator implements MessageCreator {&lt;br /&gt;
&lt;br /&gt;
		/** Message to send */&lt;br /&gt;
		private ActiveMQObjectMessage objectMessage;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Constructor.&lt;br /&gt;
		 * &lt;br /&gt;
		 * @param tags&lt;br /&gt;
		 *            the tags to add to this message&lt;br /&gt;
		 */&lt;br /&gt;
		public ObjectMessageCreator(Set&amp;lt;TagReadEvent&amp;gt; tags) {&lt;br /&gt;
			super();&lt;br /&gt;
			objectMessage = new ActiveMQObjectMessage();&lt;br /&gt;
&lt;br /&gt;
			try {&lt;br /&gt;
				objectMessage.setObject(new ReadCycle(tags, reader, System&lt;br /&gt;
						.currentTimeMillis()));&lt;br /&gt;
			} catch (JMSException e) {&lt;br /&gt;
				logger.warn(&amp;quot;Unable to set tag event: &amp;quot; + e);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/*&lt;br /&gt;
		 * (non-Javadoc)&lt;br /&gt;
		 * &lt;br /&gt;
		 * @see&lt;br /&gt;
		 * org.springframework.jms.core.MessageCreator#createMessage(javax.jms&lt;br /&gt;
		 * .Session)&lt;br /&gt;
		 */&lt;br /&gt;
		@Override&lt;br /&gt;
		public Message createMessage(Session arg0) throws JMSException {&lt;br /&gt;
			return objectMessage;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can use the send method in the template to send the message to the broker.&lt;br /&gt;
&lt;br /&gt;
==Setting up a Consumer==&lt;br /&gt;
To consume messages from a topic, you will need to add the following code to the spring xml file in your bundle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;bean id=&amp;quot;jmsContainer&amp;quot;&lt;br /&gt;
		class=&amp;quot;org.springframework.jms.listener.SimpleMessageListenerContainer&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;property name=&amp;quot;autoStartup&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;property name=&amp;quot;connectionFactory&amp;quot; ref=&amp;quot;confac&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;property name=&amp;quot;destination&amp;quot; ref=&amp;quot;internalMB&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;property name=&amp;quot;messageListener&amp;quot; ref=&amp;quot;myMessageListener&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;property name=&amp;quot;acceptMessagesWhileStopping&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Get reference to connection factory to internal Broker --&amp;gt;&lt;br /&gt;
	&amp;lt;osgi:reference id=&amp;quot;confac&amp;quot; interface=&amp;quot;javax.jms.ConnectionFactory&amp;quot;&lt;br /&gt;
		bean-name=&amp;quot;internalBrokerConFac&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Get a reference to the internal Message Buffer --&amp;gt;&lt;br /&gt;
	&amp;lt;osgi:reference id=&amp;quot;internalMB&amp;quot; interface=&amp;quot;javax.jms.Topic&amp;quot;&lt;br /&gt;
		bean-name=&amp;quot;internalDest&amp;quot; /&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- Create a message listener --&amp;gt;&lt;br /&gt;
	&amp;lt;bean id=&amp;quot;myMessageListener&amp;quot; class=&amp;quot;org.rifidi.edge.examplecode.JMSConsumer&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only tricky part is creating the message listener.  This is a class that implements the &amp;lt;tt&amp;gt;javax.jms.MessageListener&amp;lt;/tt&amp;gt; interface.  It has a method called &amp;lt;tt&amp;gt;onMessage()&amp;lt;/tt&amp;gt; in which you need to implement the custom logic that happens when a message is recieved.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @author Kyle Neumeier - kyle@pramari.com&lt;br /&gt;
 * &lt;br /&gt;
 */&lt;br /&gt;
public class JMSConsumer implements MessageListener {&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * (non-Javadoc)&lt;br /&gt;
	 * &lt;br /&gt;
	 * @see javax.jms.MessageListener#onMessage(javax.jms.Message)&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	public void onMessage(Message arg0) {&lt;br /&gt;
		System.out.println(&amp;quot;Got message!&amp;quot;);&lt;br /&gt;
		//process arg0 here!!!&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Future Work==&lt;br /&gt;
There are still a few open questions about whether or not we are using JMS and spring correctly or not:&lt;br /&gt;
* From the debug output observed it appears a new connection, reciever, and session are being created every time a new message is received.  This makes me believe that &amp;lt;tt&amp;gt;org.springframework.jms.listener.SimpleMessageListenerContainer&amp;lt;/tt&amp;gt; might be too simplistic and may need to be wrapped in a pool of some sort.&lt;br /&gt;
* Not sure if psersistance is really being disable.&lt;br /&gt;
* Right now the IP address of the external broker is hardcoded as localhost:1099.  It appears however, that I can still connect to it even from a different machine.  We need to figure out if this is ok.  Also, we need a way to specify the port from the vm arguments passed in when the edge server first starts up.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
A few links that I found useful when reading up on JMS &amp;amp; spring:&lt;br /&gt;
&lt;br /&gt;
* http://www.nabble.com/In-VM-broker-td1813663.html#a1813663&lt;br /&gt;
* http://www.nabble.com/embedded-broker-and-in-VM-protocol-td4637423.html#a4637423&lt;br /&gt;
* http://forum.springsource.org/showthread.php?t=62958&lt;br /&gt;
* http://activemq.apache.org/vm-transport-reference.html&lt;br /&gt;
* http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html&lt;br /&gt;
* http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html&lt;br /&gt;
* http://www.nabble.com/JMS-pooling...-pool-package-in-activeMQ-td21811493.html&lt;br /&gt;
* http://activemq.apache.org/vm-transport-reference.html&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Development_and_Release_Process</id>
		<title>Development and Release Process</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Development_and_Release_Process"/>
				<updated>2009-01-08T12:40:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Setting up a development environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the development and release processes for the products in the Rifidi Suite as well as various conventions that developers should be following.  This document is intended for developers who are fairly familiar with the Rifidi code base, especially with eclipse and OSGi concepts.&lt;br /&gt;
=Goals=&lt;br /&gt;
# Standardize the development and release processes for Rifidi Developers&lt;br /&gt;
# Enable a relatively lightweight release process that is able to be extended later by a fully automatic build tool like maven&lt;br /&gt;
# Define a common set of conventions to use when checking in, checking out, and tagging code.&lt;br /&gt;
&lt;br /&gt;
This document is not intended to be a &amp;quot;how to&amp;quot; guide for eclipse, but rather to define some common operating procedures around how code is developed and released in the Rifidi project&lt;br /&gt;
&lt;br /&gt;
=Concepts=&lt;br /&gt;
==Target Platforms==&lt;br /&gt;
===About Target Platforms===&lt;br /&gt;
A target platform is the set of base plugins that your application depends on.  Normally when you build a project in eclipse that uses eclipse functionality (SWT, JFace, etc), eclipse gets that functionality from the plugins and features folder located in you eclipse installation.  Therefore it is using your eclipse base installation as your target platform.  However, it is possible to define your own target platform for the application you are building rather than relying on the default one.  Doing this is useful for several reasons&lt;br /&gt;
# It creates a separation between the plugins you use in your developing environment and the plugins used by your application.  This means that you can, for example, upgrade the eclipse you use as your IDE without upgrading the plugins used by your application.  Also, you can add plugins to your application without using them in your IDE.  For example suppose you want to use the GEF bundles in your application, but you don't want them inside your eclipse development environment.&lt;br /&gt;
# A closely related advantage is that you can limit the plugins that are available to your application.  If you use the base eclipse installation as your target platform, all of the plugins are available to your application.  This makes it easy for application developers to simply add dependencies as they like.  However, because an added dependency often means changes to other things, such as build processes, adding bundle dependencies should require some deliberation.  Having a target platform simply makes bundle dependencies more explicit.&lt;br /&gt;
# It is possible to place more than just eclipse base plugins in the custom target platform.  You can put bundles in there that you have built that are required for you application.  This means that you could put, for example, tagged, stable versions of all of the plugins in your application in your target platform.  Then when you need to modify a plugin, you can check out the source code from svn.  Because eclipse will look in your workspace before it looks in your target platform, it will find that plugin first.  This means developers only have to check out code for bundles that they want to modify, which forces him to think about the code that he wants to write.  It also means that, because the code in the target platform is tagged and stable, that if one developer checks in code with a change in it that breaks another plugin, that other developers can continue developing with the stable bundles in the target platform.&lt;br /&gt;
===Target Platforms in Rifidi===&lt;br /&gt;
Each major Rifidi project in the Rifidi suite should have its own target platform.  For example, there is a target platform called &amp;lt;code&amp;gt;org.rifidi.emulator.target&amp;lt;/code&amp;gt;.  There should be a directory in the target platform called &amp;lt;code&amp;gt;rifidi&amp;lt;/code&amp;gt; where all the bundle binaries that are required for that particular project. In addition there are various target platforms used for deploying products, such as &amp;lt;code&amp;gt;org.rifidi.rcp.target&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Bundle Versioning==&lt;br /&gt;
All bundles in OSGi have version numbers, with the following form 1.2.3, where 1 is the major version, 2 is the minor version, and 3 is the point version.  The Rifidi project uses the following conventions:&lt;br /&gt;
# The '''major''' version should be increased only if there is a major API change for the bundle.  A major version change usually involve a change that would break another plugin, for example, changing a method signature. A good rule of thumb is that if bundle X depends on bundle Y and bundle X was modified as a result of the changes to bundle Y, then bundle Y had a major API change.  For example, suppose bundle Y has a method called &amp;lt;code&amp;gt;foo()&amp;lt;/code&amp;gt;.  Suppose bundle X, for some reason, needs to pass in a string to &amp;lt;code&amp;gt;foo()&amp;lt;/code&amp;gt;.  So you modify &amp;lt;code&amp;gt;foo()&amp;lt;/code&amp;gt; to become &amp;lt;code&amp;gt;foo(String string)&amp;lt;/code&amp;gt;.  This was a major change in bundle Y.&lt;br /&gt;
# The '''minor''' version should be increased if there is a minor API change.  A minor API change is something that would not break existing compatibility with dependent bundles.  For example, adding a method signature to a class, or adding more functionality to the bundle in the form of classes is a minor API change.  The key difference between a minor and a major API change is that a minor API change will not cause other bundles that depend on it to break.&lt;br /&gt;
# The '''point''' version should be increased for small internal changes and bug fixes.  These changes do not involve the bundle's API.&lt;br /&gt;
&lt;br /&gt;
Note that it is not necessary to change the version numbers any time you submit.  It is only necessary to modify the version numbers if the changes are relatively well tested and stable.  For example, you might want to make some changes then submit the changes back to the trunk for another developer to look at, test, or modify. ''If you don't expect to make any further changes to the code, then you should modify then version number''&lt;br /&gt;
&lt;br /&gt;
==Dependencies==&lt;br /&gt;
In OSGi there are two ways of specifying dependencies.  &lt;br /&gt;
#'''Requre-Bundle''' should be used for dependencies to bundles that contain code which is written for the Rifidi project. Usually, this is anything that begins with &amp;lt;code&amp;gt;org.rifidi.*&amp;lt;/code&amp;gt;.&lt;br /&gt;
#'''Import-Package''' should be used for for dependencies to bundles that do not contain code that is maintained by the Rifidi project, for example, to third party libraries such as log4j, cajo, or eclipse base plugins such as SWT or GEF.  It is also possible to find certain third party libraries that have already been made into a plugin at the eclipse [http://www.eclipse.org/orbit/overview.php eclipse orbit project].  &lt;br /&gt;
&lt;br /&gt;
The advantage to using Import-Package over Require-Bundle is that Import-Package is more flexible.  The plugin is more flexible because it could use any loaded OSGi bundle that exposes that particular plugin with the given version constraints.  In addition, because importing packages is more granular than requiring bundles, it makes the developer think a little more about the dependencies his is using.&lt;br /&gt;
&lt;br /&gt;
In both Require-Bundle and Import-Package dependencies, the minimum version ''must'' be specified.  It is also recommended that the maximum version be specified as well.  This is because it is possible for more than one bundle with the same name but different versions to be loaded by OSGi during runtime.  So if an incorrect version of a bundle is already loaded, but the bundle that requires that bundle does not specify the version it needs, bad things might happen.  &lt;br /&gt;
&lt;br /&gt;
A good way to specify versions is to have the minimum version be inclusive and the maximum version be exclusive.  For example, if the minimum version is set to 2.2.0 inclusive and the maximum version is 2.3.0 exclusive, then any version starting with 2.2 is acceptable.  This makes sense, because we have adopted a versioning scheme where the minor version number signifies a minor API change.&lt;br /&gt;
&lt;br /&gt;
==SVN Structure==&lt;br /&gt;
There are four repositories used in Rifidi:&lt;br /&gt;
* &amp;lt;code&amp;gt;rep-external&amp;lt;/code&amp;gt; - main repository for Rifidi development&lt;br /&gt;
* &amp;lt;code&amp;gt;rep-internal&amp;lt;/code&amp;gt; - repository to hold code that is necessary, but that should not be released&lt;br /&gt;
* &amp;lt;code&amp;gt;rep-edge&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sandbox&amp;lt;/code&amp;gt; - repository to hold projects for playing around with&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code&amp;gt;rep-external&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rep-edge&amp;lt;/code&amp;gt; are the main repositories for Rifidi development. They have the following structure:&lt;br /&gt;
&lt;br /&gt;
*'''org.rifidi.binary'''&lt;br /&gt;
*: A project containing all the bundles as binaries for rifidi.  It is used so that you don't have to check out the code when developing or releasing&lt;br /&gt;
* '''readme''' &lt;br /&gt;
*:a project that contains a text file that describes what all the bundles in trunk are used for&lt;br /&gt;
* '''rifidi'''&lt;br /&gt;
*: The code for the Rifidi project&lt;br /&gt;
** '''branches'''&lt;br /&gt;
*: If a developer want to add a major feature that requires alot of time, and he wants to check the code into the svn before he is ready to integrate the code back into the trunk, he can check the code into the branches directory&lt;br /&gt;
** '''tags'''&lt;br /&gt;
**: When a stable version of a bundle is reached, the code should be placed in a sub directory that has the name of the bundle's version.  See [[Development and Release Process#Tags| Tags]] for a description of when to create a new tag&lt;br /&gt;
*** '''org.rifidi.bundle.a'''&lt;br /&gt;
**** 1.0.0 - contains eclipse project&lt;br /&gt;
**** 1.1.0 - contains eclipse project&lt;br /&gt;
**** 2.0.0 - contains eclipse project&lt;br /&gt;
*** '''org.rifidi.bundle.b'''&lt;br /&gt;
**** 1.0.0 - contains eclipse project&lt;br /&gt;
** '''trunk'''&lt;br /&gt;
**: The trunk contains the latest code for each bundle.  It might be unstable.  All changes to code should be made to the bundles located in the trunk&lt;br /&gt;
*** org.rifidi.bundle.a - contains eclipse project&lt;br /&gt;
*** org.rifidi.bundle.b - contains eclipse project&lt;br /&gt;
&lt;br /&gt;
==Tags==&lt;br /&gt;
The purpose of tagging a bundle is to save the code at a stable point so that future changes can be reversed if they introduce a bug that older versions did not have.  A new tag ''must'' be created in svn when either the major or the minor version number of the plugin is incremented.  It is not required to create a new tag when the point version number is incremented, but it is ok to do so.&lt;br /&gt;
&lt;br /&gt;
==Product File==&lt;br /&gt;
A product file defines the required plugins for a particular project.  It is used to build the project.  It is important to keep this file updated as new plugins are added or old ones are removed.&lt;br /&gt;
&lt;br /&gt;
=Processes=&lt;br /&gt;
This section defines a few procedures that should be followed when developing code for the Rifidi project&lt;br /&gt;
==Setting up a development environment==&lt;br /&gt;
# Download the target platform for the project you are working with.  For example, if you are developing a plugin for emulator, you would download the target platform for emulator&lt;br /&gt;
# Download &amp;lt;code&amp;gt;org.rifidi.binary&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download any bundles that you need to modify.  For example, if you are making changes to the alien reader, download &amp;lt;code&amp;gt;org.rifidi.emulator.reader.alien&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the target platform as the target platform for the workspace&lt;br /&gt;
# Clean the workspace&lt;br /&gt;
&lt;br /&gt;
==Modifying an Existing Bundle==&lt;br /&gt;
Suppose you have modified an existing bundle and the changes are relatively stable and tested, and you are ready to integrate them back in with the rest of the project.&lt;br /&gt;
&lt;br /&gt;
# If the changes you have made require a version change make sure that is done&lt;br /&gt;
# If you had to change the major or the minor version number, create a new svn tag for the plugin.&lt;br /&gt;
# Export the bundle as a binary bundle using the export wizard on the Manifest.MF file for the plugin&lt;br /&gt;
# Add the bundle to &amp;lt;code&amp;gt;org.rifidi.binary&amp;lt;/code&amp;gt;&lt;br /&gt;
# Submit bundle changes and target platform changes back to trunk.&lt;br /&gt;
&lt;br /&gt;
If you have made changes to a bundle but are not ready to integrate them back with the rest of the project, you can do one of two things:&lt;br /&gt;
# Submit them back to the trunk, but don't change the version numbers.  This is ok to do because everyone else should be using tagged stable bundles in the target platform.&lt;br /&gt;
# Create a folder in the branches directory and put it there.  Only do this if multiple developers are modifying the same plugin at the same time.&lt;br /&gt;
&lt;br /&gt;
==Creating a new Bundle==&lt;br /&gt;
To create a new bundle called &amp;lt;code&amp;gt;org.rifidi.xyz&amp;lt;/code&amp;gt;:&lt;br /&gt;
# Create a new plugin project with the name &amp;lt;code&amp;gt;org.rifidi.xyz&amp;lt;/code&amp;gt;&lt;br /&gt;
# In the Manifest.MF file&lt;br /&gt;
## Add 'Pramari, LLC' as the provider&lt;br /&gt;
## Give the bundle a name such as 'Rifidi xyz'.  It is important that the first word is 'Rifidi' so that all bundles created as a part of the Rifidi project are easy to locate when there are alot of bundles installed as part of an eclipse installation.&lt;br /&gt;
# Write the code for the plugin&lt;br /&gt;
# Follow the steps for [[Development and Release Process#Modifying and Existing Bundle| Modifying and Existing Bundle]]&lt;br /&gt;
# If you tagged the bundle and added it to the target platform, then make sure you add the new bundle and its dependencies to the product file&lt;br /&gt;
# Add an entry to the readme project at the top level of the svn&lt;br /&gt;
&lt;br /&gt;
==Releasing a Product==&lt;br /&gt;
# Download the rifidi build target platform and set it as the target platform for your workspace&lt;br /&gt;
# Download the project that contains the product file for the project you are trying to build&lt;br /&gt;
# Export the project using the export wizard&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Development_and_Release_Process</id>
		<title>Development and Release Process</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Development_and_Release_Process"/>
				<updated>2009-01-08T12:40:18Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* SVN Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the development and release processes for the products in the Rifidi Suite as well as various conventions that developers should be following.  This document is intended for developers who are fairly familiar with the Rifidi code base, especially with eclipse and OSGi concepts.&lt;br /&gt;
=Goals=&lt;br /&gt;
# Standardize the development and release processes for Rifidi Developers&lt;br /&gt;
# Enable a relatively lightweight release process that is able to be extended later by a fully automatic build tool like maven&lt;br /&gt;
# Define a common set of conventions to use when checking in, checking out, and tagging code.&lt;br /&gt;
&lt;br /&gt;
This document is not intended to be a &amp;quot;how to&amp;quot; guide for eclipse, but rather to define some common operating procedures around how code is developed and released in the Rifidi project&lt;br /&gt;
&lt;br /&gt;
=Concepts=&lt;br /&gt;
==Target Platforms==&lt;br /&gt;
===About Target Platforms===&lt;br /&gt;
A target platform is the set of base plugins that your application depends on.  Normally when you build a project in eclipse that uses eclipse functionality (SWT, JFace, etc), eclipse gets that functionality from the plugins and features folder located in you eclipse installation.  Therefore it is using your eclipse base installation as your target platform.  However, it is possible to define your own target platform for the application you are building rather than relying on the default one.  Doing this is useful for several reasons&lt;br /&gt;
# It creates a separation between the plugins you use in your developing environment and the plugins used by your application.  This means that you can, for example, upgrade the eclipse you use as your IDE without upgrading the plugins used by your application.  Also, you can add plugins to your application without using them in your IDE.  For example suppose you want to use the GEF bundles in your application, but you don't want them inside your eclipse development environment.&lt;br /&gt;
# A closely related advantage is that you can limit the plugins that are available to your application.  If you use the base eclipse installation as your target platform, all of the plugins are available to your application.  This makes it easy for application developers to simply add dependencies as they like.  However, because an added dependency often means changes to other things, such as build processes, adding bundle dependencies should require some deliberation.  Having a target platform simply makes bundle dependencies more explicit.&lt;br /&gt;
# It is possible to place more than just eclipse base plugins in the custom target platform.  You can put bundles in there that you have built that are required for you application.  This means that you could put, for example, tagged, stable versions of all of the plugins in your application in your target platform.  Then when you need to modify a plugin, you can check out the source code from svn.  Because eclipse will look in your workspace before it looks in your target platform, it will find that plugin first.  This means developers only have to check out code for bundles that they want to modify, which forces him to think about the code that he wants to write.  It also means that, because the code in the target platform is tagged and stable, that if one developer checks in code with a change in it that breaks another plugin, that other developers can continue developing with the stable bundles in the target platform.&lt;br /&gt;
===Target Platforms in Rifidi===&lt;br /&gt;
Each major Rifidi project in the Rifidi suite should have its own target platform.  For example, there is a target platform called &amp;lt;code&amp;gt;org.rifidi.emulator.target&amp;lt;/code&amp;gt;.  There should be a directory in the target platform called &amp;lt;code&amp;gt;rifidi&amp;lt;/code&amp;gt; where all the bundle binaries that are required for that particular project. In addition there are various target platforms used for deploying products, such as &amp;lt;code&amp;gt;org.rifidi.rcp.target&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Bundle Versioning==&lt;br /&gt;
All bundles in OSGi have version numbers, with the following form 1.2.3, where 1 is the major version, 2 is the minor version, and 3 is the point version.  The Rifidi project uses the following conventions:&lt;br /&gt;
# The '''major''' version should be increased only if there is a major API change for the bundle.  A major version change usually involve a change that would break another plugin, for example, changing a method signature. A good rule of thumb is that if bundle X depends on bundle Y and bundle X was modified as a result of the changes to bundle Y, then bundle Y had a major API change.  For example, suppose bundle Y has a method called &amp;lt;code&amp;gt;foo()&amp;lt;/code&amp;gt;.  Suppose bundle X, for some reason, needs to pass in a string to &amp;lt;code&amp;gt;foo()&amp;lt;/code&amp;gt;.  So you modify &amp;lt;code&amp;gt;foo()&amp;lt;/code&amp;gt; to become &amp;lt;code&amp;gt;foo(String string)&amp;lt;/code&amp;gt;.  This was a major change in bundle Y.&lt;br /&gt;
# The '''minor''' version should be increased if there is a minor API change.  A minor API change is something that would not break existing compatibility with dependent bundles.  For example, adding a method signature to a class, or adding more functionality to the bundle in the form of classes is a minor API change.  The key difference between a minor and a major API change is that a minor API change will not cause other bundles that depend on it to break.&lt;br /&gt;
# The '''point''' version should be increased for small internal changes and bug fixes.  These changes do not involve the bundle's API.&lt;br /&gt;
&lt;br /&gt;
Note that it is not necessary to change the version numbers any time you submit.  It is only necessary to modify the version numbers if the changes are relatively well tested and stable.  For example, you might want to make some changes then submit the changes back to the trunk for another developer to look at, test, or modify. ''If you don't expect to make any further changes to the code, then you should modify then version number''&lt;br /&gt;
&lt;br /&gt;
==Dependencies==&lt;br /&gt;
In OSGi there are two ways of specifying dependencies.  &lt;br /&gt;
#'''Requre-Bundle''' should be used for dependencies to bundles that contain code which is written for the Rifidi project. Usually, this is anything that begins with &amp;lt;code&amp;gt;org.rifidi.*&amp;lt;/code&amp;gt;.&lt;br /&gt;
#'''Import-Package''' should be used for for dependencies to bundles that do not contain code that is maintained by the Rifidi project, for example, to third party libraries such as log4j, cajo, or eclipse base plugins such as SWT or GEF.  It is also possible to find certain third party libraries that have already been made into a plugin at the eclipse [http://www.eclipse.org/orbit/overview.php eclipse orbit project].  &lt;br /&gt;
&lt;br /&gt;
The advantage to using Import-Package over Require-Bundle is that Import-Package is more flexible.  The plugin is more flexible because it could use any loaded OSGi bundle that exposes that particular plugin with the given version constraints.  In addition, because importing packages is more granular than requiring bundles, it makes the developer think a little more about the dependencies his is using.&lt;br /&gt;
&lt;br /&gt;
In both Require-Bundle and Import-Package dependencies, the minimum version ''must'' be specified.  It is also recommended that the maximum version be specified as well.  This is because it is possible for more than one bundle with the same name but different versions to be loaded by OSGi during runtime.  So if an incorrect version of a bundle is already loaded, but the bundle that requires that bundle does not specify the version it needs, bad things might happen.  &lt;br /&gt;
&lt;br /&gt;
A good way to specify versions is to have the minimum version be inclusive and the maximum version be exclusive.  For example, if the minimum version is set to 2.2.0 inclusive and the maximum version is 2.3.0 exclusive, then any version starting with 2.2 is acceptable.  This makes sense, because we have adopted a versioning scheme where the minor version number signifies a minor API change.&lt;br /&gt;
&lt;br /&gt;
==SVN Structure==&lt;br /&gt;
There are four repositories used in Rifidi:&lt;br /&gt;
* &amp;lt;code&amp;gt;rep-external&amp;lt;/code&amp;gt; - main repository for Rifidi development&lt;br /&gt;
* &amp;lt;code&amp;gt;rep-internal&amp;lt;/code&amp;gt; - repository to hold code that is necessary, but that should not be released&lt;br /&gt;
* &amp;lt;code&amp;gt;rep-edge&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sandbox&amp;lt;/code&amp;gt; - repository to hold projects for playing around with&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code&amp;gt;rep-external&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rep-edge&amp;lt;/code&amp;gt; are the main repositories for Rifidi development. They have the following structure:&lt;br /&gt;
&lt;br /&gt;
*'''org.rifidi.binary'''&lt;br /&gt;
*: A project containing all the bundles as binaries for rifidi.  It is used so that you don't have to check out the code when developing or releasing&lt;br /&gt;
* '''readme''' &lt;br /&gt;
*:a project that contains a text file that describes what all the bundles in trunk are used for&lt;br /&gt;
* '''rifidi'''&lt;br /&gt;
*: The code for the Rifidi project&lt;br /&gt;
** '''branches'''&lt;br /&gt;
*: If a developer want to add a major feature that requires alot of time, and he wants to check the code into the svn before he is ready to integrate the code back into the trunk, he can check the code into the branches directory&lt;br /&gt;
** '''tags'''&lt;br /&gt;
**: When a stable version of a bundle is reached, the code should be placed in a sub directory that has the name of the bundle's version.  See [[Development and Release Process#Tags| Tags]] for a description of when to create a new tag&lt;br /&gt;
*** '''org.rifidi.bundle.a'''&lt;br /&gt;
**** 1.0.0 - contains eclipse project&lt;br /&gt;
**** 1.1.0 - contains eclipse project&lt;br /&gt;
**** 2.0.0 - contains eclipse project&lt;br /&gt;
*** '''org.rifidi.bundle.b'''&lt;br /&gt;
**** 1.0.0 - contains eclipse project&lt;br /&gt;
** '''trunk'''&lt;br /&gt;
**: The trunk contains the latest code for each bundle.  It might be unstable.  All changes to code should be made to the bundles located in the trunk&lt;br /&gt;
*** org.rifidi.bundle.a - contains eclipse project&lt;br /&gt;
*** org.rifidi.bundle.b - contains eclipse project&lt;br /&gt;
&lt;br /&gt;
==Tags==&lt;br /&gt;
The purpose of tagging a bundle is to save the code at a stable point so that future changes can be reversed if they introduce a bug that older versions did not have.  A new tag ''must'' be created in svn when either the major or the minor version number of the plugin is incremented.  It is not required to create a new tag when the point version number is incremented, but it is ok to do so.&lt;br /&gt;
&lt;br /&gt;
==Product File==&lt;br /&gt;
A product file defines the required plugins for a particular project.  It is used to build the project.  It is important to keep this file updated as new plugins are added or old ones are removed.&lt;br /&gt;
&lt;br /&gt;
=Processes=&lt;br /&gt;
This section defines a few procedures that should be followed when developing code for the Rifidi project&lt;br /&gt;
==Setting up a development environment==&lt;br /&gt;
# Download the target platform for the project you are working with.  For example, if you are developing a plugin for emulator, you would download the target platform for emulator&lt;br /&gt;
# Download &amp;lt;code&amp;gt;org.rifidi.binary&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download any bundles that you need to modify.  For example, if you are making changes to the alien reader, download &amp;lt;code&amp;gt;org.rifidi.emulator.reader.alien&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the target platform as the target platform work the workspace&lt;br /&gt;
# Clean the workspace&lt;br /&gt;
&lt;br /&gt;
==Modifying an Existing Bundle==&lt;br /&gt;
Suppose you have modified an existing bundle and the changes are relatively stable and tested, and you are ready to integrate them back in with the rest of the project.&lt;br /&gt;
&lt;br /&gt;
# If the changes you have made require a version change make sure that is done&lt;br /&gt;
# If you had to change the major or the minor version number, create a new svn tag for the plugin.&lt;br /&gt;
# Export the bundle as a binary bundle using the export wizard on the Manifest.MF file for the plugin&lt;br /&gt;
# Add the bundle to &amp;lt;code&amp;gt;org.rifidi.binary&amp;lt;/code&amp;gt;&lt;br /&gt;
# Submit bundle changes and target platform changes back to trunk.&lt;br /&gt;
&lt;br /&gt;
If you have made changes to a bundle but are not ready to integrate them back with the rest of the project, you can do one of two things:&lt;br /&gt;
# Submit them back to the trunk, but don't change the version numbers.  This is ok to do because everyone else should be using tagged stable bundles in the target platform.&lt;br /&gt;
# Create a folder in the branches directory and put it there.  Only do this if multiple developers are modifying the same plugin at the same time.&lt;br /&gt;
&lt;br /&gt;
==Creating a new Bundle==&lt;br /&gt;
To create a new bundle called &amp;lt;code&amp;gt;org.rifidi.xyz&amp;lt;/code&amp;gt;:&lt;br /&gt;
# Create a new plugin project with the name &amp;lt;code&amp;gt;org.rifidi.xyz&amp;lt;/code&amp;gt;&lt;br /&gt;
# In the Manifest.MF file&lt;br /&gt;
## Add 'Pramari, LLC' as the provider&lt;br /&gt;
## Give the bundle a name such as 'Rifidi xyz'.  It is important that the first word is 'Rifidi' so that all bundles created as a part of the Rifidi project are easy to locate when there are alot of bundles installed as part of an eclipse installation.&lt;br /&gt;
# Write the code for the plugin&lt;br /&gt;
# Follow the steps for [[Development and Release Process#Modifying and Existing Bundle| Modifying and Existing Bundle]]&lt;br /&gt;
# If you tagged the bundle and added it to the target platform, then make sure you add the new bundle and its dependencies to the product file&lt;br /&gt;
# Add an entry to the readme project at the top level of the svn&lt;br /&gt;
&lt;br /&gt;
==Releasing a Product==&lt;br /&gt;
# Download the rifidi build target platform and set it as the target platform for your workspace&lt;br /&gt;
# Download the project that contains the product file for the project you are trying to build&lt;br /&gt;
# Export the project using the export wizard&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Reader_Guides</id>
		<title>Reader Guides</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Reader_Guides"/>
				<updated>2008-12-21T17:42:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Virtual RFID Reader User's guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Virtual RFID Reader User's guides=&lt;br /&gt;
The following pages contain information about how to use and develop with specific virtual readers.&lt;br /&gt;
*[[LLRP_Reader |LLRP Reader]] &lt;br /&gt;
*[[Alien 9800]]&lt;br /&gt;
*[[Alien_Beginners_Guide |Alien Beginner's Guide]]&lt;br /&gt;
*[[Symbol XR440]]&lt;br /&gt;
*[[Awid MPR ]]&lt;br /&gt;
*[[EPC Reader| EPC V1.1 ]]&lt;br /&gt;
*[[ThingMagic]]&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Repo_choice.png</id>
		<title>File:Repo choice.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Repo_choice.png"/>
				<updated>2008-07-10T09:15:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: uploaded a new version of &amp;quot;Image:Repo choice.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Designer_User%27s_Guide</id>
		<title>Designer User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Designer_User%27s_Guide"/>
				<updated>2008-06-19T08:17:34Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: Undo revision 1752 by Tobias (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:userDoc]]&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
*Microsoft Windows 2000/XP/2003 or Linux (Ubuntu, Red Hat, SuSe)&lt;br /&gt;
*Sun Java Runtime Environment &amp;gt; 1.6.4 (J2SE 6.0)&lt;br /&gt;
*'''IMPORTANT:''' does not work with earlier JRE versions.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Designer is packaged in a standard installer, which makes installation very easy.&lt;br /&gt;
&lt;br /&gt;
# Download the latest version of Rifidi Emulator from http://sourceforge.net/projects/rifidi/&lt;br /&gt;
# Double click to run the install.  Follow the on screen instructions.&lt;br /&gt;
&lt;br /&gt;
=Launching Rifidi Designer=&lt;br /&gt;
&lt;br /&gt;
*Windows Users: Simply click the shortcut located in the Rifidi folder in the Start Menu/Programs folder.&lt;br /&gt;
*Linux Users: Double click the executable file located in the installation directory.&lt;br /&gt;
&lt;br /&gt;
=Getting Started - Example Designer Simulation=&lt;br /&gt;
==Create Layout==&lt;br /&gt;
#Once the program is loaded, the main UI will be present.  [[Image:Screen1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#To create a new layout, click the 'file' and 'new'.  &lt;br /&gt;
#Enter in a layout name, select size of the room (64x64 or 256x256 square feet) and click 'Finish'.[[Image:Screen2.png |none|thumb|400px|Create New Layout]]  &lt;br /&gt;
#A new empty layout will be displayed in the UI ready for use [[Image:Screen3.png |none|thumb|800px|New Layout]]&lt;br /&gt;
&lt;br /&gt;
==Add a Conveyor==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.[[Image:Screen4.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list. [[Image:Screen5.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#Highlight the 'Conveyor' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the new component will show up in the &amp;quot;properties&amp;quot; tab at the bottom.  You can change these values if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Push Arm==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Push Arm' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the push-arm are given in the bottom tab marked &amp;quot;properties&amp;quot;.  You can edit them if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
#Right-click it and select Turn On to activate it&lt;br /&gt;
''Note: See the push-arm section for instructions on how to get a push-arm working''&lt;br /&gt;
&lt;br /&gt;
==Add a Gate==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Gate' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#Enter a name for the component, select a reader type and click 'Next'. &lt;br /&gt;
#Enter a name for the reader and click 'Finish'.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Box Producer==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight one of the 'Producer' components (choose based on the type of tag you wish to produce from this producer) and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the pusharm are given in the bottom tab marked &amp;quot;properties&amp;quot;. You can edit them if you wish.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Component Placement==&lt;br /&gt;
===Conveyor Placement===&lt;br /&gt;
#In the Layout Designer View, click on the conveyor. ''Note: Yellow arrows will show the direction of the conveyor''&lt;br /&gt;
#Move the conveyor to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Release the left mouse button once the desired location has been reached.&lt;br /&gt;
#If placement is valid the component will move to the new location and if placement is invalid the component will move to the prior valid location&lt;br /&gt;
&lt;br /&gt;
===Box Producer Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Box Producer. &lt;br /&gt;
#Move the producer to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the producer is over the end of the conveyor, release the left mouse button to finish placement.&lt;br /&gt;
&lt;br /&gt;
===Push Arm Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Push Arm. &lt;br /&gt;
#Move the push arm to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the push arm is next to the right end of the conveyor, release the left mouse button.&lt;br /&gt;
#To finalize the placement, verify the push arm is pointed in the direction to push over the conveyor (Look for shaded area to be over conveyor). If not then you can rotate the component by 90 degrees by clicking on the component and then clicking on the rotate 90 degrees button in the toolbar. &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
===Gate Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Gate. &lt;br /&gt;
#Verify the space between the gate's legs can fit over the conveyor based on the conveyor's placement. If not then click on the gate and rotate 90 degrees by clicking on the 90 degree rotate button in the toolbar.&lt;br /&gt;
#Move the gate to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Once the gate is over the center of the conveyor, release the left mouse button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Arm Instructions==&lt;br /&gt;
===Placing===&lt;br /&gt;
Place a push arm, and place a gate with an Alien reader near the push arm.  Be sure to select the &amp;quot;Enable GPI/O for this reader in the New Reader Wizard.  It should look something like this:&lt;br /&gt;
[[Image:push1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
===GPIO===&lt;br /&gt;
The push arm works by an Alien or LLRP (or any other reader that supports GPIO) reader sending a GPIO signal to the push arm.  To connect up the GPIO, we first have to go to the GPIO perspective.  Click on Perspectives -&amp;gt; GPIO.  You should get a window that looks something like this:&lt;br /&gt;
[[Image:push2.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
# Expand the Palette if it isn't already open by pressing the arrow on the right.  &lt;br /&gt;
# Select the &amp;quot;Solid Connection&amp;quot; button in the palette and drag an arrow it from the Alien reader on top (in blue) to the push arm you want to move (in red).  You can also just click on the alien and click on the push arm, and an arrow will be shown connecting the two.  &lt;br /&gt;
#Don't forget to turn on the push arm and the gate. Other wise nothing will happen.&lt;br /&gt;
After that, the push arm should fire when you want it to.&lt;br /&gt;
&lt;br /&gt;
==Create a Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Right click on Grouped Components&lt;br /&gt;
#In the right click menu, click on create group&lt;br /&gt;
#In the create group wizard, enter in a group name (example: group1)&lt;br /&gt;
#You will now see the new group listed under Grouped Components&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Ungrouped Components to expand the ungrouped components list if not expanded already.&lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#In the Ungrouped Components list, click on the conveyor component (Example: conveyor1).&lt;br /&gt;
#Hold the left mouse button down on the conveyor component and drag and drop into the Group (Example: group1)&lt;br /&gt;
#Repeat steps 2 - 4 for each or the remaining ungrouped components&lt;br /&gt;
#Once all the steps have been completed, you will now have all the components assigned to a group. (Example: group1) Now you can move the components around in a group in the Layout Designer instead of having to move each component seperately. There are other benefits of groups which will be described in later sections.&lt;br /&gt;
&lt;br /&gt;
==Turn On Components==&lt;br /&gt;
There are two ways to turn on components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on turn On&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn On&lt;br /&gt;
#This will Turn On all the components assigned to tha group&lt;br /&gt;
&lt;br /&gt;
You can now connect to the virtual reader (Alien, AWID, Symbol, LLRP) you created with a client such as telnet, client library, middleware or EdgeServer.&lt;br /&gt;
&lt;br /&gt;
==Start Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the play button to start the simulation&lt;br /&gt;
#Once you start the simultaion you should now see boxes being produced and the conveyor and push arm moving at their defined rates.&lt;br /&gt;
#The client connected to the virtual reader should now report tags as the boxes pass through the gate's antenna.&lt;br /&gt;
&lt;br /&gt;
==Pause Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the Pause button to start the simultaion&lt;br /&gt;
#Once you pause the simultaion you should now see boxes being produced and the conveyor and push arm moving pause, left in the previous state.&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Reset Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the reset button to start the simultaion&lt;br /&gt;
#Once you reset the simultaion you should now see boxes being produced, the conveyor and push arm moving be reset&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Turn Off Components==&lt;br /&gt;
There are two ways to Turn Off components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on Turn Off&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn Off&lt;br /&gt;
#This will Turn Off all the components assigned to the group&lt;br /&gt;
&lt;br /&gt;
The client should now disconnect from the virtual reader as if the device has been powered off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the conveyor component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the conveyor component's property view.&lt;br /&gt;
#Click on the speed property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new speed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Edit Box Producer Rate===&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the box producer component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the box producer component's property view.&lt;br /&gt;
#Click on the rate property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new rate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Layout Navigation=&lt;br /&gt;
* The layout navigation is a tab on the left side of the Designer screen.  It contains 3 collapsible lists of components:&lt;br /&gt;
# Grouped Components&lt;br /&gt;
# Ungrouped Components&lt;br /&gt;
# Generated Components&lt;br /&gt;
==Ungrouped Components==&lt;br /&gt;
* This is where all the ungrouped components are listed.  Click on the plus sign to see them.  &lt;br /&gt;
* You can also turn off and turn on all of the grouped components at the same time.  To do this, right click on the &amp;quot;ungrouped components&amp;quot; and select &amp;quot;turn off&amp;quot; or &amp;quot;turn on&amp;quot;.  &lt;br /&gt;
[[Image:Screen6.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Grouped Components==&lt;br /&gt;
* This is where all of the grouped components are listed.  Click on the plus sign to see all of the groups, and click on the plus sign on individual groups to list the components in those groups.  &lt;br /&gt;
* You can turn on and turn off everything in a group by right clicking on the group and clicking &amp;quot;turn on&amp;quot; or &amp;quot;turn off&amp;quot;.  &lt;br /&gt;
[[Image:Screen7.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Generated Components==&lt;br /&gt;
* This is where you can find all of the components generated by a producer.&lt;br /&gt;
* You can delete these components by right clicking on them and selecting &amp;quot;Delete Entity&amp;quot;.&lt;br /&gt;
[[Image:Screen8.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
&lt;br /&gt;
=MiniMap=&lt;br /&gt;
The MiniMap is on the lower left of the Designer screen.  If you don't see it, click on views -&amp;gt; Show MiniMap.  &lt;br /&gt;
[[Image:Screen9.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Navigation==&lt;br /&gt;
* You can navigate around the MiniMap by clicking and dragging the red box where you want to go.  This will cause the overhead camera to shift where you drag it to.  &lt;br /&gt;
* You can also simply click on the map where you want the camera to be.&lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
* You can zoom in and zoom out by clicking on the MiniMap and moving the mouse wheel backwards and forwards.&lt;br /&gt;
&lt;br /&gt;
=Camera=&lt;br /&gt;
The camera is set at a fixed angle, but it can be zoomed in and zoomed out, and it can also be moved on the MiniMap.  &lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
*  You can zoom in and zoom out by clicking on the main view screen and moving the mouse wheel backwards and forwards.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Designer_User%27s_Guide</id>
		<title>Designer User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Designer_User%27s_Guide"/>
				<updated>2008-06-19T08:16:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Zoom in/Zoom out */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:userDoc]]&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
*Microsoft Windows 2000/XP/2003 or Linux (Ubuntu, Red Hat, SuSe)&lt;br /&gt;
*Sun Java Runtime Environment &amp;gt; 1.6.4 (J2SE 6.0)&lt;br /&gt;
*'''IMPORTANT:''' does not work with earlier JRE versions.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Designer is packaged in a standard installer, which makes installation very easy.&lt;br /&gt;
&lt;br /&gt;
# Download the latest version of Rifidi Emulator from http://sourceforge.net/projects/rifidi/&lt;br /&gt;
# Double click to run the install.  Follow the on screen instructions.&lt;br /&gt;
&lt;br /&gt;
=Launching Rifidi Designer=&lt;br /&gt;
&lt;br /&gt;
*Windows Users: Simply click the shortcut located in the Rifidi folder in the Start Menu/Programs folder.&lt;br /&gt;
*Linux Users: Double click the executable file located in the installation directory.&lt;br /&gt;
&lt;br /&gt;
=Getting Started - Example Designer Simulation=&lt;br /&gt;
==Create Layout==&lt;br /&gt;
#Once the program is loaded, the main UI will be present.  [[Image:Screen1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#To create a new layout, click the 'file' and 'new'.  &lt;br /&gt;
#Enter in a layout name, select size of the room (64x64 or 256x256 square feet) and click 'Finish'.[[Image:Screen2.png |none|thumb|400px|Create New Layout]]  &lt;br /&gt;
#A new empty layout will be displayed in the UI ready for use [[Image:Screen3.png |none|thumb|800px|New Layout]]&lt;br /&gt;
&lt;br /&gt;
==Add a Conveyor==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.[[Image:Screen4.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list. [[Image:Screen5.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#Highlight the 'Conveyor' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the new component will show up in the &amp;quot;properties&amp;quot; tab at the bottom.  You can change these values if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Push Arm==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Push Arm' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the push-arm are given in the bottom tab marked &amp;quot;properties&amp;quot;.  You can edit them if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
#Right-click it and select Turn On to activate it&lt;br /&gt;
''Note: See the push-arm section for instructions on how to get a push-arm working''&lt;br /&gt;
&lt;br /&gt;
==Add a Gate==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Gate' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#Enter a name for the component, select a reader type and click 'Next'. &lt;br /&gt;
#Enter a name for the reader and click 'Finish'.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Box Producer==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight one of the 'Producer' components (choose based on the type of tag you wish to produce from this producer) and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the pusharm are given in the bottom tab marked &amp;quot;properties&amp;quot;. You can edit them if you wish.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Component Placement==&lt;br /&gt;
===Conveyor Placement===&lt;br /&gt;
#In the Layout Designer View, click on the conveyor. ''Note: Yellow arrows will show the direction of the conveyor''&lt;br /&gt;
#Move the conveyor to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Release the left mouse button once the desired location has been reached.&lt;br /&gt;
#If placement is valid the component will move to the new location and if placement is invalid the component will move to the prior valid location&lt;br /&gt;
&lt;br /&gt;
===Box Producer Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Box Producer. &lt;br /&gt;
#Move the producer to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the producer is over the end of the conveyor, release the left mouse button to finish placement.&lt;br /&gt;
&lt;br /&gt;
===Push Arm Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Push Arm. &lt;br /&gt;
#Move the push arm to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the push arm is next to the right end of the conveyor, release the left mouse button.&lt;br /&gt;
#To finalize the placement, verify the push arm is pointed in the direction to push over the conveyor (Look for shaded area to be over conveyor). If not then you can rotate the component by 90 degrees by clicking on the component and then clicking on the rotate 90 degrees button in the toolbar. &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
===Gate Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Gate. &lt;br /&gt;
#Verify the space between the gate's legs can fit over the conveyor based on the conveyor's placement. If not then click on the gate and rotate 90 degrees by clicking on the 90 degree rotate button in the toolbar.&lt;br /&gt;
#Move the gate to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Once the gate is over the center of the conveyor, release the left mouse button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Arm Instructions==&lt;br /&gt;
===Placing===&lt;br /&gt;
Place a push arm, and place a gate with an Alien reader near the push arm.  Be sure to select the &amp;quot;Enable GPI/O for this reader in the New Reader Wizard.  It should look something like this:&lt;br /&gt;
[[Image:push1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
===GPIO===&lt;br /&gt;
The push arm works by an Alien or LLRP (or any other reader that supports GPIO) reader sending a GPIO signal to the push arm.  To connect up the GPIO, we first have to go to the GPIO perspective.  Click on Perspectives -&amp;gt; GPIO.  You should get a window that looks something like this:&lt;br /&gt;
[[Image:push2.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
# Expand the Palette if it isn't already open by pressing the arrow on the right.  &lt;br /&gt;
# Select the &amp;quot;Solid Connection&amp;quot; button in the palette and drag an arrow it from the Alien reader on top (in blue) to the push arm you want to move (in red).  You can also just click on the alien and click on the push arm, and an arrow will be shown connecting the two.  &lt;br /&gt;
#Don't forget to turn on the push arm and the gate. Other wise nothing will happen.&lt;br /&gt;
After that, the push arm should fire when you want it to.&lt;br /&gt;
&lt;br /&gt;
==Create a Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Right click on Grouped Components&lt;br /&gt;
#In the right click menu, click on create group&lt;br /&gt;
#In the create group wizard, enter in a group name (example: group1)&lt;br /&gt;
#You will now see the new group listed under Grouped Components&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Ungrouped Components to expand the ungrouped components list if not expanded already.&lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#In the Ungrouped Components list, click on the conveyor component (Example: conveyor1).&lt;br /&gt;
#Hold the left mouse button down on the conveyor component and drag and drop into the Group (Example: group1)&lt;br /&gt;
#Repeat steps 2 - 4 for each or the remaining ungrouped components&lt;br /&gt;
#Once all the steps have been completed, you will now have all the components assigned to a group. (Example: group1) Now you can move the components around in a group in the Layout Designer instead of having to move each component seperately. There are other benefits of groups which will be described in later sections.&lt;br /&gt;
&lt;br /&gt;
==Turn On Components==&lt;br /&gt;
There are two ways to turn on components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on turn On&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn On&lt;br /&gt;
#This will Turn On all the components assigned to tha group&lt;br /&gt;
&lt;br /&gt;
You can now connect to the virtual reader (Alien, AWID, Symbol, LLRP) you created with a client such as telnet, client library, middleware or EdgeServer.&lt;br /&gt;
&lt;br /&gt;
==Start Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the play button to start the simulation&lt;br /&gt;
#Once you start the simultaion you should now see boxes being produced and the conveyor and push arm moving at their defined rates.&lt;br /&gt;
#The client connected to the virtual reader should now report tags as the boxes pass through the gate's antenna.&lt;br /&gt;
&lt;br /&gt;
==Pause Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the Pause button to start the simultaion&lt;br /&gt;
#Once you pause the simultaion you should now see boxes being produced and the conveyor and push arm moving pause, left in the previous state.&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Reset Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the reset button to start the simultaion&lt;br /&gt;
#Once you reset the simultaion you should now see boxes being produced, the conveyor and push arm moving be reset&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Turn Off Components==&lt;br /&gt;
There are two ways to Turn Off components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on Turn Off&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn Off&lt;br /&gt;
#This will Turn Off all the components assigned to the group&lt;br /&gt;
&lt;br /&gt;
The client should now disconnect from the virtual reader as if the device has been powered off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the conveyor component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the conveyor component's property view.&lt;br /&gt;
#Click on the speed property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new speed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Edit Box Producer Rate===&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the box producer component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the box producer component's property view.&lt;br /&gt;
#Click on the rate property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new rate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Layout Navigation=&lt;br /&gt;
* The layout navigation is a tab on the left side of the Designer screen.  It contains 3 collapsible lists of components:&lt;br /&gt;
# Grouped Components&lt;br /&gt;
# Ungrouped Components&lt;br /&gt;
# Generated Components&lt;br /&gt;
==Ungrouped Components==&lt;br /&gt;
* This is where all the ungrouped components are listed.  Click on the plus sign to see them.  &lt;br /&gt;
* You can also turn off and turn on all of the grouped components at the same time.  To do this, right click on the &amp;quot;ungrouped components&amp;quot; and select &amp;quot;turn off&amp;quot; or &amp;quot;turn on&amp;quot;.  &lt;br /&gt;
[[Image:Screen6.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Grouped Components==&lt;br /&gt;
* This is where all of the grouped components are listed.  Click on the plus sign to see all of the groups, and click on the plus sign on individual groups to list the components in those groups.  &lt;br /&gt;
* You can turn on and turn off everything in a group by right clicking on the group and clicking &amp;quot;turn on&amp;quot; or &amp;quot;turn off&amp;quot;.  &lt;br /&gt;
[[Image:Screen7.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Generated Components==&lt;br /&gt;
* This is where you can find all of the components generated by a producer.&lt;br /&gt;
* You can delete these components by right clicking on them and selecting &amp;quot;Delete Entity&amp;quot;.&lt;br /&gt;
[[Image:Screen8.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
&lt;br /&gt;
=MiniMap=&lt;br /&gt;
The MiniMap is on the lower left of the Designer screen.  If you don't see it, click on views -&amp;gt; Show MiniMap.  &lt;br /&gt;
[[Image:Screen9.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Navigation==&lt;br /&gt;
* You can navigate around the MiniMap by clicking and dragging the red box where you want to go.  This will cause the overhead camera to shift where you drag it to.  &lt;br /&gt;
* You can also simply click on the map where you want the camera to be.&lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
* You can zoom in and zoom out by clicking on the MiniMap and moving the mouse wheel backwards and forwards.&lt;br /&gt;
&lt;br /&gt;
=Camera=&lt;br /&gt;
The camera is set at a fixed angle, but it can be zoomed in and zoomed out, and it can also be moved on the MiniMap.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Designer_User%27s_Guide</id>
		<title>Designer User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Designer_User%27s_Guide"/>
				<updated>2008-06-19T08:14:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Push Arm Placement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:userDoc]]&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
*Microsoft Windows 2000/XP/2003 or Linux (Ubuntu, Red Hat, SuSe)&lt;br /&gt;
*Sun Java Runtime Environment &amp;gt; 1.6.4 (J2SE 6.0)&lt;br /&gt;
*'''IMPORTANT:''' does not work with earlier JRE versions.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Designer is packaged in a standard installer, which makes installation very easy.&lt;br /&gt;
&lt;br /&gt;
# Download the latest version of Rifidi Emulator from http://sourceforge.net/projects/rifidi/&lt;br /&gt;
# Double click to run the install.  Follow the on screen instructions.&lt;br /&gt;
&lt;br /&gt;
=Launching Rifidi Designer=&lt;br /&gt;
&lt;br /&gt;
*Windows Users: Simply click the shortcut located in the Rifidi folder in the Start Menu/Programs folder.&lt;br /&gt;
*Linux Users: Double click the executable file located in the installation directory.&lt;br /&gt;
&lt;br /&gt;
=Getting Started - Example Designer Simulation=&lt;br /&gt;
==Create Layout==&lt;br /&gt;
#Once the program is loaded, the main UI will be present.  [[Image:Screen1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#To create a new layout, click the 'file' and 'new'.  &lt;br /&gt;
#Enter in a layout name, select size of the room (64x64 or 256x256 square feet) and click 'Finish'.[[Image:Screen2.png |none|thumb|400px|Create New Layout]]  &lt;br /&gt;
#A new empty layout will be displayed in the UI ready for use [[Image:Screen3.png |none|thumb|800px|New Layout]]&lt;br /&gt;
&lt;br /&gt;
==Add a Conveyor==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.[[Image:Screen4.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list. [[Image:Screen5.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#Highlight the 'Conveyor' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the new component will show up in the &amp;quot;properties&amp;quot; tab at the bottom.  You can change these values if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Push Arm==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Push Arm' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the push-arm are given in the bottom tab marked &amp;quot;properties&amp;quot;.  You can edit them if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
#Right-click it and select Turn On to activate it&lt;br /&gt;
''Note: See the push-arm section for instructions on how to get a push-arm working''&lt;br /&gt;
&lt;br /&gt;
==Add a Gate==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Gate' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#Enter a name for the component, select a reader type and click 'Next'. &lt;br /&gt;
#Enter a name for the reader and click 'Finish'.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Box Producer==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight one of the 'Producer' components (choose based on the type of tag you wish to produce from this producer) and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the pusharm are given in the bottom tab marked &amp;quot;properties&amp;quot;. You can edit them if you wish.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Component Placement==&lt;br /&gt;
===Conveyor Placement===&lt;br /&gt;
#In the Layout Designer View, click on the conveyor. ''Note: Yellow arrows will show the direction of the conveyor''&lt;br /&gt;
#Move the conveyor to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Release the left mouse button once the desired location has been reached.&lt;br /&gt;
#If placement is valid the component will move to the new location and if placement is invalid the component will move to the prior valid location&lt;br /&gt;
&lt;br /&gt;
===Box Producer Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Box Producer. &lt;br /&gt;
#Move the producer to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the producer is over the end of the conveyor, release the left mouse button to finish placement.&lt;br /&gt;
&lt;br /&gt;
===Push Arm Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Push Arm. &lt;br /&gt;
#Move the push arm to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the push arm is next to the right end of the conveyor, release the left mouse button.&lt;br /&gt;
#To finalize the placement, verify the push arm is pointed in the direction to push over the conveyor (Look for shaded area to be over conveyor). If not then you can rotate the component by 90 degrees by clicking on the component and then clicking on the rotate 90 degrees button in the toolbar. &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
===Gate Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Gate. &lt;br /&gt;
#Verify the space between the gate's legs can fit over the conveyor based on the conveyor's placement. If not then click on the gate and rotate 90 degrees by clicking on the 90 degree rotate button in the toolbar.&lt;br /&gt;
#Move the gate to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Once the gate is over the center of the conveyor, release the left mouse button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Arm Instructions==&lt;br /&gt;
===Placing===&lt;br /&gt;
Place a push arm, and place a gate with an Alien reader near the push arm.  Be sure to select the &amp;quot;Enable GPI/O for this reader in the New Reader Wizard.  It should look something like this:&lt;br /&gt;
[[Image:push1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
===GPIO===&lt;br /&gt;
The push arm works by an Alien or LLRP (or any other reader that supports GPIO) reader sending a GPIO signal to the push arm.  To connect up the GPIO, we first have to go to the GPIO perspective.  Click on Perspectives -&amp;gt; GPIO.  You should get a window that looks something like this:&lt;br /&gt;
[[Image:push2.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
# Expand the Palette if it isn't already open by pressing the arrow on the right.  &lt;br /&gt;
# Select the &amp;quot;Solid Connection&amp;quot; button in the palette and drag an arrow it from the Alien reader on top (in blue) to the push arm you want to move (in red).  You can also just click on the alien and click on the push arm, and an arrow will be shown connecting the two.  &lt;br /&gt;
#Don't forget to turn on the push arm and the gate. Other wise nothing will happen.&lt;br /&gt;
After that, the push arm should fire when you want it to.&lt;br /&gt;
&lt;br /&gt;
==Create a Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Right click on Grouped Components&lt;br /&gt;
#In the right click menu, click on create group&lt;br /&gt;
#In the create group wizard, enter in a group name (example: group1)&lt;br /&gt;
#You will now see the new group listed under Grouped Components&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Ungrouped Components to expand the ungrouped components list if not expanded already.&lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#In the Ungrouped Components list, click on the conveyor component (Example: conveyor1).&lt;br /&gt;
#Hold the left mouse button down on the conveyor component and drag and drop into the Group (Example: group1)&lt;br /&gt;
#Repeat steps 2 - 4 for each or the remaining ungrouped components&lt;br /&gt;
#Once all the steps have been completed, you will now have all the components assigned to a group. (Example: group1) Now you can move the components around in a group in the Layout Designer instead of having to move each component seperately. There are other benefits of groups which will be described in later sections.&lt;br /&gt;
&lt;br /&gt;
==Turn On Components==&lt;br /&gt;
There are two ways to turn on components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on turn On&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn On&lt;br /&gt;
#This will Turn On all the components assigned to tha group&lt;br /&gt;
&lt;br /&gt;
You can now connect to the virtual reader (Alien, AWID, Symbol, LLRP) you created with a client such as telnet, client library, middleware or EdgeServer.&lt;br /&gt;
&lt;br /&gt;
==Start Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the play button to start the simulation&lt;br /&gt;
#Once you start the simultaion you should now see boxes being produced and the conveyor and push arm moving at their defined rates.&lt;br /&gt;
#The client connected to the virtual reader should now report tags as the boxes pass through the gate's antenna.&lt;br /&gt;
&lt;br /&gt;
==Pause Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the Pause button to start the simultaion&lt;br /&gt;
#Once you pause the simultaion you should now see boxes being produced and the conveyor and push arm moving pause, left in the previous state.&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Reset Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the reset button to start the simultaion&lt;br /&gt;
#Once you reset the simultaion you should now see boxes being produced, the conveyor and push arm moving be reset&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Turn Off Components==&lt;br /&gt;
There are two ways to Turn Off components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on Turn Off&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn Off&lt;br /&gt;
#This will Turn Off all the components assigned to the group&lt;br /&gt;
&lt;br /&gt;
The client should now disconnect from the virtual reader as if the device has been powered off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the conveyor component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the conveyor component's property view.&lt;br /&gt;
#Click on the speed property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new speed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Edit Box Producer Rate===&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the box producer component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the box producer component's property view.&lt;br /&gt;
#Click on the rate property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new rate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Layout Navigation=&lt;br /&gt;
* The layout navigation is a tab on the left side of the Designer screen.  It contains 3 collapsible lists of components:&lt;br /&gt;
# Grouped Components&lt;br /&gt;
# Ungrouped Components&lt;br /&gt;
# Generated Components&lt;br /&gt;
==Ungrouped Components==&lt;br /&gt;
* This is where all the ungrouped components are listed.  Click on the plus sign to see them.  &lt;br /&gt;
* You can also turn off and turn on all of the grouped components at the same time.  To do this, right click on the &amp;quot;ungrouped components&amp;quot; and select &amp;quot;turn off&amp;quot; or &amp;quot;turn on&amp;quot;.  &lt;br /&gt;
[[Image:Screen6.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Grouped Components==&lt;br /&gt;
* This is where all of the grouped components are listed.  Click on the plus sign to see all of the groups, and click on the plus sign on individual groups to list the components in those groups.  &lt;br /&gt;
* You can turn on and turn off everything in a group by right clicking on the group and clicking &amp;quot;turn on&amp;quot; or &amp;quot;turn off&amp;quot;.  &lt;br /&gt;
[[Image:Screen7.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Generated Components==&lt;br /&gt;
* This is where you can find all of the components generated by a producer.&lt;br /&gt;
* You can delete these components by right clicking on them and selecting &amp;quot;Delete Entity&amp;quot;.&lt;br /&gt;
[[Image:Screen8.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
&lt;br /&gt;
=MiniMap=&lt;br /&gt;
The MiniMap is on the lower left of the Designer screen.  If you don't see it, click on views -&amp;gt; Show MiniMap.  &lt;br /&gt;
[[Image:Screen9.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Navigation==&lt;br /&gt;
* You can navigate around the MiniMap by clicking and dragging the red box where you want to go.  This will cause the overhead camera to shift where you drag it to.  &lt;br /&gt;
* You can also simply click on the map where you want the camera to be.&lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
* You can zoom in and zoom out by clicking on the MiniMap and moving the mouse wheel backwards and forwards.&lt;br /&gt;
&lt;br /&gt;
=Camera=&lt;br /&gt;
The camera is set at a fixed angle, but it can be zoomed in and zoomed out, and it can also be moved on the MiniMap.  &lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
*  You can zoom in and zoom out by clicking on the main view screen and moving the mouse wheel backwards and forwards.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Designer_User%27s_Guide</id>
		<title>Designer User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Designer_User%27s_Guide"/>
				<updated>2008-06-19T08:13:35Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Push Arm Placement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:userDoc]]&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
*Microsoft Windows 2000/XP/2003 or Linux (Ubuntu, Red Hat, SuSe)&lt;br /&gt;
*Sun Java Runtime Environment &amp;gt; 1.6.4 (J2SE 6.0)&lt;br /&gt;
*'''IMPORTANT:''' does not work with earlier JRE versions.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Designer is packaged in a standard installer, which makes installation very easy.&lt;br /&gt;
&lt;br /&gt;
# Download the latest version of Rifidi Emulator from http://sourceforge.net/projects/rifidi/&lt;br /&gt;
# Double click to run the install.  Follow the on screen instructions.&lt;br /&gt;
&lt;br /&gt;
=Launching Rifidi Designer=&lt;br /&gt;
&lt;br /&gt;
*Windows Users: Simply click the shortcut located in the Rifidi folder in the Start Menu/Programs folder.&lt;br /&gt;
*Linux Users: Double click the executable file located in the installation directory.&lt;br /&gt;
&lt;br /&gt;
=Getting Started - Example Designer Simulation=&lt;br /&gt;
==Create Layout==&lt;br /&gt;
#Once the program is loaded, the main UI will be present.  [[Image:Screen1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#To create a new layout, click the 'file' and 'new'.  &lt;br /&gt;
#Enter in a layout name, select size of the room (64x64 or 256x256 square feet) and click 'Finish'.[[Image:Screen2.png |none|thumb|400px|Create New Layout]]  &lt;br /&gt;
#A new empty layout will be displayed in the UI ready for use [[Image:Screen3.png |none|thumb|800px|New Layout]]&lt;br /&gt;
&lt;br /&gt;
==Add a Conveyor==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.[[Image:Screen4.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list. [[Image:Screen5.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
#Highlight the 'Conveyor' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the new component will show up in the &amp;quot;properties&amp;quot; tab at the bottom.  You can change these values if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Push Arm==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Push Arm' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the push-arm are given in the bottom tab marked &amp;quot;properties&amp;quot;.  You can edit them if you wish.  &lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
#Right-click it and select Turn On to activate it&lt;br /&gt;
''Note: See the push-arm section for instructions on how to get a push-arm working''&lt;br /&gt;
&lt;br /&gt;
==Add a Gate==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight the 'Gate' component and drag and drop to the 'Layout Designer'&lt;br /&gt;
#Enter a name for the component, select a reader type and click 'Next'. &lt;br /&gt;
#Enter a name for the reader and click 'Finish'.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Add a Box Producer==&lt;br /&gt;
#Click on the 'Components' Tab to view the library of all available components to add to a layout.&lt;br /&gt;
#If the list is not expanded already, Click on the '+' next to RFID Base Models to expand the list.&lt;br /&gt;
#Highlight one of the 'Producer' components (choose based on the type of tag you wish to produce from this producer) and drag and drop to the 'Layout Designer'&lt;br /&gt;
#The name and speed of the pusharm are given in the bottom tab marked &amp;quot;properties&amp;quot;. You can edit them if you wish.&lt;br /&gt;
#You will now see the component displayed in the 'Layout Designer'. ''Note: For placement refer to the Component Placement Section''&lt;br /&gt;
&lt;br /&gt;
==Component Placement==&lt;br /&gt;
===Conveyor Placement===&lt;br /&gt;
#In the Layout Designer View, click on the conveyor. ''Note: Yellow arrows will show the direction of the conveyor''&lt;br /&gt;
#Move the conveyor to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Release the left mouse button once the desired location has been reached.&lt;br /&gt;
#If placement is valid the component will move to the new location and if placement is invalid the component will move to the prior valid location&lt;br /&gt;
&lt;br /&gt;
===Box Producer Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Box Producer. &lt;br /&gt;
#Move the producer to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the producer is over the end of the conveyor, release the left mouse button to finish placement.&lt;br /&gt;
&lt;br /&gt;
===Push Arm Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Push Arm. &lt;br /&gt;
#Move it to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted.''&lt;br /&gt;
#Once the push arm is next to the right end of the conveyor, release the left mouse button.&lt;br /&gt;
#To finalize the placement, verify the push arm is pointed in the direction to push over the conveyor (Look for shaded area to be over conveyor). If not then you can rotate the component by 90 degrees by clicking on the component and then clicking on the rotate 90 degrees button in the toolbar. &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
===Gate Placement===&lt;br /&gt;
#In the Layout Designer View, click on the Gate. &lt;br /&gt;
#Verify the space between the gate's legs can fit over the conveyor based on the conveyor's placement. If not then click on the gate and rotate 90 degrees by clicking on the 90 degree rotate button in the toolbar.&lt;br /&gt;
#Move the gate to the desired location by holding the left mouse button down. ''Note: The area below the component will be highlighted in green when placement is valid and red when placement is invalid.''&lt;br /&gt;
#Once the gate is over the center of the conveyor, release the left mouse button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Push Arm Instructions==&lt;br /&gt;
===Placing===&lt;br /&gt;
Place a push arm, and place a gate with an Alien reader near the push arm.  Be sure to select the &amp;quot;Enable GPI/O for this reader in the New Reader Wizard.  It should look something like this:&lt;br /&gt;
[[Image:push1.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
===GPIO===&lt;br /&gt;
The push arm works by an Alien or LLRP (or any other reader that supports GPIO) reader sending a GPIO signal to the push arm.  To connect up the GPIO, we first have to go to the GPIO perspective.  Click on Perspectives -&amp;gt; GPIO.  You should get a window that looks something like this:&lt;br /&gt;
[[Image:push2.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
# Expand the Palette if it isn't already open by pressing the arrow on the right.  &lt;br /&gt;
# Select the &amp;quot;Solid Connection&amp;quot; button in the palette and drag an arrow it from the Alien reader on top (in blue) to the push arm you want to move (in red).  You can also just click on the alien and click on the push arm, and an arrow will be shown connecting the two.  &lt;br /&gt;
#Don't forget to turn on the push arm and the gate. Other wise nothing will happen.&lt;br /&gt;
After that, the push arm should fire when you want it to.&lt;br /&gt;
&lt;br /&gt;
==Create a Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Right click on Grouped Components&lt;br /&gt;
#In the right click menu, click on create group&lt;br /&gt;
#In the create group wizard, enter in a group name (example: group1)&lt;br /&gt;
#You will now see the new group listed under Grouped Components&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Ungrouped Components to expand the ungrouped components list if not expanded already.&lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#In the Ungrouped Components list, click on the conveyor component (Example: conveyor1).&lt;br /&gt;
#Hold the left mouse button down on the conveyor component and drag and drop into the Group (Example: group1)&lt;br /&gt;
#Repeat steps 2 - 4 for each or the remaining ungrouped components&lt;br /&gt;
#Once all the steps have been completed, you will now have all the components assigned to a group. (Example: group1) Now you can move the components around in a group in the Layout Designer instead of having to move each component seperately. There are other benefits of groups which will be described in later sections.&lt;br /&gt;
&lt;br /&gt;
==Turn On Components==&lt;br /&gt;
There are two ways to turn on components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on turn On&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn On&lt;br /&gt;
#This will Turn On all the components assigned to tha group&lt;br /&gt;
&lt;br /&gt;
You can now connect to the virtual reader (Alien, AWID, Symbol, LLRP) you created with a client such as telnet, client library, middleware or EdgeServer.&lt;br /&gt;
&lt;br /&gt;
==Start Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the play button to start the simulation&lt;br /&gt;
#Once you start the simultaion you should now see boxes being produced and the conveyor and push arm moving at their defined rates.&lt;br /&gt;
#The client connected to the virtual reader should now report tags as the boxes pass through the gate's antenna.&lt;br /&gt;
&lt;br /&gt;
==Pause Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the Pause button to start the simultaion&lt;br /&gt;
#Once you pause the simultaion you should now see boxes being produced and the conveyor and push arm moving pause, left in the previous state.&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Reset Simulation==&lt;br /&gt;
#On the Designer Toolbar, you can now click on the reset button to start the simultaion&lt;br /&gt;
#Once you reset the simultaion you should now see boxes being produced, the conveyor and push arm moving be reset&lt;br /&gt;
#The client connected to the virtual reader will continue to be connected.&lt;br /&gt;
&lt;br /&gt;
==Turn Off Components==&lt;br /&gt;
There are two ways to Turn Off components:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on the conveyor component&lt;br /&gt;
#In the conveyor component right click menu, click on Turn Off&lt;br /&gt;
#Repeat steps 3-4 for each component in the group&lt;br /&gt;
&lt;br /&gt;
or the short cut is to:&lt;br /&gt;
&lt;br /&gt;
#Click on the Layout Navigator tab if not already selected. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group name (Example: group1) to expand the group if not expanded already.&lt;br /&gt;
#Right click on group (Example: group1)&lt;br /&gt;
#In the group right click menu, click on Turn Off&lt;br /&gt;
#This will Turn Off all the components assigned to the group&lt;br /&gt;
&lt;br /&gt;
The client should now disconnect from the virtual reader as if the device has been powered off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add Components to Group==&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the conveyor component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the conveyor component's property view.&lt;br /&gt;
#Click on the speed property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new speed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Edit Box Producer Rate===&lt;br /&gt;
#Click on the Layout Navigator tab. &lt;br /&gt;
#Click on the '+' next to Grouped Components to expand the grouped list if not expanded already.&lt;br /&gt;
#Click on the '+' next to the group (Example: groups1) to expand the assigned grouped component list if not expanded already.&lt;br /&gt;
#Click on the box producer component.&lt;br /&gt;
#At the bottom below the Layout Designer view you will now see the box producer component's property view.&lt;br /&gt;
#Click on the rate property and change the value.&lt;br /&gt;
#The next time you Turn On the components (if not on already) and play the simulation you will see the new rate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Layout Navigation=&lt;br /&gt;
* The layout navigation is a tab on the left side of the Designer screen.  It contains 3 collapsible lists of components:&lt;br /&gt;
# Grouped Components&lt;br /&gt;
# Ungrouped Components&lt;br /&gt;
# Generated Components&lt;br /&gt;
==Ungrouped Components==&lt;br /&gt;
* This is where all the ungrouped components are listed.  Click on the plus sign to see them.  &lt;br /&gt;
* You can also turn off and turn on all of the grouped components at the same time.  To do this, right click on the &amp;quot;ungrouped components&amp;quot; and select &amp;quot;turn off&amp;quot; or &amp;quot;turn on&amp;quot;.  &lt;br /&gt;
[[Image:Screen6.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Grouped Components==&lt;br /&gt;
* This is where all of the grouped components are listed.  Click on the plus sign to see all of the groups, and click on the plus sign on individual groups to list the components in those groups.  &lt;br /&gt;
* You can turn on and turn off everything in a group by right clicking on the group and clicking &amp;quot;turn on&amp;quot; or &amp;quot;turn off&amp;quot;.  &lt;br /&gt;
[[Image:Screen7.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Generated Components==&lt;br /&gt;
* This is where you can find all of the components generated by a producer.&lt;br /&gt;
* You can delete these components by right clicking on them and selecting &amp;quot;Delete Entity&amp;quot;.&lt;br /&gt;
[[Image:Screen8.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
&lt;br /&gt;
=MiniMap=&lt;br /&gt;
The MiniMap is on the lower left of the Designer screen.  If you don't see it, click on views -&amp;gt; Show MiniMap.  &lt;br /&gt;
[[Image:Screen9.png |none|thumb|800px|The Rifidi Designer UI]]&lt;br /&gt;
==Navigation==&lt;br /&gt;
* You can navigate around the MiniMap by clicking and dragging the red box where you want to go.  This will cause the overhead camera to shift where you drag it to.  &lt;br /&gt;
* You can also simply click on the map where you want the camera to be.&lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
* You can zoom in and zoom out by clicking on the MiniMap and moving the mouse wheel backwards and forwards.&lt;br /&gt;
&lt;br /&gt;
=Camera=&lt;br /&gt;
The camera is set at a fixed angle, but it can be zoomed in and zoomed out, and it can also be moved on the MiniMap.  &lt;br /&gt;
&lt;br /&gt;
==Zoom in/Zoom out==&lt;br /&gt;
*  You can zoom in and zoom out by clicking on the main view screen and moving the mouse wheel backwards and forwards.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Confirm_exception.png</id>
		<title>File:Confirm exception.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Confirm_exception.png"/>
				<updated>2008-06-16T12:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Get_certificate.png</id>
		<title>File:Get certificate.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Get_certificate.png"/>
				<updated>2008-06-16T12:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Add_exception.png</id>
		<title>File:Add exception.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Add_exception.png"/>
				<updated>2008-06-16T12:39:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Load_error.png</id>
		<title>File:Load error.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Load_error.png"/>
				<updated>2008-06-16T12:38:01Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-16T12:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Webinterface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites. If you should get an error message that says [[secure connection failed]], then please click on the link for [[secure connection failed]] for help.&lt;br /&gt;
&lt;br /&gt;
[[Image:repo_choice.png]]&lt;br /&gt;
&lt;br /&gt;
If you do not know, which one to choose, then '''Rifidi (ext)''' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report and/or fix bugs. In that case you can register by clicking register in the upper right corner.&lt;br /&gt;
&lt;br /&gt;
[[Image:register_button.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:fill_register.png]]&lt;br /&gt;
&lt;br /&gt;
After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges (e.g. submit bug reports).&lt;br /&gt;
As soon as you have your account, you can log in by clicking on '''login''', also in the upper right corner. &lt;br /&gt;
&lt;br /&gt;
[[Image:login_button.png]]&lt;br /&gt;
&lt;br /&gt;
Enter the credentials you provided earlier in the registration process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:login_credentials.png]]&lt;br /&gt;
&lt;br /&gt;
== Report a bug ==&lt;br /&gt;
&lt;br /&gt;
Click on '''New Ticket''' in the upper right corner and fill in the details about the bug you spotted. If you do not have that button, you do not have the necessary rights to report bugs.&lt;br /&gt;
&lt;br /&gt;
[[Image:new_ticket.png]]&lt;br /&gt;
&lt;br /&gt;
== View bug reports ==&lt;br /&gt;
&lt;br /&gt;
Click on '''View Tickets''' in the upper right corner and choose the report that suits you best.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_tickets.png]]&lt;br /&gt;
&lt;br /&gt;
== Eclipse integration ==&lt;br /&gt;
&lt;br /&gt;
You can integrate TRAC into your Eclipse IDE by using [[Mylyn]].&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-13T13:33:04Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites.&lt;br /&gt;
&lt;br /&gt;
[[Image:repo_choice.png]]&lt;br /&gt;
&lt;br /&gt;
If you do not know, which one to choose, then '''Rifidi (ext)''' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report and/or fix bugs. In that case you can register by clicking register in the upper right corner.&lt;br /&gt;
&lt;br /&gt;
[[Image:register_button.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:fill_register.png]]&lt;br /&gt;
&lt;br /&gt;
After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges (e.g. submit bug reports).&lt;br /&gt;
As soon as you have your account, you can log in by clicking on '''login''', also in the upper right corner. &lt;br /&gt;
&lt;br /&gt;
[[Image:login_button.png]]&lt;br /&gt;
&lt;br /&gt;
Enter the credentials you provided earlier in the registration process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:login_credentials.png]]&lt;br /&gt;
&lt;br /&gt;
== Report a bug ==&lt;br /&gt;
&lt;br /&gt;
Click on '''New Ticket''' in the upper right corner and fill in the details about the bug you spotted. If you do not have that button, you do not have the necessary rights to report bugs.&lt;br /&gt;
&lt;br /&gt;
[[Image:new_ticket.png]]&lt;br /&gt;
&lt;br /&gt;
== View bug reports ==&lt;br /&gt;
&lt;br /&gt;
Click on '''View Tickets''' in the upper right corner and choose the report that suits you best.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_tickets.png]]&lt;br /&gt;
&lt;br /&gt;
== Eclipse integration ==&lt;br /&gt;
&lt;br /&gt;
You can integrate TRAC into your Eclipse IDE by using [[Mylyn]].&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:View_tickets.png</id>
		<title>File:View tickets.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:View_tickets.png"/>
				<updated>2008-06-13T12:46:43Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:New_ticket.png</id>
		<title>File:New ticket.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:New_ticket.png"/>
				<updated>2008-06-13T12:46:21Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Login_credentials.png</id>
		<title>File:Login credentials.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Login_credentials.png"/>
				<updated>2008-06-13T12:45:51Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: uploaded a new version of &amp;quot;Image:Login credentials.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Login_credentials.png</id>
		<title>File:Login credentials.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Login_credentials.png"/>
				<updated>2008-06-13T12:41:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Login_button.png</id>
		<title>File:Login button.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Login_button.png"/>
				<updated>2008-06-13T12:40:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Fill_register.png</id>
		<title>File:Fill register.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Fill_register.png"/>
				<updated>2008-06-13T12:40:16Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Register_button.png</id>
		<title>File:Register button.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Register_button.png"/>
				<updated>2008-06-13T12:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Repo_choice.png</id>
		<title>File:Repo choice.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Repo_choice.png"/>
				<updated>2008-06-13T12:39:09Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-13T12:38:42Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Report a bug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites.&lt;br /&gt;
&lt;br /&gt;
[[Image:repo_choice.png]]&lt;br /&gt;
&lt;br /&gt;
If you do not know, which one to choose, then '''Rifidi (ext)''' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report and/or fix bugs. In that case you can register by clicking register in the upper right corner.&lt;br /&gt;
&lt;br /&gt;
[[Image:register_button.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:fill_register.png]]&lt;br /&gt;
&lt;br /&gt;
After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges (e.g. submit bug reports).&lt;br /&gt;
As soon as you have your account, you can log in by clicking on '''login''', also in the upper right corner. &lt;br /&gt;
&lt;br /&gt;
[[Image:login_button.png]]&lt;br /&gt;
&lt;br /&gt;
Enter the credentials you provided earlier in the registration process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:login_credentials.png]]&lt;br /&gt;
&lt;br /&gt;
== Report a bug ==&lt;br /&gt;
&lt;br /&gt;
Click on '''New Ticket''' in the upper right corner and fill in the details about the bug you spotted. If you do not have that button, you do not have the necessary rights to report bugs.&lt;br /&gt;
&lt;br /&gt;
[[Image:new_ticket.png]]&lt;br /&gt;
&lt;br /&gt;
== View bug reports ==&lt;br /&gt;
&lt;br /&gt;
Click on '''View Tickets''' in the upper right corner and choose the report that suits you best.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_tickets.png]]&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-13T12:37:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites.&lt;br /&gt;
&lt;br /&gt;
[[Image:repo_choice.png]]&lt;br /&gt;
&lt;br /&gt;
If you do not know, which one to choose, then '''Rifidi (ext)''' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report and/or fix bugs. In that case you can register by clicking register in the upper right corner.&lt;br /&gt;
&lt;br /&gt;
[[Image:register_button.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:fill_register.png]]&lt;br /&gt;
&lt;br /&gt;
After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges (e.g. submit bug reports).&lt;br /&gt;
As soon as you have your account, you can log in by clicking on '''login''', also in the upper right corner. &lt;br /&gt;
&lt;br /&gt;
[[Image:login_button.png]]&lt;br /&gt;
&lt;br /&gt;
Enter the credentials you provided earlier in the registration process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:login_credentials.png]]&lt;br /&gt;
&lt;br /&gt;
== Report a bug ==&lt;br /&gt;
&lt;br /&gt;
Click on '''New Ticket''' in the upper right corner and fill in the details about the bug you spotted.&lt;br /&gt;
&lt;br /&gt;
[[Image:new_ticket.png]]&lt;br /&gt;
&lt;br /&gt;
== View bug reports ==&lt;br /&gt;
&lt;br /&gt;
Click on '''View Tickets''' in the upper right corner and choose the report that suits you best.&lt;br /&gt;
&lt;br /&gt;
[[Image:view_tickets.png]]&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Mylyn</id>
		<title>Mylyn</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Mylyn"/>
				<updated>2008-06-13T12:33:20Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Connect to Rifidi Task Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA. Once your tasks are integrated, Mylyn monitors your work activity to identify information relevant to the task-at-hand, and uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylyn also facilitates multitasking, planning, reusing past efforts, and sharing expertise.&lt;br /&gt;
&lt;br /&gt;
http://www.eclipsecon.com/mylyn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Mylyn with Trac support in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
In Eclipse go to Help -&amp;gt; Software Updates -&amp;gt; Find and Install&lt;br /&gt;
Search for New Features to Install&lt;br /&gt;
Select '''Mylin''' and '''Mylyn Extras'''&lt;br /&gt;
Press '''Finnish''' and select '''Automatically select mirror''' in the next dialog.&lt;br /&gt;
Select all of '''Mylyn''' and the '''Mylyn Connector for Trac''' from the '''Mylyn Extras'''.&lt;br /&gt;
Press '''Next''', accept the terms (if you agree), '''Next''' and '''Finnish'''.&lt;br /&gt;
&lt;br /&gt;
== Connect to Rifidi Task Repository ==&lt;br /&gt;
&lt;br /&gt;
Open the team synchronizing perspective in Eclipse:&lt;br /&gt;
Window-&amp;gt; open perspective -&amp;gt; other-&amp;gt; team synchronizing&lt;br /&gt;
Click on the add task repository button (marked by arrow)‏&lt;br /&gt;
Choose TRAC from the menu and go to next.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mylyn_add_task1.png]]&lt;br /&gt;
&lt;br /&gt;
The Trac repository settings are:&lt;br /&gt;
&lt;br /&gt;
[[Image:mylyn_trac_credentials.png]]&lt;br /&gt;
&lt;br /&gt;
''Server:'' https://trac.rifidi.org/rep-external-trac/&lt;br /&gt;
You can choose a name for the Repository and put that in ''Label'' (e.g. Rifidi).&lt;br /&gt;
At ''User ID'' and ''Password'' put the credentials from your [[trac]] account.&lt;br /&gt;
If you want to, you can check '''Save Password'''.&lt;br /&gt;
Click on '''Validate Settings''' and '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
== Select the tasks you want to work on ==&lt;br /&gt;
&lt;br /&gt;
Usually you do not want to see all the bugs, but only &amp;quot;your&amp;quot; bugs. You can retrieve those by adding a query to our trac bug database. Right click on your just added task repository and choose '''Add Query''' from the context menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:trac_query.png]]&lt;br /&gt;
&lt;br /&gt;
Then enter a query that meets your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image:query_line.png]]&lt;br /&gt;
&lt;br /&gt;
As soon as you switch back to your '''Java''' view, you should have a folder with your query's name in the upper right corner of your eclipse ide. This folder contains the tasks you queried for. Whenever there are new tasks matching your query, you will be notified of them and they will be automatically added to this folder.&lt;br /&gt;
For further information on how to use Mylyn, surf to http://www.eclipsecon.com/mylyn/ .&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Query_line.png</id>
		<title>File:Query line.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Query_line.png"/>
				<updated>2008-06-13T12:03:17Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Mylyn</id>
		<title>Mylyn</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Mylyn"/>
				<updated>2008-06-13T12:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA. Once your tasks are integrated, Mylyn monitors your work activity to identify information relevant to the task-at-hand, and uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylyn also facilitates multitasking, planning, reusing past efforts, and sharing expertise.&lt;br /&gt;
&lt;br /&gt;
http://www.eclipsecon.com/mylyn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Mylyn with Trac support in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
In Eclipse go to Help -&amp;gt; Software Updates -&amp;gt; Find and Install&lt;br /&gt;
Search for New Features to Install&lt;br /&gt;
Select '''Mylin''' and '''Mylyn Extras'''&lt;br /&gt;
Press '''Finnish''' and select '''Automatically select mirror''' in the next dialog.&lt;br /&gt;
Select all of '''Mylyn''' and the '''Mylyn Connector for Trac''' from the '''Mylyn Extras'''.&lt;br /&gt;
Press '''Next''', accept the terms (if you agree), '''Next''' and '''Finnish'''.&lt;br /&gt;
&lt;br /&gt;
== Connect to Rifidi Task Repository ==&lt;br /&gt;
&lt;br /&gt;
Open the team synchronizing perspective in Eclipse:&lt;br /&gt;
Window-&amp;gt; open perspective -&amp;gt; other-&amp;gt; team synchronizing&lt;br /&gt;
Click on the add task repository button (marked by arrow)‏&lt;br /&gt;
Choose TRAC from the menu and go to next.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mylyn_add_task1.png]]&lt;br /&gt;
&lt;br /&gt;
The Trac repository settings are:&lt;br /&gt;
&lt;br /&gt;
[[Image:mylyn_trac_credentials.png]]&lt;br /&gt;
&lt;br /&gt;
''Server:'' https://trac.rifidi.org/rep-external-trac/&lt;br /&gt;
You can choose a name for the Repository and put that in ''Label'' (e.g. Rifidi).&lt;br /&gt;
At ''User ID'' and ''Password'' put the credentials from [[trac]].&lt;br /&gt;
If you want to, you can check '''Save Password'''.&lt;br /&gt;
Click on '''Validate Settings''' and '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
== Select the tasks you want to work on ==&lt;br /&gt;
&lt;br /&gt;
Usually you do not want to see all the bugs, but only &amp;quot;your&amp;quot; bugs. You can retrieve those by adding a query to our trac bug database. Right click on your just added task repository and choose '''Add Query''' from the context menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:trac_query.png]]&lt;br /&gt;
&lt;br /&gt;
Then enter a query that meets your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image:query_line.png]]&lt;br /&gt;
&lt;br /&gt;
As soon as you switch back to your '''Java''' view, you should have a folder with your query's name in the upper right corner of your eclipse ide. This folder contains the tasks you queried for. Whenever there are new tasks matching your query, you will be notified of them and they will be automatically added to this folder.&lt;br /&gt;
For further information on how to use Mylyn, surf to http://www.eclipsecon.com/mylyn/ .&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Trac_query.png</id>
		<title>File:Trac query.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Trac_query.png"/>
				<updated>2008-06-13T12:00:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Mylyn_trac_credentials.png</id>
		<title>File:Mylyn trac credentials.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Mylyn_trac_credentials.png"/>
				<updated>2008-06-13T12:00:18Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Mylyn</id>
		<title>Mylyn</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Mylyn"/>
				<updated>2008-06-13T11:49:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA. Once your tasks are integrated, Mylyn monitors your work activity to identify information relevant to the task-at-hand, and uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylyn also facilitates multitasking, planning, reusing past efforts, and sharing expertise.&lt;br /&gt;
&lt;br /&gt;
http://www.eclipsecon.com/mylyn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Mylyn with Trac support in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
In Eclipse go to Help -&amp;gt; Software Updates -&amp;gt; Find and Install&lt;br /&gt;
Search for New Features to Install&lt;br /&gt;
Select '''Mylin''' and '''Mylyn Extras'''&lt;br /&gt;
Press '''Finnish''' and select '''Automatically select mirror''' in the next dialog.&lt;br /&gt;
Select all of '''Mylyn''' and the '''Mylyn Connector for Trac''' from the '''Mylyn Extras'''.&lt;br /&gt;
Press '''Next''', accept the terms (if you agree), '''Next''' and '''Finnish'''.&lt;br /&gt;
&lt;br /&gt;
== Connect to Rifidi Task Repository ==&lt;br /&gt;
&lt;br /&gt;
Open the team synchronizing perspective in Eclipse:&lt;br /&gt;
Window-&amp;gt; open perspective -&amp;gt; other-&amp;gt; team synchronizing&lt;br /&gt;
Click on the add task repository button (marked by arrow)‏&lt;br /&gt;
Choose TRAC from the menu and go to next.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mylyn_add_task1.png]]&lt;br /&gt;
&lt;br /&gt;
The Trac repository settings are:&lt;br /&gt;
[[Image:mylyn_trac_credentials.png]]&lt;br /&gt;
''Server:'' https://trac.rifidi.org/rep-external-trac/&lt;br /&gt;
You can choose a name for the Repository and put that in ''Label'' (e.g. Rifidi).&lt;br /&gt;
At ''User ID'' and ''Password'' put the credentials from [[trac]].&lt;br /&gt;
If you want to, you can check '''Save Password'''.&lt;br /&gt;
Click on '''Validate Settings''' and '''Finish'''.&lt;br /&gt;
&lt;br /&gt;
== Select the tasks you want to work on ==&lt;br /&gt;
&lt;br /&gt;
Usually you do not want to see all the bugs, but only &amp;quot;your&amp;quot; bugs. You can retrieve those by adding a query to our trac bug database. Right click on your just added task repository and choose '''Add Query''' from the context menu.&lt;br /&gt;
Then enter a query that meets your requirements.&lt;br /&gt;
[[Image:trac_query.png]]&lt;br /&gt;
As soon as you switch back to your '''Java''' view, you should have a folder with your query's name in the upper right corner of your eclipse ide. This folder contains the tasks you queried for. Whenever there are new tasks matching your query, you will be notified of them and they will be automatically added to this folder.&lt;br /&gt;
For further information on how to use Mylyn, surf to http://www.eclipsecon.com/mylyn/ .&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Mylyn</id>
		<title>Mylyn</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Mylyn"/>
				<updated>2008-06-12T13:37:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA. Once your tasks are integrated, Mylyn monitors your work activity to identify information relevant to the task-at-hand, and uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylyn also facilitates multitasking, planning, reusing past efforts, and sharing expertise.&lt;br /&gt;
&lt;br /&gt;
http://www.eclipsecon.com/mylyn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Mylyn with Trac support in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
In Eclipse go to Help -&amp;gt; Software Updates -&amp;gt; Find and Install&lt;br /&gt;
Search for New Features to Install&lt;br /&gt;
Select '''Mylin''' and '''Mylyn Extras'''&lt;br /&gt;
Press '''Finnish''' and select '''Automatically select mirror''' in the next dialog.&lt;br /&gt;
Select all of '''Mylyn''' and the '''Mylyn Connector for Trac''' from the '''Mylyn Extras'''.&lt;br /&gt;
Press '''Next''', accept the terms (if you agree), '''Next''' and '''Finnish'''.&lt;br /&gt;
&lt;br /&gt;
== Connect to Rifidi Task Repository ==&lt;br /&gt;
&lt;br /&gt;
Open the team synchronizing perspective in Eclipse:&lt;br /&gt;
Window-&amp;gt; open perspective -&amp;gt; other-&amp;gt; team synchronizing&lt;br /&gt;
Click on the add task repository button (marked by arrow)‏&lt;br /&gt;
Choose TRAC from the menu and go to next.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mylyn_add_task1.png]]&lt;br /&gt;
&lt;br /&gt;
The Trac repository settings are:&lt;br /&gt;
&lt;br /&gt;
''Server:'' https://trac.rifidi.org/rep-external-trac/&lt;br /&gt;
You can choose a name for the Repository and put that in ''Label'' (e.g. Rifidi).&lt;br /&gt;
At ''User ID'' and ''Password'' put the credentials from [[trac]].&lt;br /&gt;
If you want to, you can check '''Save Password'''.&lt;br /&gt;
Click on '''Validate Settings''' and '''Finish'''.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/File:Mylyn_add_task1.png</id>
		<title>File:Mylyn add task1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/File:Mylyn_add_task1.png"/>
				<updated>2008-06-12T13:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Mylyn</id>
		<title>Mylyn</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Mylyn"/>
				<updated>2008-06-12T13:28:56Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: New page: Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating ri...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA. Once your tasks are integrated, Mylyn monitors your work activity to identify information relevant to the task-at-hand, and uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylyn also facilitates multitasking, planning, reusing past efforts, and sharing expertise.&lt;br /&gt;
&lt;br /&gt;
http://www.eclipsecon.com/mylyn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Mylyn with Trac support in Eclipse ==&lt;br /&gt;
&lt;br /&gt;
In Eclipse go to Help -&amp;gt; Software Updates -&amp;gt; Find and Install&lt;br /&gt;
Search for New Features to Install&lt;br /&gt;
Select '''Mylin''' and '''Mylyn Extras'''&lt;br /&gt;
Press '''Finnish''' and select '''Automatically select mirror''' in the next dialog.&lt;br /&gt;
Select all of '''Mylyn''' and the '''Mylyn Connector for Trac''' from the '''Mylyn Extras'''.&lt;br /&gt;
Press '''Next''', accept the terms (if you agree), '''Next''' and '''Finnish'''.&lt;br /&gt;
&lt;br /&gt;
== Connect to Rifidi Task Repository ==&lt;br /&gt;
&lt;br /&gt;
Open the team synchronizing perspective in Eclipse:&lt;br /&gt;
Window-&amp;gt; open perspective -&amp;gt; other-&amp;gt; team synchronizing&lt;br /&gt;
[[Image:Mylyn_add_task1.png]]&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-12T12:27:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites. If you do not know, which one to choose, then '''Rifidi (ext)''' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report and/or fix bugs. In that case you can register by clicking register in the upper right corner. After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges.&lt;br /&gt;
As soon as you have your account, you can log in by clicking on '''login''', also in the upper right corner. Enter the credentials you provided earlier in the registration process.&lt;br /&gt;
&lt;br /&gt;
== Report a bug ==&lt;br /&gt;
&lt;br /&gt;
Click on '''New Ticket''' in the upper right corner and fill in the details about the bug you spotted.&lt;br /&gt;
&lt;br /&gt;
== View bug reports ==&lt;br /&gt;
&lt;br /&gt;
Click on '''View Tickets''' in the upper right corner and choose the report that suits you best.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-12T12:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites. If you do not know, which one to choose, then '''Rifidi (ext)''' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report and/or fix bugs. In that case you can register by clicking register in the upper right corner. After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges.&lt;br /&gt;
As soon as you have your account, you can log in by clicking on '''login''', also in the upper right corner. Enter the credentials you provided earlier in the registration process.&lt;br /&gt;
&lt;br /&gt;
== Use TRAC ==&lt;br /&gt;
&lt;br /&gt;
= Report a bug =&lt;br /&gt;
&lt;br /&gt;
Click on '''New Ticket''' in the upper right corner and fill in the details about the bug you spotted.&lt;br /&gt;
&lt;br /&gt;
= View bug reports =&lt;br /&gt;
&lt;br /&gt;
Click on '''View Tickets''' in the upper right corner and choose the report that suits you best.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-12T12:14:41Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Webinterface ==&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites. If you do not know, which one to choose, then ''Rifidi (ext)'' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
== Register and Login ==&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report bugs. In that case you can register by clicking &amp;quot;register&amp;quot; in the upper right corner. After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges.&lt;br /&gt;
As soon as you have your account, you can log in by clicking on &amp;quot;login&amp;quot;, also in the upper right corner. Enter the credentials you provided earlier in the registration process.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Trac</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Trac"/>
				<updated>2008-06-12T12:14:05Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: New page: == TRAC ==  Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overa...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TRAC ==&lt;br /&gt;
&lt;br /&gt;
Trac is a minimalistic approach to web-based management of software projects. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.&lt;br /&gt;
&lt;br /&gt;
http://trac.edgewall.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Webinterface =&lt;br /&gt;
&lt;br /&gt;
You can reach the Rifidi BugTRACker by pointing your browser to https://trac.rifidi.org&lt;br /&gt;
There you can choose from all available bugtracking sites. If you do not know, which one to choose, then ''Rifidi (ext)'' is the right choice for you. Click on the link and you will be redirected.&lt;br /&gt;
If you want to get directly to that site, just add it to your URL: https://trac.rifidi.org/rep-external-trac .&lt;br /&gt;
&lt;br /&gt;
= Register and Login =&lt;br /&gt;
&lt;br /&gt;
You only need an account for TRAC if you want to report bugs. In that case you can register by clicking &amp;quot;register&amp;quot; in the upper right corner. After filling out and submitting the form, you will have your own user account. One of our administrators will check the data you provided and grant you the appropriate privileges.&lt;br /&gt;
As soon as you have your account, you can log in by clicking on &amp;quot;login&amp;quot;, also in the upper right corner. Enter the credentials you provided earlier in the registration process.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Rifidi:loading</id>
		<title>Rifidi:loading</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Rifidi:loading"/>
				<updated>2008-05-02T12:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Create a base container classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem=&lt;br /&gt;
Right now each part of Rifidi (Emulator, Designer, TagStreamer) loads and initializes its objects individually.&amp;lt;br/&amp;gt;&lt;br /&gt;
If one of the parts of Rifidi reuses classes from other parts of Rifidi we currently replicate the functionality for loading and initializing.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aims of this proposal=&lt;br /&gt;
* move loading code into a separate bundle&lt;br /&gt;
* allow the bundle to initialize classes by delegating the initialization to the appropriate parts of Rifidi&lt;br /&gt;
* Use JAXB without adding custom extensions&lt;br /&gt;
* Each part of Rifidi still needs to be able to run separately&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
* JAXB is capable of loading XML files with unresolvable tags.&lt;br /&gt;
** verified: JAXB will skip tags that it doesn't know (Note: @XmlAnyElement annotations might still trip it over)&lt;br /&gt;
=Approach=&lt;br /&gt;
==Create a base container class==&lt;br /&gt;
We need to create a basic Rifidi-container-class that works as the root of our XML file.&amp;lt;br/&amp;gt;&lt;br /&gt;
This container class contains all items that are shared between all parts of rifidi (so far this would be readers and tags).&amp;lt;br/&amp;gt;&lt;br /&gt;
It also contains a list of RifidiAppContainers.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Application specific containers==&lt;br /&gt;
RifidiAppContainer is an abstract class that is used by the different parts of Rifidi to store their specific elements (entities in the case of designer, traveltimes in the case of tagstreamer).&amp;lt;br/&amp;gt;&lt;br /&gt;
==Create an extension point for initalizing application specific classes==&lt;br /&gt;
JAXB will be loading our XML files. If for example we are loading a file in emulator that got saved in designer we will most likely only have the classes from emulator on our classpath. The RifidiAppcontainer-Tag in the xml file will be skipped as the classfile is not on the classpath.&amp;lt;br/&amp;gt;&lt;br /&gt;
If designer was on the classpath we would need to initialize the application specific classes inside the RifidiAppContainer for Designer.&amp;lt;br/&amp;gt;&lt;br /&gt;
To solve this problem I would suggest an extension based approach.&amp;lt;br/&amp;gt;&lt;br /&gt;
===The init extension point===&lt;br /&gt;
The init extension point is provided by our loading bundle.&amp;lt;br/&amp;gt;&lt;br /&gt;
A bundle implementing this extension point will provide the following information:&amp;lt;br/&amp;gt;&lt;br /&gt;
* Name of a service that is used to initialize the classes.&lt;br /&gt;
* A list of classes this extension point is responsible for initializing.&lt;br /&gt;
So each time the loader is asked to load a new file it first loads it and then starts checking what classes got loaded and delegates the initialization to the different bundles.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Rifidi:loading</id>
		<title>Rifidi:loading</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Rifidi:loading"/>
				<updated>2008-05-02T12:19:27Z</updated>
		
		<summary type="html">&lt;p&gt;Tobias: /* Problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem=&lt;br /&gt;
Right now each part of Rifidi (Emulator, Designer, TagStreamer) loads and initializes its objects individually.&amp;lt;br/&amp;gt;&lt;br /&gt;
If one of the parts of Rifidi reuses classes from other parts of Rifidi we currently replicate the functionality for loading and initializing.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aims of this proposal=&lt;br /&gt;
* move loading code into a separate bundle&lt;br /&gt;
* allow the bundle to initialize classes by delegating the initialization to the appropriate parts of Rifidi&lt;br /&gt;
* Use JAXB without adding custom extensions&lt;br /&gt;
* Each part of Rifidi still needs to be able to run separately&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
* JAXB is capable of loading XML files with unresolvable tags.&lt;br /&gt;
** verified: JAXB will skip tags that it doesn't know (Note: @XmlAnyElement annotations might still trip it over)&lt;br /&gt;
=Approach=&lt;br /&gt;
==Create a base container classes==&lt;br /&gt;
We need to create a basic Rifidi-container-class that works as the root of our XML file.&amp;lt;br/&amp;gt;&lt;br /&gt;
This containerclass contains all tags that a re shared between all parts of rifidi (so far this would be readers and tags).&amp;lt;br/&amp;gt;&lt;br /&gt;
It also contains a list of RifidiAppContainers.&amp;lt;br/&amp;gt;&lt;br /&gt;
==Application specific containers==&lt;br /&gt;
RifidiAppContainer is an abstract class that is used by the different parts of Rifidi to store their specific elements (entities in the case of designer, traveltimes in the case of tagstreamer).&amp;lt;br/&amp;gt;&lt;br /&gt;
==Create an extension point for initalizing application specific classes==&lt;br /&gt;
JAXB will be loading our XML files. If for example we are loading a file in emulator that got saved in designer we will most likely only have the classes from emulator on our classpath. The RifidiAppcontainer-Tag in the xml file will be skipped as the classfile is not on the classpath.&amp;lt;br/&amp;gt;&lt;br /&gt;
If designer was on the classpath we would need to initialize the application specific classes inside the RifidiAppContainer for Designer.&amp;lt;br/&amp;gt;&lt;br /&gt;
To solve this problem I would suggest an extension based approach.&amp;lt;br/&amp;gt;&lt;br /&gt;
===The init extension point===&lt;br /&gt;
The init extension point is provided by our loading bundle.&amp;lt;br/&amp;gt;&lt;br /&gt;
A bundle implementing this extension point will provide the following information:&amp;lt;br/&amp;gt;&lt;br /&gt;
* Name of a service that is used to initialize the classes.&lt;br /&gt;
* A list of classes this extension point is responsible for initializing.&lt;br /&gt;
So each time the loader is asked to load a new file it first loads it and then starts checking what classes got loaded and delegates the initialization to the different bundles.&lt;/div&gt;</summary>
		<author><name>Tobias</name></author>	</entry>

	</feed>