Wie instantiate(instantiationTarget,TypeClass classToInstantiate, String instanceName, boolean instantiateExtensions), nur kann ein wiederverwendbarer Kontext mitgegeben werden. Dies ist sinnvoll, wenn mehrere Instanziierungen innerhalb eines Skripts vorgenommen werden, um eine optimale Performance zu erzielen.
Wichtig ist, das Anwendungspattern im Beispiel strikt einzuhalten, da andernfalls u.U. nicht gespeichert werden kann.
instantiate(instantiationTarget, MechatronicObjectClass classToInstantiate, String instanceName, boolean instantiateExtensions, IMechatronicInstantiationContext context) throws NoMatchingPlaceholderException | |||
---|---|---|---|
Argument | instantiationTarget | Eine Mechatronische Komponente oder MechatronicRoot, unter welcher das neue Objekt angelegt wird | |
MechatronicObjectClass | classToInstantiate | Die zu instanziierende Klasse | |
String | instanceName | Der Name des neuen Objektes. Wird null übergeben, bekommt das Objekt den Namen der Klasse. | |
Boolean | instantiateExtensions | Bei Übergabe von true werden innere Erweiterungspunkte während der Instanziierung berechnet, bei false nicht. | |
IMechatronicInstantiationContext | context | Ein wiederverwendbarer Kontext für die Instanziierung. | |
Rückgabewert | Component | Das instanziierte Objekt |
import com.mind8.mechatronic.skill.api.IMechatronicInstantiationAPI;
import com.mind8.mechatronic.skill.api.NoMatchingPlaceholderException;
import com.mind8.mechatronic.skill.eos.TypeClass;
import java.util.ArrayList;
instantiationTarget = obj; // Argument in Command
classToInstantiate = TypeClass.findType(self.getUnitOfWork(), "Pfuderer_Baukasten.Mechatronik.Stationen.Einsetzen.Einsetzen");
context = IMechatronicInstantiationAPI.DEFAULT.createInstantiationContext(instantiationTarget);
aList = new ArrayList();
try
{
instance = IMechatronicInstantiationAPI.DEFAULT.instantiate(instantiationTarget, classToInstantiate, "Einsetzen", true, context);
aList.add(instance);
instance = IMechatronicInstantiationAPI.DEFAULT.instantiate(instantiationTarget, classToInstantiate, "Einsetzen2", true, context);
aList.add(instance);
}
catch (NoMatchingPlaceholderException nmpe)
{
// error handling
}
finally
{
context.deleteUnusedInstances();
}
return aList;