All EPX APIs have been designed to be “thread safe” with the exception of three methods in the WorkItem Facade. These three methods are not safe to use within a client that makes use of concurrent threads with shared data:
public Collection getStartingPointList
(SessionProfile sessionProfile, String clientUniqId )
throws WorkItemException;
public void setSelectedStartingPoint
(SessionProfile sessionProfile,
String clientUniqId,
Integer selectedSatrtingPointId )
throws WorkItemException;
public WorkItemVersionExtendedVO createWorkItem
(SessionProfile sessionProfile,
String clientUniqId,
String workItemName,
String workItemdescription )
throws WorkItemException;
All of these methods accept the clientUniqId as a parameter, which is used as a key to a client’s cache of selected starting points and work item name. The cache is designed to aid clients that behave similarly to the EPX TaskManager in that work items are created one at a time, and the required data is obtained in a series of steps in which subsequent steps requires data from the previous step(s). For clients that require thread safety, the getStartingPointList(SessionProfile) method is thread-safe, as is any overload of the createWorkItem() method that does not make use of the clientUniqId parameter.
The setSelectedStartingPoint() method should not be used at all since it exists to populate the cache. Clients must manage their own cache in this scenario if their needs so require.