Skip to main content
14-Alexandrite
May 15, 2023
Solved

Need Help regarding Custom workflow logic to Revise the (Affected/review Objects) after Released

  • May 15, 2023
  • 1 reply
  • 982 views

Hello, 

 

I need help regarding logic to Change the Revision for the Change Review Objects through my custom Workflow. Is there any API to get this done so the Objects are revised once they are in Released State??

 

 

 

 

 

Best answer by HelesicPetr

Hello @Rohaan 

I can help you with a code to revise object. 

This example shows how to revise WTDocument, but it can revise whatever you need.

 

revise code

 

	private WTDocument createNewRevision(WTDocument wtObject) throws WTException
	{
		//com.ptc.windchill.enterprise.maturity.PromotionNoticeWorkflowHelper.revisePromotables(pn, pn.getCreator(), locale);
		try
		{
			WTCollection revisionables = new WTArrayList();

			revisionables.add(wtObject);
			WTPrincipalReference principalRef = SessionHelper.manager.getPrincipalReference();
			WTValuedMap newVersions = VersionControlHelper.service.newVersions(revisionables);
			WTCollection newWtRevision = newVersions.wtValues();
			setIterationCreator(newWtRevision, principalRef);
			WTCollection newVersionColect = PersistenceHelper.manager.store(newWtRevision);
			if (newVersionColect.size() > 0)
			{
				WTArrayList wtArrayList = new WTArrayList(newVersionColect);
				ObjectReference wtPreference = (ObjectReference) wtArrayList.get(0);
				wtObject = (WTDocument) wtPreference.getObject();
			}
		} catch (WTPropertyVetoException var9)
		{
			throw new WTException(var9);
		}
		return wtObject;
	}

	private static void setIterationCreator(WTCollection var0, WTPrincipalReference var1) throws WTException, WTPropertyVetoException
	{
		if (var1 != null)
		{
			Iterator var2 = var0.persistableIterator();

			while (var2.hasNext())
			{
				Promotable var3 = (Promotable) var2.next();
				VersionControlHelper.assignIterationCreator(var3, var1);
				VersionControlHelper.setIterationModifier(var3, var1);
			}
		} else if (logger.isDebugEnabled())
		{
			logger.debug("The given principal reference is null");
		}

	}

 

 

PetrH

1 reply

HelesicPetr
22-Sapphire II
22-Sapphire II
May 15, 2023

Hello @Rohaan 

I can help you with a code to revise object. 

This example shows how to revise WTDocument, but it can revise whatever you need.

 

revise code

 

	private WTDocument createNewRevision(WTDocument wtObject) throws WTException
	{
		//com.ptc.windchill.enterprise.maturity.PromotionNoticeWorkflowHelper.revisePromotables(pn, pn.getCreator(), locale);
		try
		{
			WTCollection revisionables = new WTArrayList();

			revisionables.add(wtObject);
			WTPrincipalReference principalRef = SessionHelper.manager.getPrincipalReference();
			WTValuedMap newVersions = VersionControlHelper.service.newVersions(revisionables);
			WTCollection newWtRevision = newVersions.wtValues();
			setIterationCreator(newWtRevision, principalRef);
			WTCollection newVersionColect = PersistenceHelper.manager.store(newWtRevision);
			if (newVersionColect.size() > 0)
			{
				WTArrayList wtArrayList = new WTArrayList(newVersionColect);
				ObjectReference wtPreference = (ObjectReference) wtArrayList.get(0);
				wtObject = (WTDocument) wtPreference.getObject();
			}
		} catch (WTPropertyVetoException var9)
		{
			throw new WTException(var9);
		}
		return wtObject;
	}

	private static void setIterationCreator(WTCollection var0, WTPrincipalReference var1) throws WTException, WTPropertyVetoException
	{
		if (var1 != null)
		{
			Iterator var2 = var0.persistableIterator();

			while (var2.hasNext())
			{
				Promotable var3 = (Promotable) var2.next();
				VersionControlHelper.assignIterationCreator(var3, var1);
				VersionControlHelper.setIterationModifier(var3, var1);
			}
		} else if (logger.isDebugEnabled())
		{
			logger.debug("The given principal reference is null");
		}

	}

 

 

PetrH

Rohaan14-AlexandriteAuthor
14-Alexandrite
May 15, 2023

Thanks! @HelesicPetr