preliminary implementation of IWS - Invoke Web Service Method

This commit is contained in:
Michael Becker 2025-10-17 22:58:03 -04:00
parent 09023ddc86
commit c0b0c70785
7 changed files with 330 additions and 44 deletions

View File

@ -304,7 +304,11 @@ namespace Mocha.Core
// BWSR - Build Web Service Response Method - 171 // BWSR - Build Web Service Response Method - 171
// GRE - Get Referenced Element Method - 197 // GRE - Get Referenced Element Method - 197
public static Guid GetRelationshipMethod { get; } = new Guid("{d53c9232-89ef-4cca-8520-261da6787450}"); // 207 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 InstanceOpMethod { get; } = new Guid("{4c814982-938f-4116-bdc1-827bae6a5f71}");
public static Guid ConditionalSelectAttributeMethod { get; } = new Guid("{d534a369-321e-4c32-bd7f-8ff2017f191e}"); // 13038 public static Guid ConditionalSelectAttributeMethod { get; } = new Guid("{d534a369-321e-4c32-bd7f-8ff2017f191e}"); // 13038
// SSC - Conditional Select from Instance Set Method - 13039 // SSC - Conditional Select from Instance Set Method - 13039
@ -547,5 +551,11 @@ namespace Mocha.Core
public static Guid Complement { get; } = new Guid("{fa69b904-315b-4bb1-80a6-c71708fbfde5}"); 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 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 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 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

@ -0,0 +1,63 @@
// 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);
return errorElement;
}
}
}
return InstanceHandle.Empty;
}
}

View File

@ -2599,9 +2599,44 @@ public abstract class Oms
throw new FormatException(); 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) 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; 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 (workDataObject is InstanceHandle workDataInstance)
{ {
if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.TextAttribute))) if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.TextAttribute)))
@ -2614,6 +2649,7 @@ public abstract class Oms
else else
{ {
value = context.GetWorkData<string>(workDataInstance); value = context.GetWorkData<string>(workDataInstance);
returnedWorkData = workDataInstance;
} }
} }
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.BooleanAttribute))) else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
@ -2626,6 +2662,7 @@ public abstract class Oms
else else
{ {
value = context.GetWorkData<bool>(workDataInstance); value = context.GetWorkData<bool>(workDataInstance);
returnedWorkData = workDataInstance;
} }
} }
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.NumericAttribute))) else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.NumericAttribute)))
@ -2638,6 +2675,7 @@ public abstract class Oms
else else
{ {
value = context.GetWorkData<decimal>(workDataInstance); value = context.GetWorkData<decimal>(workDataInstance);
returnedWorkData = workDataInstance;
} }
} }
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.DateAttribute))) else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.DateAttribute)))
@ -2650,6 +2688,7 @@ public abstract class Oms
else else
{ {
value = context.GetWorkData<DateTime>(workDataInstance); value = context.GetWorkData<DateTime>(workDataInstance);
returnedWorkData = workDataInstance;
} }
} }
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.WorkSet))) else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.WorkSet)))
@ -2662,12 +2701,14 @@ public abstract class Oms
else else
{ {
value = context.GetWorkData(workDataInstance); value = context.GetWorkData(workDataInstance);
returnedWorkData = workDataInstance;
} }
} }
else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.Executable))) else if (IsInstanceOf(workDataInstance, GetInstance(KnownInstanceGuids.Classes.Executable)))
{ {
InstanceHandle workSet = Execute(context, workDataInstance); InstanceHandle workSet = Execute(context, workDataInstance);
value = context.GetWorkData(workSet); value = context.GetWorkData(workSet);
returnedWorkData = workSet;
} }
else else
{ {
@ -2676,6 +2717,7 @@ public abstract class Oms
InstanceHandle workData = Execute(context, workDataInstance); InstanceHandle workData = Execute(context, workDataInstance);
object? val = context.GetWorkData(workData); object? val = context.GetWorkData(workData);
value = val?.ToString(); value = val?.ToString();
returnedWorkData = workData;
} }
} }
else else

View File

@ -67,11 +67,11 @@ public class OmsMethodBuilder
return new BuildResponseMethodBinding(methodBinding); 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); 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); 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); 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); 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 }); GetSpecifiedInstancesMethod meth = CreateGetSpecifiedInstancesMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet, new InstanceHandle[] { specifiedInstance });
Oms.SetAttributeValue(meth.GetHandle(), Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true); Oms.SetAttributeValue(meth.GetHandle(), Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true);
return meth; 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); 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); 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()); 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); 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()); 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); InstanceHandle method = Oms.CreateInstanceOf(methodClassInstance, globalIdentifier);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Method__for__Class), forClassInstance); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Method__for__Class), forClassInstance);
@ -124,7 +124,7 @@ public class OmsMethodBuilder
return method; 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); 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); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Build_Attribute_Method__returns__Attribute), returnsAttribute);
@ -132,7 +132,7 @@ public class OmsMethodBuilder
return new BuildAttributeMethod(method); 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); 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); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Build_Attribute_Method__returns__Attribute), returnsAttribute);
@ -151,11 +151,11 @@ public class OmsMethodBuilder
return new BuildAttributeMethod(method); 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); 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); 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); 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); 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); 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); 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()); 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); 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); 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); 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); 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); 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); 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); 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); 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); 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); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Relationship_Method__returns__Relationship), returnsRelationship);
@ -207,11 +207,11 @@ public class OmsMethodBuilder
return new GetRelationshipMethod(method); 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); 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); 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); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Referenced_Attribute_Method__returns__Attribute), returnsAttribute);
@ -228,26 +228,22 @@ public class OmsMethodBuilder
return new GetReferencedAttributeMethod(method); 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) 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)
{
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)
{ {
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.SelectFromInstanceSetMethod), forClassInstance, verb, name, accessModifier, isStatic); 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__returns__Work_Set), returnsWorkSet);
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Executable_returning_Instance_Set), usesExecutableReturningInstanceSet); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Select_from_Instance_Set_Method__uses__Executable_returning_Instance_Set), usesExecutableReturningInstanceSet);
if (usesSetFunction != null) 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) 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) 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) 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>(); List<InstanceHandle> cases2 = new List<InstanceHandle>();
foreach (InstanceWrapper wrapper in cases) 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); 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); 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); 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); 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); 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); 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); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_Attribute_Method__returns__Attribute), returnsAttribute);
@ -342,12 +338,12 @@ public class OmsMethodBuilder
return ih; 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()); 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); 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); 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); 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); InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.CalculateDateMethod), forClassInstance, verb, name, accessModifier, isStatic);
return new CalculateDateMethod(method); 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); 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); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__has__BEM_Process), hasBemProcess);
@ -375,11 +371,11 @@ public class OmsMethodBuilder
return new BuildElementMethod(method); 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()); 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 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); 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); 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 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); 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); 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); 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.Instance_Op_Method__returns__Work_Set), returnsWorkSet);
Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Op_Scope__invokes__Instance_Op), invokesInstanceOp); Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Op_Scope__invokes__Instance_Op), invokesInstanceOp);
return new InstanceOpMethod(ih); 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);
}
}