Code sample: Using Managers (PARole)
public class BSOInOrder : BSOMyCompNav
{
public BSOInOrder(ACClass acType, IACObject content, IACObject parentACObject, ACValueList parameter, string acIdentifier = "")
: base(acType, content, parentACObject, parameter, acIdentifier)
{
}
public override bool ACInit(Global.ACStartTypes startChildMode = Global.ACStartTypes.Automatic)
{
if (!base.ACInit(startChildMode))
return false;
// (A) If you use InOrderManager as a local service object:
_InOrderManager = InOrderManager.ACRefToServiceInstance(this);
// (B) If you use InOrderManager as a network service, than you have to retrieve a instance as ACComponent instead of InOrderManager,
// because on client side you have only a proxy object (ACComponentProxy):
_InOrderManagerNet = InOrderManager.ACRefToServiceInstanceNet(this);
return true;
}
public override bool ACDeInit(bool deleteACClassTask = false)
{
// (E) Detach references
if (_InOrderManager != null)
InOrderManager.DetachACRefFromServiceInstance(this, _InOrderManager);
_InOrderManager = null;
if (_InOrderManagerNet != null)
InOrderManager.DetachACRefFromServiceInstance(this, _InOrderManagerNet);
_InOrderManagerNet = null;
return base.ACDeInit(deleteACClassTask);
}
protected ACRef<InOrderManager> _InOrderManager = null;
public InOrderManager InOrderManager
{
get
{
if (_InOrderManager == null)
return null;
return _InOrderManager.ValueT;
}
}
[ACMethodCommand("Sum", "en{'Sum lines'}de{'Summe Positionen'}", 200)]
public void DisplaySum()
{
if (InOrderManager != null)
{
// (C) Usage if InOrderManager is configured as local service object
double sum = InOrderManager.SumLines(this.DatabaseApp, this.CurrentInOrder);
Messages.Info(this, String.Format("Local invocation: Sum is {0}", sum), true);
}
if (InOrderManagerNet != null)
{
// (D) Usage if InOrderManager is a network service
object netResult = InOrderManagerNet.ACUrlCommand("!SumLinesByID", this.CurrentInOrder.InOrderID);
if (netResult != null)
Messages.Info(this, String.Format("Remote invocation: Sum is {0}", (double)netResult), true);
}
}
}
Modifier: Damir Lisak / Modified:26.12.2020 15:52