Compare commits

...

5 Commits

13 changed files with 505 additions and 88 deletions

@ -1 +1 @@
Subproject commit 2cedd6600d418723ec97f51b28cd9e1c31ff8d30
Subproject commit 5a411ddf69be2a2f32c601fe57004e839e3805c0

View File

@ -304,7 +304,11 @@ namespace Mocha.Core
// BWSR - Build Web Service Response Method - 171
// GRE - Get Referenced Element Method - 197
public static Guid GetRelationshipMethod { get; } = new Guid("{d53c9232-89ef-4cca-8520-261da6787450}"); // 207
// IWS - Invoke Web Service Method - 208
/// <summary>
/// IWS - Invoke Web Service Method [1$208]
/// </summary>
/// <returns></returns>
public static Guid InvokeWebServiceMethod { get; } = new Guid("{26d9e733-50a0-49f7-9b2c-2142934e3952}");
public static Guid InstanceOpMethod { get; } = new Guid("{4c814982-938f-4116-bdc1-827bae6a5f71}");
public static Guid ConditionalSelectAttributeMethod { get; } = new Guid("{d534a369-321e-4c32-bd7f-8ff2017f191e}"); // 13038
// SSC - Conditional Select from Instance Set Method - 13039
@ -458,6 +462,7 @@ namespace Mocha.Core
{
public static Guid Minimum { get; } = new Guid("{1ff7be8c-fe48-4154-9028-8ee84b7dc367}");
public static Guid Maximum { get; } = new Guid("{dda6c31d-5bea-41a9-a6bc-0e5c189784da}");
public static Guid First { get; } = new Guid("{4a196b8f-ca55-4f3a-a443-f960bfdb3bc6}");
}
public static class RelationalOperators
{
@ -547,5 +552,11 @@ namespace Mocha.Core
public static Guid Complement { get; } = new Guid("{fa69b904-315b-4bb1-80a6-c71708fbfde5}");
public static Guid Difference { get; } = new Guid("{ec67f62d-387c-4179-9b03-0d9b70195688}");
}
public static class WebServiceInvocationTypes
{
public static Guid BasicAuth { get; } = new Guid("{88372a06-7025-4e08-880e-7bc472e77003}");
public static Guid OAuth2 { get; } = new Guid("{9e62468f-0c8e-49ad-a61b-839bdb3509ac}");
public static Guid Microsoft { get; } = new Guid("{bd9cc03f-a0c1-4815-95b9-d7d3d21599a8}");
}
}
}

View File

@ -472,5 +472,14 @@ namespace Mocha.Core
public static Guid Filter_By_Type_Op__uses__Class { get; } = new Guid("{2f5fddc8-5ab0-4c59-8a83-536a2ce0a30c}");
public static Guid Combine_Sets_Op__uses__Set_Function { get; } = new Guid("{b20e54d4-2535-44c0-8c99-0411f27a69df}");
public static Guid Invoke_Web_Service_Method__has_user_id__Executable_returning_Attribute { get; } = new Guid("{dc567ccc-ec9f-4e8b-b698-fb52bb21502a}");
public static Guid Invoke_Web_Service_Method__has_password__Executable_returning_Attribute { get; } = new Guid("{b7d8ac3b-9419-4a49-8ebf-22aa08d9ff16}");
public static Guid Invoke_Web_Service_Method__has_destination_url__Executable_returning_Attribute { get; } = new Guid("{bbd9b5a7-041f-4fb3-a8c1-2889ff2e17a7}");
public static Guid Invoke_Web_Service_Method__has__Web_Service_Invocation_Type { get; } = new Guid("{429218f8-0ea7-4177-83be-74efe59b65b1}");
public static Guid Invoke_Web_Service_Method__uses__Executable_returning_Element { get; } = new Guid("{020e26ba-565d-47a4-bdcc-f0050ff6b848}");
public static Guid Invoke_Web_Service_Method__correlated_instances_from__Executable_returning_Instance_Set { get; } = new Guid("{8f1406b4-f48f-45fb-a6ef-2ad51998735f}");
public static Guid Invoke_Web_Service_Method__has_error__Executable_returning_Element { get; } = new Guid("{86aa5338-d913-4044-af8d-7aa4e1a9ddbc}");
}
}

View File

@ -62,6 +62,16 @@ public class BuildAttributeMethodImplementation : MethodImplementation
}
context.SetWorkData(returnsAttribute, value);
}
else if (oms.IsInstanceOf(returnsAttribute, oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
{
object? value = oms.UnsafeGetAttributeValue(method, oms.GetInstance(KnownAttributeGuids.Text.Value)); // initial value
if (value is string)
{
bool val = Boolean.Parse((string)value);
context.SetWorkData(returnsAttribute, val);
}
}
else if (oms.IsInstanceOf(returnsAttribute, oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute)))
{
object? value = oms.UnsafeGetAttributeValue(method, oms.GetInstance(KnownAttributeGuids.Numeric.Value)); // initial value

View File

@ -1,8 +1,5 @@
using System.Text.Json.Nodes;
using System.Threading.Tasks.Dataflow;
using Mocha.Core.Oop;
using Mocha.Core.UI;
namespace Mocha.Core.MethodImplementations;
@ -23,16 +20,35 @@ public class BuildElementMethodImplementation : MethodImplementation
InstanceHandle bemProcess = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__has__BEM_Process));
InstanceHandle loopInstanceSet = oms.GetRelatedInstance(bemProcess, oms.GetInstance(KnownRelationshipGuids.BEM_Process__uses_loop__Executable_returning_Instance_Set));
object? instanceSet = oms.Evaluate(context, loopInstanceSet, InstanceHandle.Empty);
if (instanceSet is IEnumerable<InstanceHandle> ihs)
JsonArray objECs = new JsonArray();
IEnumerable<InstanceHandle> elementContents = oms.GetRelatedInstances(element, oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content));
foreach (InstanceHandle elementContent in elementContents)
{
JsonObject obj = BuildGrid(oms, element, ihs);
context.SetWorkData(element, obj);
InstanceHandle elementContentInstance = oms.GetRelatedInstance(elementContent, oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance));
IEnumerable<InstanceHandle> elementContentDisplayOptions = oms.GetRelatedInstances(elementContent, oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Element_Content_Display_Option));
JsonObject objEC = BuildElementContent(oms, elementContentInstance, elementContent);
objECs.Add(objEC);
}
InstanceHandle loopInstanceSet = oms.GetRelatedInstance(bemProcess, oms.GetInstance(KnownRelationshipGuids.BEM_Process__uses_loop__Executable_returning_Instance_Set));
if (loopInstanceSet != InstanceHandle.Empty)
{
object? instanceSet = oms.Evaluate(context, loopInstanceSet, InstanceHandle.Empty);
if (instanceSet is IEnumerable<InstanceHandle> ihs)
{
JsonObject obj = BuildGrid(oms, element, ihs);
context.SetWorkData(element, obj);
}
}
else
{
JsonObject objR = new JsonObject();
objR.Add("children", objECs);
context.SetWorkData(element, objR);
return element;
}
return element;
}
}
private JsonObject BuildGrid(Oms oms, InstanceHandle element, IEnumerable<InstanceHandle> instances)
{
@ -66,7 +82,7 @@ public class BuildElementMethodImplementation : MethodImplementation
j = 1;
foreach (InstanceHandle ihCol in ihCols)
{
JsonObject objCell = BuildGridCell(oms, ih, ihCol);
JsonObject objCell = BuildElementContent(oms, ih, ihCol);
objCells.Add("46." + j.ToString(), objCell);
j++;
}
@ -78,9 +94,9 @@ public class BuildElementMethodImplementation : MethodImplementation
}
obj.Add("rows", aryRows);
return obj;
}
}
private JsonObject BuildGridColumn(Oms oms, InstanceHandle elementContent, int index)
private JsonObject BuildGridColumn(Oms oms, InstanceHandle elementContent, int index)
{
JsonObject objCol = new JsonObject();
objCol.Add("widget", "column");
@ -102,9 +118,9 @@ public class BuildElementMethodImplementation : MethodImplementation
objCol.Add("sortableAndFilterable", true);
// objCol.Add("propertyName", "");
return objCol;
}
}
private JsonObject BuildGridCell(Oms oms, InstanceHandle targetInstance, InstanceHandle elementContent)
private JsonObject BuildElementContent(Oms oms, InstanceHandle targetInstance, InstanceHandle elementContent)
{
JsonObject objCell = new JsonObject();
objCell.Add("ecid", oms.GetInstanceKey(elementContent).ToString());
@ -127,7 +143,14 @@ public class BuildElementMethodImplementation : MethodImplementation
if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute)))
{
objCell.Add("widget", "text");
objCell.Add("value", oms.GetAttributeValue<string>(targetInstance, ecInst));
if (targetInstance == InstanceHandle.Empty)
{
objCell.Add("value", oms.GetAttributeValue<string>(ecInst, oms.GetInstance(KnownAttributeGuids.Text.Value)));
}
else
{
objCell.Add("value", oms.GetAttributeValue<string>(targetInstance, ecInst));
}
}
else if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
{
@ -161,5 +184,5 @@ public class BuildElementMethodImplementation : MethodImplementation
objCell.Add("widget", "monikerList");
}
return objCell;
}
}
}

View File

@ -0,0 +1,80 @@
// Copyright (C) 2024 Michael Becker <alcexhim@gmail.com>
//
// This file is part of Mocha.NET.
//
// Mocha.NET is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Mocha.NET is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Mocha.NET. If not, see <https://www.gnu.org/licenses/>.
using System.Text.Json.Nodes;
namespace Mocha.Core.MethodImplementations;
public class InvokeWebServiceMethodImplementation : MethodImplementation
{
public override Guid MethodClassGuid => KnownInstanceGuids.MethodClasses.InvokeWebServiceMethod;
protected override InstanceHandle ExecuteInternal(Oms oms, OmsContext context, InstanceHandle method)
{
InstanceHandle r_Method__for__Class = oms.GetInstance(KnownRelationshipGuids.Method__for__Class);
InstanceHandle userIdAttribute = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_user_id__Executable_returning_Attribute));
string userId = oms.Evaluate<string>(context, userIdAttribute);
InstanceHandle passwordAttribute = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_password__Executable_returning_Attribute));
string password = oms.Evaluate<string>(context, passwordAttribute);
InstanceHandle destinationUrlAttribute = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_destination_url__Executable_returning_Attribute));
string destinationUrl = oms.Evaluate<string>(context, destinationUrlAttribute);
InstanceHandle errorElement = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_error__Executable_returning_Element));
using (HttpClient client = new HttpClient())
{
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, new Uri(destinationUrl));
try
{
HttpResponseMessage resp = client.Send(req);
}
catch (HttpRequestException ex)
{
if (errorElement != InstanceHandle.Empty)
{
JsonObject errorJson = oms.Evaluate<JsonObject>(context, errorElement, new KeyValuePair<InstanceHandle, object?>[]
{
new KeyValuePair<InstanceHandle, object?>(oms.GetInstance(KnownAttributeGuids.Text.Value), 404)
}, null, out InstanceHandle ws);
InstanceHandle hElement = FindElementFromExecutable(oms, errorElement);
context.SetWorkData(hElement, errorJson);
return hElement;
}
}
}
return InstanceHandle.Empty;
}
private InstanceHandle FindElementFromExecutable(Oms oms, InstanceHandle exec)
{
if (oms.IsInstanceOf(exec, oms.GetInstance(KnownInstanceGuids.Classes.ReturnElementMethodBinding)))
{
InstanceHandle executesMethod = oms.GetRelatedInstance(exec, oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method));
return FindElementFromExecutable(oms, executesMethod);
}
else if (oms.IsInstanceOf(exec, oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildElementMethod)))
{
return oms.GetRelatedInstance(exec, oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__returns__Element));
}
return InstanceHandle.Empty;
}
}

View File

@ -15,9 +15,6 @@
// You should have received a copy of the GNU General Public License
// along with Mocha.NET. If not, see <https://www.gnu.org/licenses/>.
using System.ComponentModel.Design;
using Mocha.Core.Oop;
namespace Mocha.Core.MethodImplementations;
public class SelectFromInstanceSetMethodImplementation : MethodImplementation
@ -27,10 +24,16 @@ public class SelectFromInstanceSetMethodImplementation : MethodImplementation
public string Order;
public object Data;
}
private struct OrderableData<T>
{
public string Order;
public T Data;
}
public override Guid MethodClassGuid => KnownInstanceGuids.MethodClasses.SelectFromInstanceSetMethod;
protected override InstanceHandle ExecuteInternal(Oms oms, OmsContext context, InstanceHandle method)
{
//! FIXME !
Guid methodId = oms.GetGlobalIdentifier(method);
InstanceHandle irForClass = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Method__for__Class));
@ -43,32 +46,31 @@ public class SelectFromInstanceSetMethodImplementation : MethodImplementation
}
InstanceHandle usesInstanceSet = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Executable_returning_Instance_Set));
object? instanceSetValues = context.GetWorkData(usesInstanceSet);
// object? instanceSetValues = context.GetWorkData(usesInstanceSet);
object? instanceSetValues = oms.Evaluate(context, usesInstanceSet, InstanceHandle.Empty);
InstanceHandle selectionFunction = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Selection_Function));
InstanceHandle setFunction = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Set_Function));
InstanceHandle orderAttribute = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses_order__Executable_returning_Attribute));
List<OrderableData> list = new List<OrderableData>();
List<OrderableData<IInstanceReference>> list = new List<OrderableData<IInstanceReference>>();
if (instanceSetValues is IEnumerable<InstanceHandle>)
if (instanceSetValues is System.Collections.IEnumerable ie)
{
}
else if (instanceSetValues is IEnumerable<InstanceWrapper>)
{
IEnumerable<InstanceWrapper> vals = (IEnumerable<InstanceWrapper>)instanceSetValues;
foreach (InstanceWrapper inst in vals)
// here we use the non-generic IEnumerable so we can handle cases where
// you would pass in an IEnumerable<IInstanceReference>, IEnumerable<InstanceHandle>,
// or IEnumerable<InstanceWrapper>. Hell, you could even pass in an IEnumerable<object>
// as long as each element in the IEnumerable was some sort of IInstanceReference!
foreach (object o in ie)
{
if (inst != null)
if (o is IInstanceReference ir)
{
OrderableData od = new OrderableData();
od.Data = inst.GetHandle();
OrderableData<IInstanceReference> od = new OrderableData<IInstanceReference>();
od.Data = ir.GetHandle();
if (orderAttribute != InstanceHandle.Empty)
{
InstanceHandle ihWorkData = oms.Execute(context, orderAttribute, inst.GetHandle());
string order = context.GetWorkData<string>(ihWorkData);
InstanceHandle ihWorkData = oms.Execute(context, orderAttribute, ir.GetHandle());
string order = context.GetWorkData<string>(ihWorkData, String.Empty);
od.Order = order;
}
else
@ -79,23 +81,40 @@ public class SelectFromInstanceSetMethodImplementation : MethodImplementation
}
else
{
// throw new NotSupportedException();
// design decision: should we silently exclude non-IInstanceReference items since we could
// theoretically support IEnumerable<object>? or should we force users to do the Right Thing(tm)?
}
}
list.Sort((c, d) => c.Order.CompareTo(d.Order));
}
list.Sort((c, d) => c.Order.CompareTo(d.Order));
if (list.Count > 0)
{
// FIXME: this assumes a hardcoded singular work set
if (selectionFunction == oms.GetInstance(KnownInstanceGuids.SelectionFunctions.Minimum))
bool returnsWorkSetIsSingular = oms.GetAttributeValue<bool>(returnsWorkSet, oms.GetInstance(KnownAttributeGuids.Boolean.Singular));
IEnumerable<InstanceHandle> retval = [ ];
if (selectionFunction == oms.GetInstance(KnownInstanceGuids.SelectionFunctions.First))
{
context.SetWorkData(returnsWorkSet, list[0].Data);
retval = [ list.First().Data.GetHandle() ];
}
// FIXME: this assumes a hardcoded singular work set
else if (selectionFunction == oms.GetInstance(KnownInstanceGuids.SelectionFunctions.Minimum))
{
retval = [ list.First().Data.GetHandle() ];
}
else if (selectionFunction == oms.GetInstance(KnownInstanceGuids.SelectionFunctions.Maximum))
{
context.SetWorkData(returnsWorkSet, list[list.Count - 1].Data);
retval = [ list.Last().Data.GetHandle() ];
}
if (returnsWorkSetIsSingular)
{
context.SetWorkData(returnsWorkSet, retval.First());
}
else
{
context.SetWorkData(returnsWorkSet, retval);
}
}
return returnsWorkSet;

View File

@ -2599,9 +2599,44 @@ public abstract class Oms
throw new FormatException();
}
public T Evaluate<T>(OmsContext context, object? workDataObject, IEnumerable<KeyValuePair<InstanceHandle, object?>>? parms = null, T defaultValue = default(T))
{
InstanceHandle ws = InstanceHandle.Empty;
return Evaluate<T>(context, workDataObject, parms, defaultValue, out ws);
}
public T Evaluate<T>(OmsContext context, object? workDataObject, IEnumerable<KeyValuePair<InstanceHandle, object?>>? parms, T defaultValue, out InstanceHandle returnedWorkData)
{
object? value = Evaluate(context, workDataObject, InstanceHandle.Empty, parms, defaultValue, out returnedWorkData);
if (value is T)
{
return (T)value;
}
return defaultValue;
}
public object? Evaluate(OmsContext context, object? workDataObject, InstanceHandle sourceInstance, object? defaultValue = null)
{
return Evaluate(context, workDataObject, sourceInstance, null, defaultValue);
}
public object? Evaluate(OmsContext context, object? workDataObject, InstanceHandle sourceInstance, IEnumerable<KeyValuePair<InstanceHandle, object?>>? parms, object? defaultValue = null)
{
InstanceHandle ws = InstanceHandle.Empty;
return Evaluate(context, workDataObject, sourceInstance, parms, defaultValue, out ws);
}
public object? Evaluate(OmsContext context, object? workDataObject, InstanceHandle sourceInstance, IEnumerable<KeyValuePair<InstanceHandle, object?>>? parms, object? defaultValue, out InstanceHandle returnedWorkData)
{
returnedWorkData = InstanceHandle.Empty;
object? value = defaultValue;
if (parms != null)
{
foreach (KeyValuePair<InstanceHandle, object?> kvp in parms)
{
context.SetWorkData(kvp.Key, kvp.Value);
}
}
if (workDataObject is InstanceHandle workDataInstance)
{
if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.TextAttribute)))
@ -2614,6 +2649,7 @@ public abstract class Oms
else
{
value = context.GetWorkData<string>(workDataInstance);
returnedWorkData = workDataInstance;
}
}
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
@ -2626,6 +2662,7 @@ public abstract class Oms
else
{
value = context.GetWorkData<bool>(workDataInstance);
returnedWorkData = workDataInstance;
}
}
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.NumericAttribute)))
@ -2638,6 +2675,7 @@ public abstract class Oms
else
{
value = context.GetWorkData<decimal>(workDataInstance);
returnedWorkData = workDataInstance;
}
}
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.DateAttribute)))
@ -2650,6 +2688,7 @@ public abstract class Oms
else
{
value = context.GetWorkData<DateTime>(workDataInstance);
returnedWorkData = workDataInstance;
}
}
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.WorkSet)))
@ -2662,12 +2701,14 @@ public abstract class Oms
else
{
value = context.GetWorkData(workDataInstance);
returnedWorkData = workDataInstance;
}
}
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.Executable)))
{
InstanceHandle workSet = Execute(context, workDataInstance);
value = context.GetWorkData(workSet);
returnedWorkData = workSet;
}
else
{
@ -2676,6 +2717,7 @@ public abstract class Oms
InstanceHandle workData = Execute(context, workDataInstance);
object? val = context.GetWorkData(workData);
value = val?.ToString();
returnedWorkData = workData;
}
}
else

View File

@ -67,6 +67,28 @@ public class OmsContext
}
public object? GetWorkData(IInstanceReference parm)
{
object? value = UnsafeGetWorkData(parm);
if (value is string sz)
{
// we really only need to check if we get returned a string like "True" instead of a bool like `false`
// !fixme! move all this hardcoded $@#! into configurable OMS AttributeImplementations
if (Oms.IsInstanceOf(parm, Oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
{
value = Boolean.Parse(sz);
}
else if (Oms.IsInstanceOf(parm, Oms.GetInstance(KnownInstanceGuids.Classes.DateAttribute)))
{
value = DateTime.Parse(sz);
}
}
return value;
}
private object? UnsafeGetWorkData(IInstanceReference parm)
{
// this is the former (object GetWorkData(IInstanceReference))
// still providing the underlying implementation of finding the appropriate WD value
// but the public facing replacement function now casts it to the appropriate Attribute
// or Instance Set type if it is not String
if (_WorkData.ContainsKey(parm.GetHandle()))
return _WorkData[parm.GetHandle()];

View File

@ -67,11 +67,11 @@ public class OmsMethodBuilder
return new BuildResponseMethodBinding(methodBinding);
}
public GetAttributeMethod CreateGetAttributeMethod(InstanceHandle forClassInstance, string verb, string name, InstanceHandle attributeInstance)
public GetAttributeMethod CreateGetAttributeMethod(IInstanceReference forClassInstance, string verb, string name, InstanceHandle attributeInstance)
{
return CreateGetAttributeMethod(forClassInstance, verb, name, null, false, attributeInstance);
}
public GetAttributeMethod CreateGetAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle attributeInstance)
public GetAttributeMethod CreateGetAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle attributeInstance)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_Method__returns__Attribute), attributeInstance);
@ -79,21 +79,21 @@ public class OmsMethodBuilder
}
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, WorkSet returnsWorkSet, InstanceHandle specifiedInstance)
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(IInstanceReference forClassInstance, string verb, string name, WorkSet returnsWorkSet, InstanceHandle specifiedInstance)
{
return CreateGetSpecifiedInstancesMethod(forClassInstance, verb, name, null, false, returnsWorkSet, specifiedInstance);
}
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceHandle specifiedInstance)
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceHandle specifiedInstance)
{
GetSpecifiedInstancesMethod meth = CreateGetSpecifiedInstancesMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet, new InstanceHandle[] { specifiedInstance });
Oms.SetAttributeValue(meth.GetHandle(), Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true);
return meth;
}
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, WorkSet returnsWorkSet, InstanceHandle[] specifiedInstances)
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(IInstanceReference forClassInstance, string verb, string name, WorkSet returnsWorkSet, InstanceHandle[] specifiedInstances)
{
return CreateGetSpecifiedInstancesMethod(forClassInstance, verb, name, null, false, returnsWorkSet, specifiedInstances);
}
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceHandle[] specifiedInstances)
public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceHandle[] specifiedInstances)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetSpecifiedInstancesMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Specified_Instances_Method__returns__Work_Set), returnsWorkSet.GetHandle());
@ -101,11 +101,11 @@ public class OmsMethodBuilder
return new GetSpecifiedInstancesMethod(method);
}
private InstanceHandle CreateMethodBase(InstanceHandle methodClassInstance, InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic)
private InstanceHandle CreateMethodBase(IInstanceReference methodClassInstance, IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic)
{
return CreateMethodBase(methodClassInstance, forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid());
}
private InstanceHandle CreateMethodBase(InstanceHandle methodClassInstance, InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier)
private InstanceHandle CreateMethodBase(IInstanceReference methodClassInstance, IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier)
{
InstanceHandle method = Oms.CreateInstanceOf(methodClassInstance, globalIdentifier);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Method__for__Class), forClassInstance);
@ -124,7 +124,7 @@ public class OmsMethodBuilder
return method;
}
public BuildAttributeMethod CreateBuildAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, string initialValue = "")
public BuildAttributeMethod CreateBuildAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, string initialValue = "")
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildAttributeMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Build_Attribute_Method__returns__Attribute), returnsAttribute);
@ -132,7 +132,7 @@ public class OmsMethodBuilder
return new BuildAttributeMethod(method);
}
public BuildAttributeMethod CreateBuildAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, object? initialValue = null)
public BuildAttributeMethod CreateBuildAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, object? initialValue = null)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildAttributeMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Build_Attribute_Method__returns__Attribute), returnsAttribute);
@ -151,11 +151,11 @@ public class OmsMethodBuilder
return new BuildAttributeMethod(method);
}
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
{
return CreateGetAttributeBySystemRoutineMethod(forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid(), returnsAttribute, usesSystemAttributeRoutine);
}
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod), forClassInstance, verb, name, accessModifier, isStatic, globalIdentifier);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_by_System_Routine_Method__returns__Attribute), returnsAttribute);
@ -163,11 +163,11 @@ public class OmsMethodBuilder
return new GetAttributeBySystemRoutineMethod(method);
}
public GetInstanceSetBySystemRoutineMethod CreateGetInstanceSetBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, SystemInstanceSetRoutine usesSystemInstanceSetRoutine)
public GetInstanceSetBySystemRoutineMethod CreateGetInstanceSetBySystemRoutineMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, SystemInstanceSetRoutine usesSystemInstanceSetRoutine)
{
return CreateGetInstanceSetBySystemRoutineMethod(forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid(), returnsWorkSet, usesSystemInstanceSetRoutine);
}
public GetInstanceSetBySystemRoutineMethod CreateGetInstanceSetBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, WorkSet returnsWorkSet, SystemInstanceSetRoutine usesSystemInstanceSetRoutine)
public GetInstanceSetBySystemRoutineMethod CreateGetInstanceSetBySystemRoutineMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, WorkSet returnsWorkSet, SystemInstanceSetRoutine usesSystemInstanceSetRoutine)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod), forClassInstance, verb, name, accessModifier, isStatic, globalIdentifier);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Instance_Set_by_System_Routine_Method__returns__Work_Set), returnsWorkSet.GetHandle());
@ -175,11 +175,11 @@ public class OmsMethodBuilder
return new GetInstanceSetBySystemRoutineMethod(method);
}
public AssignAttributeMethod CreateAssignAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, ReturnAttributeMethodBinding assignsFromExecutableReturningAttribute, InstanceHandle assignsToAttribute)
public AssignAttributeMethod CreateAssignAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, ReturnAttributeMethodBinding assignsFromExecutableReturningAttribute, InstanceHandle assignsToAttribute)
{
return CreateAssignAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, assignsFromExecutableReturningAttribute.GetHandle(), assignsToAttribute);
}
public AssignAttributeMethod CreateAssignAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle assignsFromExecutableReturningAttribute, InstanceHandle assignsToAttribute)
public AssignAttributeMethod CreateAssignAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle assignsFromExecutableReturningAttribute, InstanceHandle assignsToAttribute)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.AssignAttributeMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Assign_Attribute_Method__uses__Executable_returning_Attribute), assignsFromExecutableReturningAttribute);
@ -187,19 +187,19 @@ public class OmsMethodBuilder
return new AssignAttributeMethod(method);
}
public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, Relationship returnsRelationship, bool singular = false)
public GetRelationshipMethod CreateGetRelationshipMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, Relationship returnsRelationship, bool singular = false)
{
return CreateGetRelationshipMethod(forClassInstance, verb, name, accessModifier, Guid.NewGuid(), returnsRelationship.GetHandle(), singular);
}
public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, Guid globalIdentifier, Relationship returnsRelationship, bool singular = false)
public GetRelationshipMethod CreateGetRelationshipMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, Guid globalIdentifier, Relationship returnsRelationship, bool singular = false)
{
return CreateGetRelationshipMethod(forClassInstance, verb, name, accessModifier, globalIdentifier, returnsRelationship.GetHandle(), singular);
}
public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, InstanceHandle returnsRelationship, bool singular = false)
public GetRelationshipMethod CreateGetRelationshipMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, InstanceHandle returnsRelationship, bool singular = false)
{
return CreateGetRelationshipMethod(forClassInstance, verb, name, accessModifier, Guid.NewGuid(), returnsRelationship, singular);
}
public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, Guid globalIdentifier, InstanceHandle returnsRelationship, bool singular = false)
public GetRelationshipMethod CreateGetRelationshipMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, Guid globalIdentifier, InstanceHandle returnsRelationship, bool singular = false)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod), forClassInstance, verb, name, accessModifier, false, globalIdentifier);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Relationship_Method__returns__Relationship), returnsRelationship);
@ -207,11 +207,11 @@ public class OmsMethodBuilder
return new GetRelationshipMethod(method);
}
public GetReferencedAttributeMethod CreateGetReferencedAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IExecutableReturningInstanceSet usesReferenceInstanceSet, IExecutableReturningAttribute usesAnswerExecutableReturningAttribute, InstanceHandle? usesAccumulationFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public GetReferencedAttributeMethod CreateGetReferencedAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IExecutableReturningInstanceSet usesReferenceInstanceSet, IExecutableReturningAttribute usesAnswerExecutableReturningAttribute, InstanceHandle? usesAccumulationFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
return CreateGetReferencedAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsAttribute, usesReferenceInstanceSet.GetHandle(), usesAnswerExecutableReturningAttribute.GetHandle(), usesAccumulationFunction, usesOrderExecutableReturningAttribute);
}
public GetReferencedAttributeMethod CreateGetReferencedAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle usesReferenceInstanceSet, InstanceHandle usesAnswerExecutableReturningAttribute, InstanceHandle? usesAccumulationFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public GetReferencedAttributeMethod CreateGetReferencedAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle usesReferenceInstanceSet, InstanceHandle usesAnswerExecutableReturningAttribute, InstanceHandle? usesAccumulationFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetReferencedAttributeMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Referenced_Attribute_Method__returns__Attribute), returnsAttribute);
@ -228,26 +228,22 @@ public class OmsMethodBuilder
return new GetReferencedAttributeMethod(method);
}
public SelectFromInstanceSetMethod CreateSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceWrapper usesExecutableReturningInstanceSet, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
return CreateSelectFromInstanceSetMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet.GetHandle(), usesExecutableReturningInstanceSet.GetHandle(), usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute);
}
public SelectFromInstanceSetMethod CreateSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsWorkSet, InstanceHandle usesExecutableReturningInstanceSet, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public SelectFromInstanceSetMethod CreateSelectFromInstanceSetMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, IInstanceReference returnsWorkSet, IInstanceReference? usesExecutableReturningInstanceSet, IInstanceReference? usesSetFunction = null, IInstanceReference? usesSelectionFunction = null, IInstanceReference? usesOrderExecutableReturningAttribute = null)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.SelectFromInstanceSetMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_From_Instance_Set_Method__returns__Work_Set), returnsWorkSet);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Executable_returning_Instance_Set), usesExecutableReturningInstanceSet);
if (usesSetFunction != null)
{
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Set_Function), usesSetFunction.GetValueOrDefault());
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Set_Function), usesSetFunction);
}
if (usesSelectionFunction != null)
{
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Selection_Function), usesSelectionFunction.GetValueOrDefault());
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Selection_Function), usesSelectionFunction);
}
if (usesOrderExecutableReturningAttribute != null)
{
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses_order__Executable_returning_Attribute), usesOrderExecutableReturningAttribute.GetValueOrDefault());
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses_order__Executable_returning_Attribute), usesOrderExecutableReturningAttribute);
}
/*
if (usesAccumulationFunction != null)
@ -263,7 +259,7 @@ public class OmsMethodBuilder
}
public ConditionalSelectFromInstanceSetMethod CreateConditionalSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceWrapper[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public ConditionalSelectFromInstanceSetMethod CreateConditionalSelectFromInstanceSetMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceWrapper[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
List<InstanceHandle> cases2 = new List<InstanceHandle>();
foreach (InstanceWrapper wrapper in cases)
@ -272,7 +268,7 @@ public class OmsMethodBuilder
}
return CreateConditionalSelectFromInstanceSetMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet.GetHandle(), cases2.ToArray(), usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute);
}
public ConditionalSelectFromInstanceSetMethod CreateConditionalSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsWorkSet, InstanceHandle[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public ConditionalSelectFromInstanceSetMethod CreateConditionalSelectFromInstanceSetMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsWorkSet, InstanceHandle[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.ConditionalSelectFromInstanceSetMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_From_Instance_Set_Method__returns__Work_Set), returnsWorkSet);
@ -302,11 +298,11 @@ public class OmsMethodBuilder
return new ConditionalSelectFromInstanceSetMethod(method);
}
public ConditionalSelectAttributeMethod CreateConditionalSelectAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, ConditionalSelectAttributeCase[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public ConditionalSelectAttributeMethod CreateConditionalSelectAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, ConditionalSelectAttributeCase[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
return CreateConditionalSelectAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid(), returnsAttribute, cases, usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute);
}
public ConditionalSelectAttributeMethod CreateConditionalSelectAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, InstanceHandle returnsAttribute, ConditionalSelectAttributeCase[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
public ConditionalSelectAttributeMethod CreateConditionalSelectAttributeMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, InstanceHandle returnsAttribute, ConditionalSelectAttributeCase[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.ConditionalSelectAttributeMethod), forClassInstance, verb, name, accessModifier, isStatic, globalIdentifier);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_Attribute_Method__returns__Attribute), returnsAttribute);
@ -342,12 +338,12 @@ public class OmsMethodBuilder
return ih;
}
public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IInstanceReference sourceWorkData, BooleanOperator booleanOperator, IInstanceReference compareToWorkData = null)
public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IInstanceReference sourceWorkData, BooleanOperator booleanOperator, IInstanceReference compareToWorkData = null)
{
return CreateEvaluateBooleanExpressionMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsAttribute, sourceWorkData.GetHandle(), booleanOperator, compareToWorkData?.GetHandle());
}
public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle sourceWorkData, BooleanOperator booleanOperator, InstanceHandle? compareToWorkData)
public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle sourceWorkData, BooleanOperator booleanOperator, InstanceHandle? compareToWorkData)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.EvaluateBooleanExpressionMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__returns__Boolean_Attribute), returnsAttribute);
@ -360,14 +356,14 @@ public class OmsMethodBuilder
return new EvaluateBooleanExpressionMethod(method);
}
public CalculateDateMethod CreateCalculateDateMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle initialDateAttribute, InstanceHandle timeZoneRsmb, CalculateDateMethodIncrement preIncrement, InstanceHandle? startInterval, InstanceHandle? endInterval, CalculateDateMethodIncrement postIncrement)
public CalculateDateMethod CreateCalculateDateMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle initialDateAttribute, InstanceHandle timeZoneRsmb, CalculateDateMethodIncrement preIncrement, InstanceHandle? startInterval, InstanceHandle? endInterval, CalculateDateMethodIncrement postIncrement)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.CalculateDateMethod), forClassInstance, verb, name, accessModifier, isStatic);
return new CalculateDateMethod(method);
}
public BuildElementMethod CreateBuildElementMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle hasBemProcess, InstanceHandle returnsElement)
public BuildElementMethod CreateBuildElementMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle hasBemProcess, InstanceHandle returnsElement)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildElementMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__has__BEM_Process), hasBemProcess);
@ -375,11 +371,11 @@ public class OmsMethodBuilder
return new BuildElementMethod(method);
}
public BuildUIResponseMethod CreateBuildUIResponseMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, IExecutableReturningElement usesExecutableReturningElement)
public BuildUIResponseMethod CreateBuildUIResponseMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, IExecutableReturningElement usesExecutableReturningElement)
{
return CreateBuildUIResponseMethod(forClassInstance, verb, name, accessModifier, isStatic, usesExecutableReturningElement.GetHandle());
}
public BuildUIResponseMethod CreateBuildUIResponseMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle usesExecutableReturningElement)
public BuildUIResponseMethod CreateBuildUIResponseMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle usesExecutableReturningElement)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildUIResponseMethod), forClassInstance, verb, name, accessModifier, isStatic);
InstanceHandle r_Build_UI_Response_Method__uses__Executable_returning_Element = Oms.GetInstance(KnownRelationshipGuids.Build_UI_Response_Method__uses__Executable_returning_Element);
@ -394,7 +390,7 @@ public class OmsMethodBuilder
return new BuildUIResponseMethod(method);
}
public ControlTransactionMethod CreateControlTransactionMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle processesElement, BuildResponseMethodBinding usesBuildResponseMethodBinding)
public ControlTransactionMethod CreateControlTransactionMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle processesElement, BuildResponseMethodBinding usesBuildResponseMethodBinding)
{
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildUIResponseMethod), forClassInstance, verb, name, accessModifier, isStatic);
InstanceHandle r_Control_Transaction_Method__processes__Element = Oms.GetInstance(KnownRelationshipGuids.Control_Transaction_Method__processes__Element);
@ -433,11 +429,33 @@ public class OmsMethodBuilder
return new CalculateNumericMethod(method);
}
public InstanceOpMethod CreateInstanceOpMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceOp invokesInstanceOp)
public InstanceOpMethod CreateInstanceOpMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceOp invokesInstanceOp)
{
InstanceHandle ih = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.InstanceOpMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Instance_Op_Method__returns__Work_Set), returnsWorkSet);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Op_Scope__invokes__Instance_Op), invokesInstanceOp);
return new InstanceOpMethod(ih);
}
public InvokeWebServiceMethod CreateInvokeWebServiceMethod(IInstanceReference forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, IInstanceReference userIdAttribute, IInstanceReference passwordAttribute, IInstanceReference destinationUrlAttribute, IInstanceReference webServiceInvocationType, IInstanceReference? usesElement = null, IInstanceReference? correlatedInstanceSet = null, IInstanceReference? errorElement = null)
{
InstanceHandle ih = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.InvokeWebServiceMethod), forClassInstance, verb, name, accessModifier, isStatic);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_user_id__Executable_returning_Attribute), userIdAttribute);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_password__Executable_returning_Attribute), passwordAttribute);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_destination_url__Executable_returning_Attribute), destinationUrlAttribute);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has__Web_Service_Invocation_Type), webServiceInvocationType);
if (usesElement != null)
{
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__uses__Executable_returning_Element), usesElement);
}
if (correlatedInstanceSet != null)
{
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__correlated_instances_from__Executable_returning_Instance_Set), correlatedInstanceSet);
}
if (errorElement != null)
{
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Invoke_Web_Service_Method__has_error__Executable_returning_Element), errorElement);
}
return new InvokeWebServiceMethod(ih);
}
}

View File

@ -0,0 +1,25 @@
// Copyright (C) 2025 Michael Becker <alcexhim@gmail.com>
//
// This file is part of Mocha.NET.
//
// Mocha.NET is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Mocha.NET is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Mocha.NET. If not, see <https://www.gnu.org/licenses/>.
namespace Mocha.Core.Oop.Methods;
public class InvokeWebServiceMethod : MethodReturningInstanceSet
{
public override Guid ClassId => KnownInstanceGuids.MethodClasses.InvokeWebServiceMethod;
internal InvokeWebServiceMethod(InstanceHandle handle) : base(handle) { }
}

View File

@ -0,0 +1,119 @@
using System;
using Mocha.Core.Oop;
using Mocha.Core.Oop.Methods;
namespace Mocha.Core.Tests.MethodTests;
public class InvokeWebServiceMethodTests : MethodTestsBase
{
private InstanceHandle BuildFormViewPageElement(IInstanceReference sourceInstance, InstanceHandle titleInstance, IEnumerable<InstanceHandle> subeditInstances)
{
InstanceHandle subeditElement = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.Element));
List<InstanceHandle> subedits = new List<InstanceHandle>();
// the first EC in a subedit element is the source instance
InstanceHandle sourceInstanceEC = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
Oms.AssignRelationship(sourceInstanceEC, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Element_Content_Display_Option), Oms.GetInstance(KnownInstanceGuids.ElementContentDisplayOptions.DoNotShow));
Oms.AssignRelationship(sourceInstanceEC, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance), sourceInstance);
subedits.Add(sourceInstanceEC);
foreach (InstanceHandle subeditInstance in subeditInstances)
{
InstanceHandle ec = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
Oms.AssignRelationship(ec, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance), subeditInstance);
subedits.Add(ec);
}
Oms.AssignRelationship(subeditElement, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content), subedits);
InstanceHandle subeditElementContent = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
Oms.AssignRelationship(subeditElementContent, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance), subeditElement);
Oms.AssignRelationship(subeditElementContent, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Element_Content_Display_Option), new InstanceHandle[]
{
Oms.GetInstance(KnownInstanceGuids.ElementContentDisplayOptions.ShowSubelementsVertically),
Oms.GetInstance(KnownInstanceGuids.ElementContentDisplayOptions.Singular)
});
InstanceHandle element = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.Element));
Oms.AssignRelationship(element, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content), new InstanceHandle[]
{
BuildAttributeElementContent(titleInstance, new InstanceHandle[]
{
Oms.GetInstance(KnownInstanceGuids.ElementContentDisplayOptions.DisplayAsPageTitle),
Oms.GetInstance(KnownInstanceGuids.ElementContentDisplayOptions.NotEnterable),
Oms.GetInstance(KnownInstanceGuids.ElementContentDisplayOptions.SubmitNotEnterable)
}),
subeditElementContent,
// approvalToolbar
});
return element;
}
private InstanceHandle BuildAttributeElementContent(InstanceHandle attributeInstance, IEnumerable<InstanceHandle>? displayOptions = null)
{
InstanceHandle ec = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.DerivedElementContent));
Oms.AssignRelationship(ec, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance), attributeInstance);
if (displayOptions != null)
{
Oms.AssignRelationship(ec, Oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Element_Content_Display_Option), displayOptions);
}
return ec;
}
[Test]
public void Test1()
{
InstanceHandle a_UserName = Oms.GetInstance(KnownAttributeGuids.Text.UserName);
InstanceHandle a_Password = Oms.GetInstance(KnownAttributeGuids.Text.PasswordHash);
InstanceHandle a_DestinationURL = Oms.GetInstance(KnownAttributeGuids.Text.TargetURL);
InstanceHandle elem = BuildFormViewPageElement(c_TestClass, Oms.GetInstance(KnownAttributeGuids.Text.Name), new InstanceHandle[]
{
a_UserName,
a_Password,
a_DestinationURL
});
Class c_Element = Oms.GetInstance<Class>(KnownInstanceGuids.Classes.Element);
Class c_ElementContent = Oms.GetInstance<Class>(KnownInstanceGuids.Classes.ElementContent);
GetAttributeMethod m_getOrder = Oms.MethodBuilder.CreateGetAttributeMethod(c_ElementContent, "get", "Order", Oms.GetInstance(KnownAttributeGuids.Text.Order));
WorkSet wsE = Oms.CreateWorkSet("temp");
ReturnAttributeMethodBinding Element_Content__get__Order = m_getOrder.CreateMethodBinding(Oms);
GetRelationshipMethod m_Element__get__Element_Contents = Oms.MethodBuilder.CreateGetRelationshipMethod(c_Element, "get", "Element Contents", AccessModifier.Public, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content));
ReturnInstanceSetMethodBinding Element__get__Element_Contents = m_Element__get__Element_Contents.CreateMethodBinding(Oms);
SelectFromInstanceSetMethod m_getFirstElementContent = Oms.MethodBuilder.CreateSelectFromInstanceSetMethod(Oms.GetInstance(KnownInstanceGuids.Classes.Element), "get", "First Element Content", AccessModifier.Public, false, wsE, Element__get__Element_Contents, null, Oms.GetInstance(KnownInstanceGuids.SelectionFunctions.First), Element_Content__get__Order);
ReturnInstanceSetMethodBinding getFirstElementContent = m_getFirstElementContent.CreateMethodBinding(Oms);
InstanceHandle bemp = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.BEMProcess));
Oms.AssignRelationship(bemp, Oms.GetInstance(KnownRelationshipGuids.BEM_Process__uses_loop__Executable_returning_Instance_Set), getFirstElementContent);
BuildElementMethod bemError = Oms.MethodBuilder.CreateBuildElementMethod(c_TestClass, "build", "error element for IWS", AccessModifier.Public, false, bemp, elem);
ReturnElementMethodBinding bemErrorRemb = bemError.CreateMethodBinding(Oms);
MethodReturningAttribute m_UserName = Oms.MethodBuilder.CreateGetAttributeMethod(c_TestClass, "get", "User Name", a_UserName);
MethodReturningAttribute m_Password = Oms.MethodBuilder.CreateGetAttributeMethod(c_TestClass, "get", "Password", a_Password);
MethodReturningAttribute m_DestinationURL = Oms.MethodBuilder.CreateGetAttributeMethod(c_TestClass, "get", "Destination URL", a_DestinationURL);
InstanceHandle i_TestClass1 = Oms.CreateInstanceOf(c_TestClass);
Oms.SetAttributeValue(i_TestClass1, a_UserName, "superuser");
Oms.SetAttributeValue(i_TestClass1, a_Password, "J1gglyPuFF$");
Oms.SetAttributeValue(i_TestClass1, a_DestinationURL, "https://iwstestsvcs1-3200.sandbox.mochapowered.com/svc");
ReturnAttributeMethodBinding ramb_UserName = m_UserName.CreateMethodBinding(Oms);
ReturnAttributeMethodBinding ramb_Password = m_Password.CreateMethodBinding(Oms);
ReturnAttributeMethodBinding ramb_DestinationURL = m_DestinationURL.CreateMethodBinding(Oms);
InstanceHandle webServiceInvocationType = Oms.GetInstance(KnownInstanceGuids.WebServiceInvocationTypes.BasicAuth);
Method iws = Oms.MethodBuilder.CreateInvokeWebServiceMethod(c_TestClass, "invoke", "test Web Service", Core.Oop.AccessModifier.Public, false, ramb_UserName, ramb_Password, ramb_DestinationURL, webServiceInvocationType, null, null, bemErrorRemb);
OmsContext context = Oms.CreateContext();
context.SetWorkData(c_TestClass, i_TestClass1);
Oms.Execute(context, iws);
}
}

View File

@ -59,4 +59,43 @@ public class SelectFromInstanceSetMethodTests : MethodTestsBase
Assert.That((InstanceHandle?)value, Is.EqualTo(AccessModifier.Private.GetHandle()));
}
}
[Test]
public void Element__get__First_Element_Content()
{
Class c_Element = Oms.GetInstance<Class>(KnownInstanceGuids.Classes.Element);
Class c_ElementContent = Oms.GetInstance<Class>(KnownInstanceGuids.Classes.ElementContent);
GetRelationshipMethod m_Element__get__Element_Contents = Oms.MethodBuilder.CreateGetRelationshipMethod(c_Element, "get", "Element Contents", AccessModifier.Public, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content));
ReturnInstanceSetMethodBinding Element__get__Element_Contents = m_Element__get__Element_Contents.CreateMethodBinding(Oms);
GetAttributeMethod m_getOrder = Oms.MethodBuilder.CreateGetAttributeMethod(c_ElementContent, "get", "Order", Oms.GetInstance(KnownAttributeGuids.Text.Order));
ReturnAttributeMethodBinding Element_Content__get__Order = m_getOrder.CreateMethodBinding(Oms);
WorkSet wsE = Oms.CreateWorkSet("Returned Element Content [Singular]");
Oms.SetAttributeValue(wsE, Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true);
SelectFromInstanceSetMethod m_getFirstElementContent = Oms.MethodBuilder.CreateSelectFromInstanceSetMethod(c_Element, "get", "First Element Content", AccessModifier.Public, false, wsE, Element__get__Element_Contents, null, Oms.GetInstance(KnownInstanceGuids.SelectionFunctions.First), Element_Content__get__Order);
ReturnInstanceSetMethodBinding getFirstElementContent = m_getFirstElementContent.CreateMethodBinding(Oms);
InstanceHandle element = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.Element));
InstanceHandle ec1 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
InstanceHandle ec2 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
InstanceHandle ec3 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
InstanceHandle ec4 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
InstanceHandle ec5 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
Oms.AssignRelationship(element, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content), new InstanceHandle[]
{
ec1, ec2, ec3, ec4, ec5
});
OmsContext context = Oms.CreateContext();
context.SetWorkData(c_Element, element);
InstanceHandle ws = Oms.Execute(context, getFirstElementContent);
object? obj = context.GetWorkData(ws);
Assert.That(obj, Is.EqualTo(ec1));
}
}