Reassign Life cycles within a workflow
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Reassign Life cycles within a workflow
Hi,
I have a workflow that requires that the life cycle of an object be reassigned in some instances. Currently I have a task that gets sent to the relevant user notifying them that they must reassing the life cycle of the object. Is there a way that I could use a robot in the flow that when a particular routing is fired then the pbo's lifecycle is reassigned?
Thanks.
Solved! Go to Solution.
- Labels:
-
Other
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
From screen shot it seems like you want to restart same workflow process i.e. set the state of POB to open so workflow will be trigger, in that case you can use set state robot to change state to Open (See screen shot)
If you want to reassign any other lifecycle then you can add below line
- wt.lifecycle.LifeCycleHelper.service.reassign(primaryBusinessObject, LifeCycleHelper.service.getLifeCycleTemplateReference(" UR LIFECYCLE Name "));
You can read the documentation related to API from below file
[Windchill_Home]/codebase/wt/clients/library/api/wt/lifecycle/LifeCycleService.html
Below are few method for reassigning lifecycle
- 1. LifeCycleManaged reassign(LifeCycleManaged object, LifeCycleTemplateReference lctRef, WTContainerRef context) throws WTException, LifeCycleException
Parameters:
object - the LifeCycleManaged object that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
context - the container where the objects associated workflow processes will be created
- 2. LifeCycleManaged reassign(LifeCycleManaged object, LifeCycleTemplateReference lctRef, WTContainerRef context, String comments) throws WTException, LifeCycleException
Parameters:
object - the LifeCycleManaged object that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
context - the container where the objects associated workflow processes will be created
comments - Notes or comments for the lifecycle operation. Can be null.
- 3. LifeCycleManaged reassign(LifeCycleManaged object, LifeCycleTemplateReference lctRef) throws WTException, LifeCycleException
Parameters:
object - the LifeCycleManaged object that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
- 4. reassign(WTList list, wt.lifecycle.LifeCycleTemplateReference lctRef, WTContainerRef context, State state)
Parameters:
list - the WTList of LifeCycleManaged objects that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
context - The container which the object resides in.
state - The state the objects in the lifecycle should be assigned when reassigned to the lifecycle.
Also make sure that end flag will have only one input otherwise workflow process will keep running ( See screenshot ).
Hope this helps !!!
Thanks,
Shreyas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Use wt.lifecycle.LifeCycleHelper.service.reassign(WTDoc, newLFRef);
This will reassign new LC
Regards
Mani.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi,
@Igor, thanks but, i don't want to set the state, I want to reassign the LC. meaning all nodes are reset. Currently this can be done via the actions menu on a WTObject that is associated to a LC.
@ Mani, please explain the expression a bit for me. I entered it into an expression robot and I get the following 2 errors. I gather I need to create variable in my WF. What I have is subprocesses running based on the manufacturing plant selected. When the subs are done they leave the pbo in one of two states. Namely; Reopened or Completed. Now, I could't add a task to request a user to perform the reassign action, but I would rather have the system control that for obvious reasins of efficiency. Hence I want to reassign the LC and restart the wf automatically.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
From screen shot it seems like you want to restart same workflow process i.e. set the state of POB to open so workflow will be trigger, in that case you can use set state robot to change state to Open (See screen shot)
If you want to reassign any other lifecycle then you can add below line
- wt.lifecycle.LifeCycleHelper.service.reassign(primaryBusinessObject, LifeCycleHelper.service.getLifeCycleTemplateReference(" UR LIFECYCLE Name "));
You can read the documentation related to API from below file
[Windchill_Home]/codebase/wt/clients/library/api/wt/lifecycle/LifeCycleService.html
Below are few method for reassigning lifecycle
- 1. LifeCycleManaged reassign(LifeCycleManaged object, LifeCycleTemplateReference lctRef, WTContainerRef context) throws WTException, LifeCycleException
Parameters:
object - the LifeCycleManaged object that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
context - the container where the objects associated workflow processes will be created
- 2. LifeCycleManaged reassign(LifeCycleManaged object, LifeCycleTemplateReference lctRef, WTContainerRef context, String comments) throws WTException, LifeCycleException
Parameters:
object - the LifeCycleManaged object that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
context - the container where the objects associated workflow processes will be created
comments - Notes or comments for the lifecycle operation. Can be null.
- 3. LifeCycleManaged reassign(LifeCycleManaged object, LifeCycleTemplateReference lctRef) throws WTException, LifeCycleException
Parameters:
object - the LifeCycleManaged object that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
- 4. reassign(WTList list, wt.lifecycle.LifeCycleTemplateReference lctRef, WTContainerRef context, State state)
Parameters:
list - the WTList of LifeCycleManaged objects that should be assigned to a new life cycle
lctRef - a reference to a LifeCycleTemplate, the LifeCycleTemplate that the object should be reassigned to
context - The container which the object resides in.
state - The state the objects in the lifecycle should be assigned when reassigned to the lifecycle.
Also make sure that end flag will have only one input otherwise workflow process will keep running ( See screenshot ).
Hope this helps !!!
Thanks,
Shreyas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi,
you can use Method Robot and set Robot Type as "Set State" - then select Specific State
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi Shreyas,
Thanks for your response, There one challenge, when the wf restart the assignee role resolves to wcadmin and not the initial creator of the object. how can I counter this and secondly the conditional connector I have before the last step works for the Reopen route and not the Completed route. What is wrong with my expression? See attached jpeg.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi Tshepo,
Write result = "Completed" instead of result="Complete" this values are case sensetive also.
Thanks,
Kaushik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
For reassign purpose once I wrote a method (It works for part only you have to modify it )which you can call from workflow with proper inputs.
/**
* Reassigning lifecycle template of the given WTPart object.
*
* @param part
* the WTPart need to be reassigned
*
* @param lifecycleTemplateName
* the LifeCycleTemplate name in which the given WTPart
* will reassign
*
* @exception LifeCycleException
* throws {@link LifeCycleException}
*
* @exception WTException
* throws {@link WTException}
*
* @exception IOException
* throws {@link IOException} by readTGSProperties method if
* the file TGS.properties can't be found
*/
public static void reassignLifeCycle(WTPart part,
String lifecycleTemplateName) throws LifeCycleException,
WTException, IOException {
LOG.debug("The Part :- " + part.getNumber() + " ," + part.getName());
/*
* Getting the LifeCycleTeplateReference from the given Life Cycle
* Template name
*/
final LifeCycleTemplateReference lcRef = LifeCycleHelper.service
.getLifeCycleTemplateReference("name of the LC", part
.getContainerReference());
LOG.debug("The Life Cycle Template Name :- " + lifecycleTemplateName);
if (lcRef == null) {
throw new WTException("Life Cycle Not Found");
} else if (WorkInProgressHelper.isCheckedOut((Workable) lcRef
.getObject())) {
throw new WTException("Life Cycle Template is checked out");
}
// Reassigning the lifecycle with the given value
final LifeCycleManaged lcm = LifeCycleHelper.service.reassign(
(LifeCycleManaged) part, lcRef, part.getContainerReference());
// Set the state of the life cycle to the specific state
/* if (stateName != null) {
LifeCycleHelper.service.setLifeCycleState(lcm,
State.toState(stateName));
} */
LOG.info("Reassigning Complete");
// Refreshing WTPart after reassigning the life cycle and setting the
// state
PersistenceHelper.manager.refresh(lcm);
}
Thanks,
Kaushik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hey Kaushik,
Thanks I picked that up last Thursday. I felt a bit stupid that I had missed the "d". Thanks anyways for the trouble of answering.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi Shreyas, The wf works, thanks a lot. Can you assist with how I get the role of the assignee of wf tasks to be reverted to the original assignee, who was the creator of the object.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
looks like first activity is your workflow is assigned to Creator-Actor.
you can assign first activity to any role instead of Creator-Actor. i.e. you can assign this activity to Owner role then you need to add creator of object into owner role
this can achieve this using two way 1. using lifecycle 2. Team template without writing code
- lifecycle
Edit the lifecycle > go the first state > Role >add Owner Role >participants > Actors > add Creator .save and check in the lifecylce
- Team Template
Add owner role in team template and creator actor in owner role
Hope this helps !!!
Thanks,
shreyas
