How to delete object using SDK?
You have to call delete() on an Object to put it in the recycle bin and call it again to delete it at all.
for example: for a change
IChange change= session.getObject(IChange.OBJECT_TYPE, “CO123XXX”);
//recycleBin
change.delete();
//delete at all
change.delete();
To add to Antonio, if your intention is to soft delete only. Just have a check at start for soft-deleted items so that you don’t end up hard-deleting it.
//isDeleted() checks whether an object is deleted or not.
If (!change.isDeleted())
{
change.delete();
}
Thanks for the tips. I created a PX script in the Event Handler and only enabled the Event Subscriber so I could run it once, then disable it. Here is the script that worked.
// Purpose: Soft delete multiple items // Agile PLM Groovy script, using Agile SDK // For a bunch of parts, delete them in Agile. But only delete once because doing it 2nd // time will permenantly delete it. To permanently delete, log in to Agile, go to the // Recycle Bin, sort by item description, find those and select that begin with "del", // and permanently delete multiple items from there. // // 1. Only do this for Item Lifecycle Phase = 'Preliminary' // 2. pitem.isDeleted() should be false, meaning only delete if it has not been marked as deleted yet // 3. pitem.delete(); delete item and put in Recycle bin // 4. Append "del " to front of item description so we can find these easy in the recycle bin // 4.1 Remove last 4 chars from item description before adding "del " to avoid going over char limit import com.agile.agileDSL.ScriptObj.IBaseScriptObj; import com.agile.agileDSL.ScriptObj.AgileDSLException; import com.agile.api.*; import java.util.*; import com.agile.px.IEventInfo; import com.agile.px.EventConstants; import com.agile.px.IObjectEventInfo; import java.util.*; import java.util.regex.*; void invokeScript(IBaseScriptObj obj) { IAgileSession session = obj.getAgileSDKSession(); IEventInfo req = obj.getPXEventInfo(); Integer del_cnt = 0; try { if (req instanceof IObjectEventInfo) { eventInfo = (IObjectEventInfo)req; } else { obj.logMonitor("req IS NOT AN instanceof IObjectEventInfo"); } if (eventInfo!=null) { del_cnt = delItem(obj, session, "09.4761V.001", del_cnt); del_cnt = delItem(obj, session, "21.I1021.003", del_cnt); del_cnt = delItem(obj, session, "21.M0630.L01", del_cnt); // ---- Add more items above, that you wish to flag as deleted and move into Recycle Bin ---- obj.logMonitor("nbr of items flagged as deleted: " + del_cnt); } } catch (APIException ex) { ex.printStackTrace(); obj.logMonitor(ex.getMessage()); } } // // --------- delete item --------- // private static int delItem(IBaseScriptObj obj, IAgileSession session, String itemnbr, Integer delcnt) throws APIException { IItem pitem = (IItem) session.getObject(ItemConstants.CLASS_ITEM_BASE_CLASS, itemnbr); String lifecyc = (String) pitem.getValue(ItemConstants.ATT_TITLE_BLOCK_LIFECYCLE_PHASE); String itemdesc = (String) pitem.getValue(ItemConstants.ATT_TITLE_BLOCK_DESCRIPTION); itemdesc = itemdesc.reverse(); // reverse all the characters, ex: ABCDEFG becomes GFEDCBA itemdesc = itemdesc.drop(4); // remove the first 4 chars, ex: GFEDCBA becomes CBA itemdesc = itemdesc.reverse(); // reverse it again, ex: CBA becomes ABC itemdesc = "del " + itemdesc; if ( lifecyc == 'Preliminary' ) { if (!pitem.isDeleted()) { pitem.setValue(ItemConstants.ATT_TITLE_BLOCK_DESCRIPTION, itemdesc); pitem.delete(); delcnt = delcnt + 1; } } return (delcnt); }