|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectwt.services.StandardManager
wt.projmgmt.monitor.StandardProjMonitorService
The StandardProjMonitorService
class contains the standard
implementation of both remotely and server accessible API.
This service is a light-weight service and depends on the wt.projmgmt.StandardProjMgmtService for dispatching and capturing events.
Use the newStandardProjMonitorService
static factory method(s),
not the StandardProjMonitorService
constructor, to construct
instances of this class. Instances must be constructed using the static
factory(s), in order to ensure proper initialization of the instance.
Supported API: true
Extendable: false
ProjMonitorService
,
ProjMonitorServiceSvr
,
ProjMgmtService
,
Serialized FormField Summary | |
private static String |
CLASSNAME
|
private static String |
PROJECT_SCHEDULE_QUEUE_NAME
|
private ScheduleQueue |
projectScheduleQueue
|
private static String |
PROJMGMT_PROPAGATION_QUEUE_NAME
Project Management propagation queue. |
private ProcessingQueue |
projmgmtPropagationQueue
|
private static boolean |
PROPAGATE_STATUS_DESCRIPTION
|
private static int |
PROPAGATION_QUEUE_INTERVAL
|
private static String |
RESOURCE
|
static StandardProjMonitorService |
service
|
private static boolean |
USE_QUEUE
|
private static boolean |
VERBOSE
|
private static boolean |
VERBOSE_INFO
|
private static boolean |
VERBOSE_SCHEDULE
|
Fields inherited from class wt.services.StandardManager |
|
Fields inherited from interface wt.services.Manager |
MANAGER_SERVICE, STARTUP_AUTOMATIC, STARTUP_MANUAL, STATUS_EMERGENCY_SHUTDOWN, STATUS_EMERGENCY_SHUTTING_DOWN, STATUS_SHUTDOWN, STATUS_SHUTDOWN_ERRORS, STATUS_SHUTDOWN_FAILURE, STATUS_SHUTTING_DOWN, STATUS_STARTED, STATUS_STARTED_ERRORS, STATUS_STARTING_UP, STATUS_STARTUP_FAILURE |
Constructor Summary | |
StandardProjMonitorService()
|
Method Summary | |
private boolean |
addComponentWork(ExecutionObject container,
ExecutionObject component)
Returns 'true' is the work from a component should be added to an execution object; 'false' otherwise. |
ExecutionObject |
addDeliverable(ExecutionObject exec_obj,
Deliverable deliverable)
Adds Deliverable to ExecutionObject . |
ExecutionObject |
changeActualFinish(ExecutionObject exec_obj,
Timestamp actual_finish)
Changes the actual finish time for ExecutionObject
objects to the time passed as argument. |
ExecutionObject |
changeActualStart(ExecutionObject exec_obj,
Timestamp actual_start)
Changes the actual start time for t.projmgmt.execution.ExecutionObject
objects to the time passed as argument. |
ExecutionObject |
changeCompletionTime(ExecutionObject exec_obj,
Timestamp new_time)
Changes the completion time of the wt.projmgtm.execution.ExecutionObject
to the time passed as argument. |
ExecutionObject |
changeCost(ExecutionObject exec_obj,
Currency new_total_cost,
Currency new_curr_cost)
Changes the total and current costs of the execution object passed as argument. |
ExecutionObject |
changeDeadline(ExecutionObject exec_obj,
Timestamp new_deadline)
Changes deadline of the ExecutionObject
passed as argument. |
ExecutionObject |
changeDuration(ExecutionObject exec_obj,
TimeToElapse new_duration)
Changes the duration of the ExecutionObject
passed as argument. |
ExecutionObject |
changeEstimatedFinish(ExecutionObject exec_obj,
Timestamp new_finish)
Changes expected finish date for the ExecutionObject . |
ExecutionObject |
changeExecutionState(ExecutionObject exec_obj,
ProjectState new_state)
Changes execution state of the ExecutionObject
passed as argument. |
ExecutionObject |
changeMonitorInfo(ExecutionObject exec_obj,
MonitorInfo new_info)
Changes dynamic information associated with the ExecutionObject
passed as argument. |
ExecutionObject |
changeOwner(ExecutionObject exec_obj,
WTPrincipal new_owner)
Changes the owner of the ExecutionObject
passed as argument. |
ExecutionObject |
changePercentComplete(ExecutionObject exec_obj,
int new_percent,
Work total_work)
Changes the percent complete the ExecutionObject
passed as argument. |
ExecutionObject |
changeRollUpDeliverables(ExecutionObject exec_obj,
boolean roll_up)
Changes the roll up deliverables flag in the ExecutionObject
passed as argument. |
ExecutionObject |
changeStatus(ExecutionObject exec_obj,
ProjectHealthStatus new_status,
String desc)
Changes health status ( ProjectHealthStatus
of execution object passed as argument. |
ExecutionObject |
changeTimePastDeadline(ExecutionObject exec_obj,
TimeToElapse new_time)
Changes the time interval past deadline of the ExecutionObject
passed as argument. |
ExecutionObject |
changeTimeToDeadline(ExecutionObject exec_obj,
TimeToElapse new_time)
Changes the time interval to deadline of the ExecutionObject
passed as argument. |
ExecutionObject |
changeTimeToStart(ExecutionObject exec_obj,
Timestamp new_start)
Changes the time to start of an ExecutionObject
to the time passed as argument. |
private void |
checkClosedAccess(ExecutionObject exec_obj)
Throws an exception user can't change object in the closed state. |
private void |
checkEnabledManual(ExecutionObject exec_obj)
Throws an exception if object is not enabled or mode is not manual. |
private void |
checkEnabledNotClosed(ExecutionObject exec_obj)
Throws an exception if object is not enaled or it's state is closed (COMPLETED or CANCELLED). |
private void |
checkEnabledRunning(ExecutionObject exec_obj)
Throws an exception if the object is not running. |
private void |
checkManualOrRunning(ExecutionObject exec_obj)
Throws an exception if change isn't valid given the object's state. |
private ProjectState |
checkState(Deliverable deliverable,
ProjectState new_state)
|
private ExecutionObject |
completeExecObject(ExecutionObject exec_obj)
Completes execution object. |
void |
completeWorkItem(ProjectWorkItem work_item,
WTPrincipalReference p_ref,
Vector events)
Completes the ProjectWorkItem passed
as argument. |
private MonitorInfo |
computeInfo(ExecutionObject exec_obj,
ExecutionObject skip_object,
boolean recurse)
Compute status of execution object based on its aggregates. |
private Timestamp |
computeInheritedDeadline(ExecutionObject exec_obj)
Computes inherited deadline. |
private boolean |
containsSubscriber(Vector subscribers,
ObjectReference subs_ref)
Returns whether a Vector of subscribers contains a specific subscriber whose reference is passed as argument. |
private ProcessingQueue |
createQueue(String queue_name,
int queue_interval)
Creates, sets and starts processing queues. |
void |
deleteContainedObjects(ProjectPlan plan)
Supported API: false |
private QueryResult |
deleteHolderLinks(ExecutionObject exec_obj)
Deletes holder links and returns an enumeration with the holders of the execution object (deliverable or node); |
private void |
deletePreviousEntries(String method_name,
ExecutionObject exec_obj)
Deletes a previous schedule entry for the method and target object specified. |
private void |
deleteSubscriptions(ExecutionObject exec_obj)
Deletes all subscriptions of the object passed as argument. |
private boolean |
equals(Object obj1,
Object obj2)
Checks for equality when one or both of the objects might be null. |
String |
getConceptualClassname()
Deprecated. |
private Vector |
getContainedLinkTemplates(WfContainer container)
|
private ObjectIdentifier |
getOid(Object obj)
|
private String |
getOidString(Object obj)
|
QueryResult |
getProjectHistory(ProjectPlan plan,
Vector source_objects,
Vector event_types)
Deprecated. |
QueryResult |
getProjectSubscriptions(ProjectPlan plan,
WTUser user)
Returns all ObjectSubscription associated with the
project and user passed as arguments. |
ProcessingQueue |
getPropagationQueue()
Returns project management propagation queue. |
MonitorInfo |
getRolledUpValues(ExecutionObject exec_obj)
Returns dynamic values from contained objects. |
private ScheduleQueue |
getScheduleQueue()
Returns project schedule queue. |
private Timestamp |
getStartTime(Object object)
Returns time to start. |
protected ProjectState |
getStateToPropagate(Deliverable deliverable,
ProjectState new_state,
ProjectState old_state)
Propagates state to deliverables. |
Enumeration |
getSubscribers(ExecutionObject exec_obj,
ProjectEventType event)
Get all subscribers for an event for the ExecutionObject
passed as argument. |
private String |
getSubscriberString(Vector subscribers)
Debugging method that returns a string containing subscribers' names. |
private QuerySpec |
getSubscriptionQS(ProjectPlan plan,
WTUser user,
Class target_class,
String plan_ref_attr_name)
Returns all subscriptions associated with objects of the target class that are contained in the project plan. |
QueryResult |
getSubscriptions(ExecutionObject exec_obj,
WTUser user)
Returns all ObjectSubscription directly associated
with the ExecutionObject and the WTUser passed as arguments. |
private Timestamp |
getTimeToStart(Object object)
Returns time to start. |
boolean |
hasHistory(ExecutionObject exec_obj)
Determines whether the object has events associated with it. |
private boolean |
inThePast(Timestamp time)
Determines if a given time has already past. |
private boolean |
isHeld(Deliverable deliverable)
Returns whether the deliverable is held by a holder. |
boolean |
isManager(ProjectPlan plan,
WTUser user)
Returns 'true' if a wt.or.WTUser is a manager of the project
that owns the ProjectPlan passed as
argument. |
private static boolean |
isManualOrRunning(ExecutionObject exec_obj)
Returns whether the object's plan is in manual mode or the object is RUNNING. |
private boolean |
isPropagateInfo(ExecutionObject exec_obj,
ExecutionObject from_obj,
MonitorInfo old_info,
boolean is_removal)
Determines whether an object change or removal causes propagation. |
private boolean |
isStartComputed(Object object)
Returns start computed flag. |
private boolean |
isUnoverride(ExecutionObject exec_obj)
Determines whether there is a need to possibly un-override attribute roll up flags. |
private void |
markWorkItemsComplete(ProjectActivity activity)
Marks project work items associated with the activity passed as argument as "completed". |
static StandardProjMonitorService |
newStandardProjMonitorService()
Default factory for the class. |
static void |
processDeadline(ObjectIdentifier exec_obj_id,
Timestamp time)
Executes code associated with arrival of a deadline on an execution object. |
static void |
processTimePastDeadline(ObjectIdentifier exec_obj_id,
Timestamp time)
Executes code associated with missing a deadline on an execution object by some time. |
static void |
processTimeToDeadline(ObjectIdentifier exec_obj_id,
Timestamp time)
Executes code associated with arrival the nearing of a deadline on an execution object. |
void |
propagateChange(ExecutionObject exec_obj,
MonitorInfo old_info)
Propagates to containing objects a change in an execution object. |
private void |
propagateDeadline(ExecutionObject exec_obj,
Timestamp deadline)
Propagates deadline to dependent objects. |
static void |
propagateDeadline(ObjectIdentifier exec_obj_id,
Timestamp deadline)
Propagates deadline to dependent objects. |
void |
propagateDeletion(ExecutionObject exec_obj)
Supported API: false |
private void |
propagateInfo(ExecutionObject exec_obj,
MonitorInfo old_info)
Propagates information up. |
static void |
propagateInfo(ObjectIdentifier exec_obj_id,
MonitorInfo old_info)
Propagates information up |
private void |
propagateNewDeadline(ExecutionObject exec_obj,
Timestamp deadline)
Propagates deadline to dependent objects. |
void |
propagateNewState(ExecutionObject exec_obj,
ProjectState old_state)
Supported API: false |
void |
propagateRemoval(ProjectNode node)
Propagates dynamic information changed when a node is removed from a container as a result of a container change operation. |
private void |
propagateState(ExecutionObject exec_obj,
ProjectState old_state)
Propagates state change to dependent objects. |
static void |
propagateState(ObjectIdentifier exec_obj_id,
ProjectState old_state)
Propagates state change to dependent objects. |
ProjectNode |
propagateStateChange(ProjectNode node,
WfTransition transition,
ProjectState old_state)
Performs propagation tasks associated with state changes. |
void |
propagateStatusAfterRemoval(ExecutionObject exec_obj)
Supported API: false |
Project2 |
propagateToProject2(ProjectPlan plan)
Propagate changes from the specified ProjectPlan
to its associated Project2 (if it has one). |
void |
queueDeadline(ExecutionObject exec_obj)
Queues deadline so that when it arrives, the event is notified. |
void |
queueTimePastDeadline(ExecutionObject exec_obj)
Queues deadline so that when the deadline is approaching, the event is notified. |
void |
queueTimeToDeadline(ExecutionObject exec_obj)
Queues deadline so that when the deadline is approaching, the event is notified. |
private void |
queueWorkComplete(ProjectWorkItem work_item,
WTPrincipalReference p_ref,
Vector events)
Queue work complete: this has to be queued so it is guaranteed to work after the propagation of the percent complete |
DeliverableHolder |
removeDeliverable(DeliverableHolder holder,
Deliverable deliverable)
Removes deliverable to execution object. |
private ProjectNode |
removeViolatedDependencies(ProjectNode node)
Removes all dependencies that node has for which the predecessor is not in the COMPLETED state. |
private void |
removeWorkItems(ProjectActivity activity)
Remove project work items associated with the activity passed as argument. |
ExecutionObject |
rollUpChangeEstimatedFinish(ExecutionObject exec_obj,
Timestamp new_finish)
|
WfContainer |
rollUpTimeToStart(WfContainer container)
Updates the time to start of a WfContainer
based on its contained objects if its "start computed" flag is true. |
ExecutionObject |
rollUpValues(ExecutionObject exec_obj)
Computes and sets dynamic values of the execution object. |
ExecutionObject |
rollUpValues(ExecutionObject exec_obj,
ExecutionConfiguration roll_up_attrs)
Computes and sets dynamic values of the execution object. |
private boolean |
same(Object o1,
Object o2)
Like equals but handles null objects. |
private void |
setAttributes(ExecutionObject from,
ExecutionObject to)
Synchronizes associated deliverable/activity is "link deliverables' is selected. |
private String |
showFlags(ExecutionObject exec_obj)
Queue work complete: this has to be queued so it is guaranteed to work after the propagation of the percent complete |
private String |
showVector(List objs)
Returns a String contained the list of persistables in the Vector. |
void |
subscribe(ExecutionObject exec_obj,
ProjectEventType event,
Vector subscribers,
String msg)
Create ObjectSubscription objects for an event for
a given object. |
void |
subscribe(ExecutionObject exec_obj,
ProjectEventType event,
Vector subscribers,
String msg,
String attr_name,
String attr_value,
String key)
Create ObjectSubscription objects for an event for
a given object. |
(package private) void |
synchDeliverable(ExecutionObject exec_obj)
Synchronizes associated deliverable/activity is "link deliverables' is selected. |
private ExecutionObject |
unoverride(ExecutionObject exec_obj)
Unoverrides status, percent complete, and estimated finish roll up flags. |
void |
unsubscribe(ExecutionObject exec_obj,
ProjectEventType event,
Vector subscribers)
Delete ObjectSubscription for an event and a given
object. |
void |
unsubscribe(ExecutionObject exec_obj,
ProjectEventType event,
Vector subscribers,
String msg,
String attr_name,
String attr_value,
String key)
Create ObjectSubscription objects for an event for
a given object. |
static void |
workComplete(ObjectIdentifier work_item_id,
WTPrincipalReference p_ref,
Vector events)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
private static final String RESOURCE
private static final String CLASSNAME
private static final String PROJECT_SCHEDULE_QUEUE_NAME
private ScheduleQueue projectScheduleQueue
private static final String PROJMGMT_PROPAGATION_QUEUE_NAME
private ProcessingQueue projmgmtPropagationQueue
private static final boolean USE_QUEUE
private static final int PROPAGATION_QUEUE_INTERVAL
public static final StandardProjMonitorService service
private static final boolean VERBOSE
private static final boolean VERBOSE_INFO
private static final boolean VERBOSE_SCHEDULE
private static final boolean PROPAGATE_STATUS_DESCRIPTION
Constructor Detail |
public StandardProjMonitorService()
Method Detail |
public String getConceptualClassname()
getConceptualClassname
in interface NetFactor
getConceptualClassname
in class StandardManager
public static void processDeadline(ObjectIdentifier exec_obj_id, Timestamp time) throws WTException
exec_obj_id
- time
-
WTException
public static void processTimeToDeadline(ObjectIdentifier exec_obj_id, Timestamp time) throws WTException
exec_obj_id
- time
-
WTException
public static void processTimePastDeadline(ObjectIdentifier exec_obj_id, Timestamp time) throws WTException
exec_obj_id
- time
-
WTException
public static StandardProjMonitorService newStandardProjMonitorService() throws WTException
WTException
public ExecutionObject addDeliverable(ExecutionObject exec_obj, Deliverable deliverable) throws WTException
Deliverable
to ExecutionObject
.
A deliverable can belong to at most one ProjectActivity
,
so if the execution object is an activity and the deliverable already
belongs to an activity, the deliverable owner is replaced. Propagates
deliverable status, if necessary.
addDeliverable
in interface ProjMonitorService
exec_obj
- deliverable
-
WTException
public ExecutionObject changeActualFinish(ExecutionObject exec_obj, Timestamp actual_finish) throws WTException
ExecutionObject
objects to the time passed as argument. The new actual time is aligned
before it is set. The ability to set actual finish is supported only
for the manual execution mode. If the mode is not manual, then an
exception is thrown. This operation is restricted to the owner of
the object or the project manager. An authorization exception is
thrown if this is nt the case. Changing the finish time of an object
is propagated to all objects whose schedule depend on the modified
object and have not started yet. If a following, dependent object
has already started, then the start and finish dates for that dependent
activity are not adjusted.
Completing objects
If the object has not completed, providing a non-null time has
the effect of completing it. As a consequence, the % complete is automatically
set to 100%.
Supported API: false
changeActualFinish
in interface ProjMonitorService
exec_obj
- actual_finish
-
WTException
public ExecutionObject changeActualStart(ExecutionObject exec_obj, Timestamp actual_start) throws WTException
t.projmgmt.execution.ExecutionObject
objects to the time passed as argument. The new actual time is aligned
before it is set. The ability to set actual start is supported only
for the manual execution mode. If the mode is not manual, then an
exception is thrown. This operation is restricted to the owner of
the object or the project manager. An uthorization exception is thrown
if this is not the case. For objects that are not completed, the estimated
finish is updated based on the object's duration. This new finish
is propagated to all dependent objects that have not started yet.
If a following, dependent object has already started, then the start
and finish dates for that dependent activity are not adjusted. Changing
the actual start for completed objects changes does not change the
actual finish. An exception is thrown when the user attempts to change
the actual start to a time after the actual finish.
Starting objects
If the object has not started, providing a non-null start time has the effect of starting it, even though the % complete may be greater than zero.
Unstarting objects
If the time passed as argument is 'null' the object changes to
a 'non-started' state ("unstarted").This has the following side-effects:
% complete, status and other dynamic information are reset and actual
finish is reset (for completed objects).
Supported API: false
changeActualStart
in interface ProjMonitorService
exec_obj
- actual_start
-
WTException
public ExecutionObject changeCompletionTime(ExecutionObject exec_obj, Timestamp new_time) throws WTException
wt.projmgtm.execution.ExecutionObject
to the time passed as argument. A ProjectManagementException
is thrown in the following cases.
changeCompletionTime
in interface ProjMonitorService
exec_obj
- new_time
-
WTException
wt.projmgmt.ProjectState
public ExecutionObject changeCost(ExecutionObject exec_obj, Currency new_total_cost, Currency new_curr_cost) throws WTException
changeCost
in interface ProjMonitorService
exec_obj
- new_total_cost
- new_curr_cost
-
WTException
public ExecutionObject changeDeadline(ExecutionObject exec_obj, Timestamp new_deadline) throws WTException
ExecutionObject
passed as argument. The deadline is propagated to contained objects
as an "inherited deadline." Schedules a DEADLINE event to be generated
at the deadline if the object is still running at this time. If there
are subscribers to this event and to this object, they will receive
notification that the deadline has passed.
changeDeadline
in interface ProjMonitorService
exec_obj
- new_deadline
-
WTException
public ExecutionObject changeDuration(ExecutionObject exec_obj, TimeToElapse new_duration) throws WTException
ExecutionObject
passed as argument. As a consequence of this operation, the estimated
finished time of the object is updated and set to "overriden." Propagates
scheduling changes to holder objects.
changeDuration
in interface ProjMonitorService
exec_obj
- new_duration
-
WTException
public ExecutionObject changeEstimatedFinish(ExecutionObject exec_obj, Timestamp new_finish) throws WTException
ExecutionObject
.
As a consequence of this operation, the duration of the object is
updated and set to "overriden." Propagates scheduling changes to holder
objects.
changeEstimatedFinish
in interface ProjMonitorService
exec_obj
- new_finish
-
WTException
public ExecutionObject changeExecutionState(ExecutionObject exec_obj, ProjectState new_state) throws WTException
ExecutionObject
passed as argument. Changing the execution state of objects may cause
scheduling and other changes. For example, starting may change the
estimated finish; completing sets % complete to 100. These changes
are propagated to nodes in the plan that are dependent on the node
that changed state.
changeExecutionState
in interface ProjMonitorService
exec_obj
- new_state
-
WTException
public ExecutionObject changeMonitorInfo(ExecutionObject exec_obj, MonitorInfo new_info) throws WTException
ExecutionObject
passed as argument. This dynamic information is contained in a MonitorInfo
object and consists of status (ProjectHealthStatus
), percent complete, estimated
finish date, performed work, and total work. The advantage of using
this API over updating each piece of information separately is that
all the information is propagated together, reducing the number of
propagation threads.
changeMonitorInfo
in interface ProjMonitorService
exec_obj
- new_info
-
WTException
public ExecutionObject changeOwner(ExecutionObject exec_obj, WTPrincipal new_owner) throws WTException
ExecutionObject
passed as argument. Existing owner subscriptions are transferred
to new owner.
changeOwner
in interface ProjMonitorService
exec_obj
- new_owner
-
WTException
public ExecutionObject changePercentComplete(ExecutionObject exec_obj, int new_percent, Work total_work) throws WTException
ExecutionObject
passed as argument. If the final percent is 100%, this causes the
object to change to the COMPLETED state. The percent change is propagated
to all other execution objects that depend on the one passed as argument.
The percent complete of an execution object is related to the performed
and total work through the formula (class invariant):
percentComplete = performedWork / totalWork
Also the performed work can't be greater than the total work.
performedWork <= totalWorkThis means that changing the percent complete necessarily changes the performed work. In case the total work is zero, performed work is necessarily also zero. In this case the convention is to set percent complete to 100. Note also that when propagating percent complete, to holder objects it is the performed work and total work that are actually propagated.
changePercentComplete
in interface ProjMonitorService
exec_obj
- new_percent
- total_work
-
WTException
public ExecutionObject changeRollUpDeliverables(ExecutionObject exec_obj, boolean roll_up) throws WTException
ExecutionObject
passed as argument. If the flag is set to 'true' then the dynamic
values of the plan are obtained from the deliverables rather than
from the activities. Although one can pass an execution object as
argument, it is preferable to pass a ProjectPlan
.
Otherwise one may get inconsistent values throughout the plan. NoteOnly
the dynamic values that are not overridden are actually rolled up.
changeRollUpDeliverables
in interface ProjMonitorService
exec_obj
- roll_up
-
WTException
public ExecutionObject changeStatus(ExecutionObject exec_obj, ProjectHealthStatus new_status, String desc) throws WTException
ProjectHealthStatus
of execution object passed as argument. A status description can
be optionally provided. The status change is propagated to all other
execution objects that depend on the one passed as argument whose
status values are not overridden.
changeStatus
in interface ProjMonitorService
exec_obj
- new_status
- desc
-
WTException
public ExecutionObject changeTimePastDeadline(ExecutionObject exec_obj, TimeToElapse new_time) throws WTException
ExecutionObject
passed as argument. Schedules a TIME_PAST_DEADLINE event to be generated
at a time equals to deadline + new_time
if the object
is still running at this time. If there are subscribers to this event
and to this object, they will receive notification that the deadline
has passed.
changeTimePastDeadline
in interface ProjMonitorService
exec_obj
- new_time
-
WTException
public ExecutionObject changeTimeToDeadline(ExecutionObject exec_obj, TimeToElapse new_time) throws WTException
ExecutionObject
passed as argument. Schedules a TIME_TO_DEADLINE event to be generated
at a time equals to deadline - new_time
if the object
is still running at this time. If there are subscribers to this event
and to this object, they will receive notification that the deadline
is approaching.
changeTimeToDeadline
in interface ProjMonitorService
exec_obj
- new_time
-
WTException
public ExecutionObject changeTimeToStart(ExecutionObject exec_obj, Timestamp new_start) throws WTException
ExecutionObject
to the time passed as argument. If the time passed as argument is
'null' the time is set to the earliest possible date.
The state of the object must be ProjectState.DEFINED
(that is, not started yet) otherwise an exception is thrown.
Also an exception is thrown if a date constraint is violated (for example, start the object before the time a predecessor node finishes).
As a consequence of this method, if the time is not null, the "start computed" flag is set to 'false' indicating that the time to start is explicitly set. Otherwise it is set to 'true'.
The new start time is propagated to the container of the object if there are no predecessors that belong to the same container. Also new estimated finish is computed and propagated to successor nodes and to the container if there are no successor nodes that belong to the same container.
Note:This method doesn't apply to deliverables and project
work items.
Supported API: true
changeTimeToStart
in interface ProjMonitorService
exec_obj
- new_start
-
WTException
ProjectState
,
ExecutionObject
,
ProjectNode
public void completeWorkItem(ProjectWorkItem work_item, WTPrincipalReference p_ref, Vector events) throws WTException
ProjectWorkItem
passed
as argument. The user assigned to the work item and a list of events
should be passed as well. For project management the list should
be empty. Percent complete is set to 100 and this and other dynamic
values are propagated to the ProjectActivity
that holds the item.
completeWorkItem
in interface ProjMonitorService
work_item
- p_ref
- events
-
WTException
public QueryResult getProjectHistory(ProjectPlan plan, Vector source_objects, Vector event_types) throws WTException
getProjectHistory
in interface ProjMonitorService
plan
- source_objects
- event_types
-
WTException
public QueryResult getProjectSubscriptions(ProjectPlan plan, WTUser user) throws WTException
ObjectSubscription
associated with the
project and user passed as arguments. The subscriptions may be associated
directly with the plan or to one of its contained nodes (ProjectNode
).
If user is 'null' all plan subscriptions are returned.
getProjectSubscriptions
in interface ProjMonitorService
plan
- user
-
WTException
public MonitorInfo getRolledUpValues(ExecutionObject exec_obj) throws WTException
ProjectActivity
or a Milestone
or a SummaryActivity
or a ProjectPlan
, otherwise a runtime
exception is thrown.
getRolledUpValues
in interface ProjMonitorService
exec_obj
-
WTException
public Enumeration getSubscribers(ExecutionObject exec_obj, ProjectEventType event) throws WTException
ExecutionObject
passed as argument. The list of subscribers is returned as an enumeration.
getSubscribers
in interface ProjMonitorService
exec_obj
- event
-
WTException
public QueryResult getSubscriptions(ExecutionObject exec_obj, WTUser user) throws WTException
ObjectSubscription
directly associated
with the ExecutionObject
and the WTUser
passed as arguments. If user is null all object's
subscriptions are returned.
getSubscriptions
in interface ProjMonitorService
exec_obj
- user
-
WTException
public boolean isManager(ProjectPlan plan, WTUser user) throws WTException
wt.or.WTUser
is a manager of the project
that owns the ProjectPlan
passed as
argument. Returns 'false' otherwise.
isManager
in interface ProjMonitorService
plan
- user
-
WTException
public DeliverableHolder removeDeliverable(DeliverableHolder holder, Deliverable deliverable) throws WTException
removeDeliverable
in interface ProjMonitorService
holder
- deliverable
-
WTException
public ExecutionObject rollUpValues(ExecutionObject exec_obj, ExecutionConfiguration roll_up_attrs) throws WTException
The method allows the rolling up of specific attributes. This is
accomplished by setting appropriate attributes in the ExecutionConfiguration
passed as argument. For example, to roll up just the status and work
of an activity, while keeping all other values the same (whether rolled
up or overridden), use the following steps.
ExecutionConfiguration config = new ExecutionConfiguration (0L);
config.setRollUpStatus (true);
config.setRollUpWork (true);
activity = (ProjectActivity) ProjMonitorHelper.service.rollUpValues
(activity, config);
Notes
rollUpValues
in interface ProjMonitorService
exec_obj
- roll_up_attrs
-
WTException
public ExecutionObject rollUpValues(ExecutionObject exec_obj) throws WTException
This method differs from the othe rollUpValues in 2 additional
aspects. First all dynamic values are recomputed and, second, the
method recursively computes the dynamic values of the contained objects.
This method can be used to make sure that all dynamic values are
consistent. In this aspect it is particularly useful in batch operations,
when all propagation made only once, after all changes are performed.
Supported API: false
rollUpValues
in interface ProjMonitorService
exec_obj
-
WTException
public void subscribe(ExecutionObject exec_obj, ProjectEventType event, Vector subscribers, String msg) throws WTException
ObjectSubscription
objects for an event for
a given object. The list of subscribers is passed as a Vector, where
each element can either be a principal or a reference to a principal.
subscribe
in interface ProjMonitorService
exec_obj
- event
- subscribers
- msg
-
WTException
public void unsubscribe(ExecutionObject exec_obj, ProjectEventType event, Vector subscribers) throws WTException
ObjectSubscription
for an event and a given
object. The list of subscribers is passed as a Vector, where each
element can either be a principal or a reference to a principal.
unsubscribe
in interface ProjMonitorService
exec_obj
- event
- subscribers
-
WTException
public void subscribe(ExecutionObject exec_obj, ProjectEventType event, Vector subscribers, String msg, String attr_name, String attr_value, String key) throws WTException
ObjectSubscription
objects for an event for
a given object. The list of subscribers is passed as a Vector, where
each element can either be a principal or a reference to a principal.
This is used with Owner / PM Subscriptions where atribute name/value
and key is needed
subscribe
in interface ProjMonitorService
exec_obj
- event
- subscribers
- msg
- attr_name
- attr_value
- key
-
WTException
public void unsubscribe(ExecutionObject exec_obj, ProjectEventType event, Vector subscribers, String msg, String attr_name, String attr_value, String key) throws WTException
ObjectSubscription
objects for an event for
a given object. The list of subscribers is passed as a Vector, where
each element can either be a principal or a reference to a principal.
This is used with Owner / PM Subscriptions where atribute name/value
and key is needed
unsubscribe
in interface ProjMonitorService
exec_obj
- event
- subscribers
- msg
- attr_name
- attr_value
- key
-
WTException
public void propagateDeletion(ExecutionObject exec_obj) throws WTException
propagateDeletion
in interface ProjMonitorServiceSvr
exec_obj
-
WTException
public void deleteContainedObjects(ProjectPlan plan) throws WTException
deleteContainedObjects
in interface ProjMonitorServiceSvr
plan
-
WTException
public void queueDeadline(ExecutionObject exec_obj) throws WTException
queueDeadline
in interface ProjMonitorServiceSvr
exec_obj
-
WTException
public void queueTimeToDeadline(ExecutionObject exec_obj) throws WTException
queueTimeToDeadline
in interface ProjMonitorServiceSvr
exec_obj
-
WTException
public void queueTimePastDeadline(ExecutionObject exec_obj) throws WTException
queueTimePastDeadline
in interface ProjMonitorServiceSvr
exec_obj
-
WTException
public boolean hasHistory(ExecutionObject exec_obj) throws WTException
hasHistory
in interface ProjMonitorServiceSvr
exec_obj
-
WTException
public void propagateChange(ExecutionObject exec_obj, MonitorInfo old_info) throws WTException
propagateChange
in interface ProjMonitorServiceSvr
exec_obj
- old_info
-
WTException
public void propagateStatusAfterRemoval(ExecutionObject exec_obj) throws WTException
propagateStatusAfterRemoval
in interface ProjMonitorServiceSvr
exec_obj
-
WTException
public void propagateNewState(ExecutionObject exec_obj, ProjectState old_state) throws WTException, WTPropertyVetoException
propagateNewState
in interface ProjMonitorServiceSvr
exec_obj
- old_state
-
WTException
WTPropertyVetoException
public Project2 propagateToProject2(ProjectPlan plan) throws WTException
ProjectPlan
to its associated Project2
(if it has one).
The following values are propagated:
propagateToProject2
in interface ProjMonitorServiceSvr
plan
-
WTException
public ProjectNode propagateStateChange(ProjectNode node, WfTransition transition, ProjectState old_state) throws WTException
propagateStateChange
in interface ProjMonitorServiceSvr
node
- transition
- old_state
-
WTException
public void propagateRemoval(ProjectNode node) throws WTException
propagateRemoval
in interface ProjMonitorServiceSvr
node
-
WTException
public ProcessingQueue getPropagationQueue() throws WTException
getPropagationQueue
in interface ProjMonitorServiceSvr
WTException
public WfContainer rollUpTimeToStart(WfContainer container) throws WTException
WfContainer
based on its contained objects if its "start computed" flag is true.
For the project management containers, that is, ProjectPlan
and SummaryActivity
, the time to start
is computed from the contained project nodes.
Note that this method does not recompute the rightful time
to start. It only takes into consideration constraints based on the
contained nodes and is intended to be used after changes in the dependency
relationships in the contained objects.
Supported API: false
rollUpTimeToStart
in interface ProjMonitorServiceSvr
container
-
WTException
private ExecutionObject completeExecObject(ExecutionObject exec_obj) throws WTException
WTException
private void markWorkItemsComplete(ProjectActivity activity) throws WTException
WTException
private void removeWorkItems(ProjectActivity activity) throws WTException
WTException
private boolean isUnoverride(ExecutionObject exec_obj)
private ExecutionObject unoverride(ExecutionObject exec_obj)
private String showFlags(ExecutionObject exec_obj)
private void queueWorkComplete(ProjectWorkItem work_item, WTPrincipalReference p_ref, Vector events) throws WTException
WTException
private void checkClosedAccess(ExecutionObject exec_obj) throws WTException
WTException
private static boolean isManualOrRunning(ExecutionObject exec_obj) throws WTException
WTException
private void checkManualOrRunning(ExecutionObject exec_obj) throws WTException
WTException
private void checkEnabledNotClosed(ExecutionObject exec_obj) throws WTException
WTException
private void checkEnabledManual(ExecutionObject exec_obj) throws WTException, WTRuntimeException
WTException
WTRuntimeException
private void checkEnabledRunning(ExecutionObject exec_obj) throws WTException
WTException
private QueryResult deleteHolderLinks(ExecutionObject exec_obj) throws WTException
WTException
private boolean isPropagateInfo(ExecutionObject exec_obj, ExecutionObject from_obj, MonitorInfo old_info, boolean is_removal) throws WTException
WTException
private MonitorInfo computeInfo(ExecutionObject exec_obj, ExecutionObject skip_object, boolean recurse) throws WTException
WTException
public static void propagateState(ObjectIdentifier exec_obj_id, ProjectState old_state) throws WTException, WTPropertyVetoException
WTException
WTPropertyVetoException
private void propagateState(ExecutionObject exec_obj, ProjectState old_state) throws WTException, WTPropertyVetoException
WTException
WTPropertyVetoException
public static void propagateInfo(ObjectIdentifier exec_obj_id, MonitorInfo old_info) throws WTException
WTException
private void propagateInfo(ExecutionObject exec_obj, MonitorInfo old_info) throws WTException
WTException
protected ProjectState getStateToPropagate(Deliverable deliverable, ProjectState new_state, ProjectState old_state) throws WTException, WTPropertyVetoException
--------------------------------------------------------------- DEFINED RUNNING SUSPENDED COMPLETED CANCELLED --------------------------------------------------------------- DEFINED - OK n/a n/a n/a RUNNING n/a - check check check SUSPENDED n/a OK - check check COMPLETED OK OK n/a - n/a CANCELLED OK OK n/a n/a - ---------------------------------------------------------------Where:
WTException
WTPropertyVetoException
private ProjectState checkState(Deliverable deliverable, ProjectState new_state) throws WTException
WTException
private void propagateNewDeadline(ExecutionObject exec_obj, Timestamp deadline) throws WTException, WTPropertyVetoException
WTException
WTPropertyVetoException
public static void propagateDeadline(ObjectIdentifier exec_obj_id, Timestamp deadline) throws WTException, WTPropertyVetoException
WTException
WTPropertyVetoException
private void propagateDeadline(ExecutionObject exec_obj, Timestamp deadline) throws WTException, WTPropertyVetoException
WTException
WTPropertyVetoException
private ProjectNode removeViolatedDependencies(ProjectNode node) throws WTException
WTException
private Timestamp computeInheritedDeadline(ExecutionObject exec_obj) throws WTException
WTException
private ScheduleQueue getScheduleQueue() throws WTException
WTException
private boolean containsSubscriber(Vector subscribers, ObjectReference subs_ref) throws WTException
WTException
private void deleteSubscriptions(ExecutionObject exec_obj) throws WTException
WTException
private boolean isHeld(Deliverable deliverable) throws WTException
WTException
private String getSubscriberString(Vector subscribers) throws WTException
WTException
private QuerySpec getSubscriptionQS(ProjectPlan plan, WTUser user, Class target_class, String plan_ref_attr_name) throws WTException
WTException
private ProcessingQueue createQueue(String queue_name, int queue_interval) throws WTException
queue_name
- - queue namequeue_interval
- - queue polling interval
WTException
public static void workComplete(ObjectIdentifier work_item_id, WTPrincipalReference p_ref, Vector events) throws WTException
WTException
private void deletePreviousEntries(String method_name, ExecutionObject exec_obj) throws WTException
This is to prevent multiple triggering of the same method.
WTException
private boolean addComponentWork(ExecutionObject container, ExecutionObject component) throws WTException
---------------------------------------------------------------------- container roll up* returns true for ---------------------------------------------------------------------- milestone - Deliverable activity - ProjectWorkItem summary false ProjectActivity, ProjectProxy, SummaryActivity summary true Milestone, SummaryActivity plan false ProjectActivity, ProjectProxy, SummaryActivity plan true Milestone, SummaryActivity, Deliverable proxy true ProjectPlan ----------------------------------------------------------------------(*) where roll up is true if container.getPlan().getConfiguration ().isRollUpDeliverables () is true.
WTException
private boolean inThePast(Timestamp time)
private String showVector(List objs)
private String getOidString(Object obj)
private Vector getContainedLinkTemplates(WfContainer container) throws WTException
WTException
private boolean equals(Object obj1, Object obj2)
void synchDeliverable(ExecutionObject exec_obj) throws WTException
WTException
private void setAttributes(ExecutionObject from, ExecutionObject to) throws WTException
WTException
public ExecutionObject rollUpChangeEstimatedFinish(ExecutionObject exec_obj, Timestamp new_finish) throws WTException
WTException
private boolean same(Object o1, Object o2)
private ObjectIdentifier getOid(Object obj)
private boolean isStartComputed(Object object)
private Timestamp getTimeToStart(Object object)
private Timestamp getStartTime(Object object)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |