YAC’s offline capabilities and resulting problems
When you want to use YAC, the first thing you’ll need to do is define connection parameters to be able to connect to the YAWL engine. After that you can choose “Synchronise” in the main menu to open the Synchronize activity. When you press Sync, YAC will try to connect to the YAWL engine, applying data saved in the preferences. Using the username and password of an existing YAWL user, all work items that are available for this user will be downloaded to YAC.
The following graphics shows part of the states that work items can have. Every time an action changes the work item or its state, YAC tries to connect to the YAWL engine to synchronise, which is indicated by the arrows. As you can see, the population of task variables happens after the work item is allocated to a certain resource. This assures that the task variables have the most recent values in the case that work items of the same case are being processed in parallel. Problems arise when YAC has no connection to the YAWL engine: if work items in the offered or the allocated queue are started on the client, they will have no input mappings, since the YAWL engine handles the mapping of variables. There is a conflict between the late assignment of variables in YAWL and the possibility to work in offline mode.
Additionally, this influences other YAC features like the work item map. The work item map uses values for longitude and latitude saved in variables that can be defined by the user. If this information is saved in task variables and the connection is lost when starting the work item, no information other than the net variables will be available, resulting in the loss of location information. Another example is when a workflow has more than one task with each longitude and latitude values. If the information is saved in the net and then mapped to separate tasks, a connection has to be present on start, because the engine is responsible for mapping the variables. Otherwise YAC will not know which set of values belong to which task. Currently YAC searches the task data for the defined keys and uses the last pair found to display the work item on the map or calculate the user's distance to it. There is now a conflict between the late assignment of variables in YAWL and YAC concept of geolocated work items.
At the moment we cannot see a simple solution to these two problems. Any ideas?