diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 21666e5cf..06bb6779a 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"AXSharp.ixc": {
- "version": "0.14.0-alpha.112",
+ "version": "0.14.0-alpha.115",
"commands": [
"ixc"
]
@@ -15,13 +15,13 @@
]
},
"AXSharp.ixd": {
- "version": "0.14.0-alpha.112",
+ "version": "0.14.0-alpha.115",
"commands": [
"ixd"
]
},
"AXSharp.ixr": {
- "version": "0.14.0-alpha.112",
+ "version": "0.14.0-alpha.115",
"commands": [
"ixr"
]
diff --git a/src/data/ctrl/src/AxoDataCrudTask.st b/src/data/ctrl/src/AxoDataCrudTask.st
index 911ec1f0b..697ab3e3d 100644
--- a/src/data/ctrl/src/AxoDataCrudTask.st
+++ b/src/data/ctrl/src/AxoDataCrudTask.st
@@ -32,7 +32,7 @@ NAMESPACE AXOpen.Data
END_CLASS
TYPE
- eCrudOperation : (Create, Read, Update, Delete);
+ eCrudOperation : (Create, Read, Update, Delete, CreateOrUpdate, EntityExist);
END_TYPE
END_NAMESPACE
diff --git a/src/data/ctrl/src/AxoDataEntityExistTask.st b/src/data/ctrl/src/AxoDataEntityExistTask.st
deleted file mode 100644
index 726e26d3a..000000000
--- a/src/data/ctrl/src/AxoDataEntityExistTask.st
+++ /dev/null
@@ -1,23 +0,0 @@
-USING AXOpen.Core;
-
-NAMESPACE AXOpen.Data
- ///
- /// Extends AxoRemoteTask for data operation within AxoData
- ///
- CLASS AxoDataEntityExistTask
- EXTENDS AxoDataExchangeTask
- IMPLEMENTS IAxoDataEntityExistTask
- VAR PUBLIC
- _exist : BOOL;
- END_VAR
-
- METHOD PUBLIC Exist : BOOL
- Exist := _exist;
- END_METHOD
- END_CLASS
-
- INTERFACE PUBLIC IAxoDataEntityExistTask EXTENDS IAxoTaskState
- METHOD Exist : BOOL END_METHOD
- END_INTERFACE
-
-END_NAMESPACE
diff --git a/src/data/ctrl/src/AxoDataExchange.st b/src/data/ctrl/src/AxoDataExchange.st
index 1d39de2cc..825cd2fdb 100644
--- a/src/data/ctrl/src/AxoDataExchange.st
+++ b/src/data/ctrl/src/AxoDataExchange.st
@@ -8,35 +8,8 @@ NAMESPACE AXOpen.Data
{#ix-generic:}
CLASS AxoDataExchange EXTENDS AxoDataExchangeBase IMPLEMENTS IAxoDataExchange
VAR PUBLIC
- {#ix-set:AttributeName = "<#Create#>"}
- CreateTask : AxoDataExchangeTask;
- {#ix-set:AttributeName = "<#Read#>"}
- ReadTask : AxoDataExchangeTask;
- {#ix-set:AttributeName = "<#Update#>"}
- UpdateTask : AxoDataExchangeTask;
- {#ix-set:AttributeName = "<#Delete#>"}
- DeleteTask : AxoDataExchangeTask;
- {#ix-set:AttributeName = "<#EntityExist#>"}
- EntityExistTask : AxoDataEntityExistTask;
- {#ix-set:AttributeName = "<#CreateOrUpdate#>"}
- CreateOrUpdateTask : AxoDataExchangeTask;
+ Operation : AxoDataCrudTask;
END_VAR
-
- METHOD PRIVATE Run
- CreateTask.Initialize(THIS);
- ReadTask.Initialize(THIS);
- UpdateTask.Initialize(THIS);
- DeleteTask.Initialize(THIS);
- EntityExistTask.Initialize(THIS);
- CreateOrUpdateTask.Initialize(THIS);
-
- CreateTask.Execute();
- ReadTask.Execute();
- UpdateTask.Execute();
- DeleteTask.Execute();
- EntityExistTask.Execute();
- CreateOrUpdateTask.Execute();
- END_METHOD
///
/// Runs intialization and cyclical handling of this AxoDataExchange.
@@ -47,7 +20,8 @@ NAMESPACE AXOpen.Data
parent : IAxoObject;
END_VAR
THIS.Initialize(parent);
- THIS.Run();
+ Operation.Initialize(THIS);
+ Operation.Execute();
END_METHOD
///
@@ -59,7 +33,8 @@ NAMESPACE AXOpen.Data
context : IAxoContext;
END_VAR
THIS.Initialize(context);
- THIS.Run();
+ Operation.Initialize(THIS);
+ Operation.Execute();
END_METHOD
///
@@ -70,7 +45,7 @@ NAMESPACE AXOpen.Data
VAR_INPUT
identifier : STRING[254];
END_VAR
- Create := CreateTask.Invoke(identifier);
+ Create := Operation.Invoke(identifier, eCrudOperation#Create);
END_METHOD
///
@@ -81,7 +56,7 @@ NAMESPACE AXOpen.Data
VAR_INPUT
identifier : STRING[254];
END_VAR
- Read := ReadTask.Invoke(identifier);
+ Read := Operation.Invoke(identifier, eCrudOperation#Read);
END_METHOD
///
@@ -92,7 +67,7 @@ NAMESPACE AXOpen.Data
VAR_INPUT
identifier : STRING[254];
END_VAR
- Update := UpdateTask.Invoke(identifier);
+ Update := Operation.Invoke(identifier, eCrudOperation#Update);
END_METHOD
///
@@ -103,19 +78,19 @@ NAMESPACE AXOpen.Data
VAR_INPUT
identifier : STRING[254];
END_VAR
- Delete := DeleteTask.Invoke(identifier);
+ Delete := Operation.Invoke(identifier, eCrudOperation#Delete);
END_METHOD
///
/// Check if data entry exists with given ID in remote repository.
///
/// Data identifier.
- METHOD PUBLIC EntityExist : IAxoDataEntityExistTask
+ METHOD PUBLIC EntityExist : IAxoEntityExistTaskState
VAR_INPUT
identifier : STRING[254];
END_VAR
- EntityExistTask.Invoke(identifier);
- EntityExist := EntityExistTask;
+ Operation.Invoke(identifier, eCrudOperation#EntityExist);
+ EntityExist := Operation;
END_METHOD
///
@@ -126,19 +101,14 @@ NAMESPACE AXOpen.Data
VAR_INPUT
identifier : STRING[254];
END_VAR
- CreateOrUpdate := CreateOrUpdateTask.Invoke(identifier);
+ CreateOrUpdate := Operation.Invoke(identifier, eCrudOperation#CreateOrUpdate);
END_METHOD
///
/// Restores all tasks associated with this object.
///
METHOD PUBLIC Restore
- CreateTask.Restore();
- ReadTask.Restore();
- UpdateTask.Restore();
- DeleteTask.Restore();
- EntityExistTask.Restore();
- CreateOrUpdateTask.Restore();
+ Operation.Restore();
END_METHOD
END_CLASS
END_NAMESPACE
\ No newline at end of file
diff --git a/src/data/ctrl/src/AxoDataExchangeTask.st b/src/data/ctrl/src/AxoDataExchangeTask.st
index da7831d84..1b1882bc2 100644
--- a/src/data/ctrl/src/AxoDataExchangeTask.st
+++ b/src/data/ctrl/src/AxoDataExchangeTask.st
@@ -6,8 +6,11 @@ NAMESPACE AXOpen.Data
///
CLASS AxoDataExchangeTask
EXTENDS AXOpen.Core.AxoRemoteTask
+ IMPLEMENTS IAxoEntityExistTaskState
+
VAR PUBLIC
DataEntityIdentifier : STRING[254];
+ _exist : BOOL;
END_VAR
METHOD PUBLIC Invoke : IAxoTaskState
@@ -18,6 +21,15 @@ NAMESPACE AXOpen.Data
DataEntityIdentifier := identifier;
Invoke := SUPER.Invoke();
END_METHOD
+
+ METHOD PUBLIC Exist : BOOL
+ Exist := _exist;
+ END_METHOD
+
END_CLASS
+ INTERFACE PUBLIC IAxoEntityExistTaskState EXTENDS IAxoTaskState
+ METHOD Exist : BOOL END_METHOD
+ END_INTERFACE
+
END_NAMESPACE
diff --git a/src/data/ctrl/src/AxoDataFragmentExchange.st b/src/data/ctrl/src/AxoDataFragmentExchange.st
index cc8556d26..1299edc8a 100644
--- a/src/data/ctrl/src/AxoDataFragmentExchange.st
+++ b/src/data/ctrl/src/AxoDataFragmentExchange.st
@@ -10,8 +10,6 @@ NAMESPACE AXOpen.Data
CLASS PUBLIC AxoDataFragmentExchange EXTENDS AxoDataExchangeBase IMPLEMENTS IAxoDataExchange
VAR PUBLIC
Operation : AxoDataCrudTask;
- EntityExistTask : AxoDataEntityExistTask;
- CreateOrUpdateTask : AxoDataExchangeTask;
END_VAR
///
@@ -62,12 +60,12 @@ NAMESPACE AXOpen.Data
/// Check if data entry exists in each associated remote repository with given ID.
///
/// Data identifier.
- METHOD PUBLIC EntityExist : IAxoDataEntityExistTask
+ METHOD PUBLIC EntityExist : IAxoEntityExistTaskState
VAR_INPUT
Identifier : STRING[254];
END_VAR
- EntityExistTask.Invoke(Identifier);
- EntityExist := EntityExistTask;
+ Operation.Invoke(Identifier, eCrudOperation#EntityExist);
+ EntityExist := Operation;
END_METHOD
///
@@ -78,13 +76,11 @@ NAMESPACE AXOpen.Data
VAR_INPUT
Identifier : STRING[254];
END_VAR
- CreateOrUpdate := CreateOrUpdateTask.Invoke(Identifier);
+ CreateOrUpdate := Operation.Invoke(Identifier, eCrudOperation#CreateOrUpdate);
END_METHOD
METHOD PUBLIC Restore
Operation.Restore();
- EntityExistTask.Restore();
- CreateOrUpdateTask.Restore();
END_METHOD
///
@@ -98,12 +94,6 @@ NAMESPACE AXOpen.Data
THIS.Initialize(context);
Operation.Initialize(THIS);
Operation.Execute();
-
- EntityExistTask.Initialize(THIS);
- EntityExistTask.Execute();
-
- CreateOrUpdateTask.Initialize(THIS);
- CreateOrUpdateTask.Execute();
END_METHOD
///
@@ -117,12 +107,6 @@ NAMESPACE AXOpen.Data
THIS.Initialize(parent);
Operation.Initialize(THIS);
Operation.Execute();
-
- EntityExistTask.Initialize(THIS);
- EntityExistTask.Execute();
-
- CreateOrUpdateTask.Initialize(THIS);
- CreateOrUpdateTask.Execute();
END_METHOD
END_CLASS
diff --git a/src/data/ctrl/src/IAxoDataExchange.st b/src/data/ctrl/src/IAxoDataExchange.st
index a681818cc..81fe5b7e7 100644
--- a/src/data/ctrl/src/IAxoDataExchange.st
+++ b/src/data/ctrl/src/IAxoDataExchange.st
@@ -29,7 +29,7 @@ NAMESPACE AXOpen.Data
END_VAR
END_METHOD
- METHOD EntityExist : IAxoDataEntityExistTask
+ METHOD EntityExist : IAxoEntityExistTaskState
VAR_INPUT
Identifier : STRING[254];
END_VAR
diff --git a/src/data/ctrl/test/AxoDataExchangeTests.st b/src/data/ctrl/test/AxoDataExchangeTests.st
index 9c85c3930..729cf767d 100644
--- a/src/data/ctrl/test/AxoDataExchangeTests.st
+++ b/src/data/ctrl/test/AxoDataExchangeTests.st
@@ -58,7 +58,7 @@ NAMESPACE AXOpen.Data
expected := 'CreateRecordIdentifier';
_dataExchange.Create(expected);
_context.Close();
- AxUnit.Assert.Equal(_dataExchange.CreateTask.DataEntityIdentifier, expected);
+ AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected);
END_METHOD
@@ -72,7 +72,7 @@ NAMESPACE AXOpen.Data
expected := 'ReadRecordIdentifier';
_dataExchange.Read(expected);
_context.Close();
- AxUnit.Assert.Equal(_dataExchange.ReadTask.DataEntityIdentifier, expected);
+ AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected);
END_METHOD
{Test}
@@ -85,7 +85,7 @@ NAMESPACE AXOpen.Data
expected := 'UpdateRecordIdentifier';
_dataExchange.Update(expected);
_context.Close();
- AxUnit.Assert.Equal(_dataExchange.UpdateTask.DataEntityIdentifier, expected);
+ AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected);
END_METHOD
{Test}
@@ -98,7 +98,7 @@ NAMESPACE AXOpen.Data
expected := 'DeleteRecordIdentifier';
_dataExchange.Delete(expected);
_context.Close();
- AxUnit.Assert.Equal(_dataExchange.DeleteTask.DataEntityIdentifier, expected);
+ AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected);
END_METHOD
{Test}
@@ -111,7 +111,7 @@ NAMESPACE AXOpen.Data
expected := 'EntityExistRecordIdentifier';
_dataExchange.EntityExist(expected);
_context.Close();
- AxUnit.Assert.Equal(_dataExchange.EntityExistTask.DataEntityIdentifier, expected);
+ AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected);
END_METHOD
{Test}
@@ -124,7 +124,7 @@ NAMESPACE AXOpen.Data
expected := 'CreateOrUpdateRecordIdentifier';
_dataExchange.CreateOrUpdate(expected);
_context.Close();
- AxUnit.Assert.Equal(_dataExchange.CreateOrUpdateTask.DataEntityIdentifier, expected);
+ AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected);
END_METHOD
END_CLASS
END_NAMESPACE
diff --git a/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs b/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs
index a39258443..9c3073aa9 100644
--- a/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs
+++ b/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs
@@ -145,16 +145,16 @@ public async Task CreateNew()
{
if (string.IsNullOrEmpty(CreateItemId))
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Cannot create!", "New entry name cannot be empty. Please provide an ID", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Cannot create!", "New entry name cannot be empty. Please provide an ID", 10);
return;
}
await DataExchange.CreateNewAsync(CreateItemId);
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Created!", "Item was successfully created!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Created!", "Item was successfully created!", 10);
}
catch (Exception e)
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record!", e.Message, 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record!", e.Message, 10);
}
finally
{
@@ -168,11 +168,11 @@ public void Delete()
try
{
DataExchange.Delete(SelectedRecord.DataEntityId);
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Deleted!", "Item was successfully deleted!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Deleted!", "Item was successfully deleted!", 10);
}
catch (Exception e)
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to delete", e.Message, 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to delete", e.Message, 10);
}
finally
{
@@ -192,7 +192,7 @@ public async Task Copy()
}
catch (Exception e)
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to copy!", e.Message, 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to copy!", e.Message, 10);
}
finally
{
@@ -206,14 +206,14 @@ public async Task Copy()
public async Task Edit()
{
await DataExchange.UpdateFromShadowsAsync();
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Edited!", "Item was successfully edited!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Edited!", "Item was successfully edited!", 10);
UpdateObservableRecords();
}
public async Task SendToPlc()
{
await DataExchange.FromRepositoryToControllerAsync(SelectedRecord);
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Sended to PLC!", "Item was successfully sended to PLC!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Sended to PLC!", "Item was successfully sended to PLC!", 10);
}
public async Task LoadFromPlc()
@@ -221,11 +221,11 @@ public async Task LoadFromPlc()
try
{
await DataExchange.CreateDataFromControllerAsync(CreateItemId);
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Loaded from PLC!", "Item was successfully loaded from PLC!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Loaded from PLC!", "Item was successfully loaded from PLC!", 10);
}
catch (Exception e)
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record from the controller", e.Message, 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record from the controller", e.Message, 10);
}
finally
{
@@ -248,11 +248,11 @@ public Task ExportDataAsync(string path)
IsFileExported = true;
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Exported!", "Data was successfully exported!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Exported!", "Data was successfully exported!", 10);
}
catch (Exception e)
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10);
}
});
}
@@ -267,11 +267,11 @@ public Task ImportDataAsync(string path)
this.UpdateObservableRecords();
- AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Imported!", "Data was successfully imported!", 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Imported!", "Data was successfully imported!", 10);
}
catch (Exception e)
{
- AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10);
+ AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10);
}
});
}
diff --git a/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs b/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs
index 9fa0a6d88..7ed2bbd60 100644
--- a/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs
+++ b/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs
@@ -71,7 +71,7 @@ public IEnumerable GetRecords(string identifier)
///
public bool RemoteCreate(string identifier)
{
- CreateTask.ReadAsync().Wait();
+ Operation.ReadAsync().Wait();
DataEntity.DataEntityId.SetAsync(identifier).Wait();
var cloned = ((ITwinObject)DataEntity).OnlineToPlain().Result;
@@ -84,7 +84,7 @@ public bool RemoteRead(string identifier)
{
try
{
- ReadTask.ReadAsync().Wait();
+ Operation.ReadAsync().Wait();
var record = Repository.Read(identifier);
((ITwinObject)DataEntity).PlainToOnline(record).Wait();
return true;
@@ -98,7 +98,7 @@ public bool RemoteRead(string identifier)
///
public bool RemoteUpdate(string identifier)
{
- UpdateTask.ReadAsync().Wait();
+ Operation.ReadAsync().Wait();
DataEntity.DataEntityId.SetAsync(identifier).Wait();
var cloned = ((ITwinObject)DataEntity).OnlineToPlain().Result;
Repository.Update(identifier, cloned);
@@ -108,7 +108,7 @@ public bool RemoteUpdate(string identifier)
///
public bool RemoteDelete(string identifier)
{
- DeleteTask.ReadAsync().Wait();
+ Operation.ReadAsync().Wait();
DataEntity.DataEntityId.SetAsync(identifier).Wait();
Repository.Delete(identifier);
return true;
@@ -117,7 +117,7 @@ public bool RemoteDelete(string identifier)
///
public bool RemoteEntityExist(string identifier)
{
- EntityExistTask.ReadAsync().Wait();
+ Operation.ReadAsync().Wait();
DataEntity.DataEntityId.SetAsync(identifier).Wait();
return Repository.Exists(identifier);
}
@@ -125,7 +125,7 @@ public bool RemoteEntityExist(string identifier)
///
public bool RemoteCreateOrUpdate(string identifier)
{
- CreateOrUpdateTask.ReadAsync().Wait();
+ Operation.ReadAsync().Wait();
DataEntity.DataEntityId.SetAsync(identifier).Wait();
var cloned = ((ITwinObject)DataEntity).OnlineToPlain().Result;
@@ -193,12 +193,7 @@ public void SetRepository(IRepository repository)
///
public void InitializeRemoteDataExchange()
{
- CreateTask.InitializeExclusively(RemoteCreate);
- ReadTask.InitializeExclusively(RemoteRead);
- UpdateTask.InitializeExclusively(RemoteUpdate);
- DeleteTask.InitializeExclusively(RemoteDelete);
- EntityExistTask.InitializeExclusively(RemoteEntityExist);
- CreateOrUpdateTask.InitializeExclusively(RemoteCreateOrUpdate);
+ Operation.InitializeExclusively(Handle);
this.WriteAsync().Wait();
//_idExistsTask.InitializeExclusively(Exists);
//_createOrUpdateTask.Initialize(CreateOrUpdate);
@@ -219,45 +214,72 @@ public void InitializeRemoteDataExchange(IRepository repository)
///
public void DeInitializeRemoteDataExchange()
{
- CreateTask.DeInitialize();
- ReadTask.DeInitialize();
- UpdateTask.DeInitialize();
- DeleteTask.DeInitialize();
- EntityExistTask.DeInitialize();
- CreateOrUpdateTask.DeInitialize();
+ Operation.DeInitialize();
this.WriteAsync().Wait();
//_idExistsTask.InitializeExclusively(Exists);
//_createOrUpdateTask.Initialize(CreateOrUpdate);
}
+ private async void Handle()
+ {
+ Operation.ReadAsync().Wait();
+ var operation = (eCrudOperation)Operation.CrudOperation.LastValue;
+ var identifier = Operation.DataEntityIdentifier.LastValue;
+
+ switch (operation)
+ {
+ case eCrudOperation.Create:
+ this.RemoteCreate(identifier);
+ break;
+ case eCrudOperation.Read:
+ this.RemoteRead(identifier);
+ break;
+ case eCrudOperation.Update:
+ this.RemoteUpdate(identifier);
+ break;
+ case eCrudOperation.Delete:
+ this.RemoteDelete(identifier);
+ break;
+ case eCrudOperation.CreateOrUpdate:
+ this.RemoteCreateOrUpdate(identifier);
+ break;
+ case eCrudOperation.EntityExist:
+ var result = this.RemoteEntityExist(identifier);
+ await Operation._exist.SetAsync(result);
+ break;
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+ }
+
private bool RemoteCreate()
{
- return RemoteCreate(CreateTask.DataEntityIdentifier.GetAsync().Result);
+ return RemoteCreate(Operation.DataEntityIdentifier.GetAsync().Result);
}
private bool RemoteRead()
{
- return RemoteRead(ReadTask.DataEntityIdentifier.GetAsync().Result);
+ return RemoteRead(Operation.DataEntityIdentifier.GetAsync().Result);
}
private bool RemoteUpdate()
{
- return RemoteUpdate(UpdateTask.DataEntityIdentifier.GetAsync().Result);
+ return RemoteUpdate(Operation.DataEntityIdentifier.GetAsync().Result);
}
private bool RemoteDelete()
{
- return RemoteDelete(DeleteTask.DataEntityIdentifier.GetAsync().Result);
+ return RemoteDelete(Operation.DataEntityIdentifier.GetAsync().Result);
}
private bool RemoteEntityExist()
{
- return RemoteEntityExist(EntityExistTask.DataEntityIdentifier.GetAsync().Result);
+ return RemoteEntityExist(Operation.DataEntityIdentifier.GetAsync().Result);
}
private bool RemoteCreateOrUpdate()
{
- return RemoteCreateOrUpdate(CreateOrUpdateTask.DataEntityIdentifier.GetAsync().Result);
+ return RemoteCreateOrUpdate(Operation.DataEntityIdentifier.GetAsync().Result);
}
public async Task CreateAsync(string identifier, TPlain plain)
diff --git a/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs b/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs
index e99377990..746d7d828 100644
--- a/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs
+++ b/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs
@@ -38,20 +38,16 @@ public object CreateBuilder()
public void InitializeRemoteDataExchange()
{
Operation.InitializeExclusively(Handle);
- EntityExistTask.InitializeExclusively(HandleEntityExist);
- CreateOrUpdateTask.InitializeExclusively(HandleCreateOrUpdate);
this.WriteAsync().Wait();
}
public void DeInitializeRemoteDataExchange()
{
Operation.DeInitialize();
- EntityExistTask.DeInitialize();
- CreateOrUpdateTask.DeInitialize();
this.WriteAsync().Wait();
}
- private void Handle()
+ private async void Handle()
{
Operation.ReadAsync().Wait();
var operation = (eCrudOperation)Operation.CrudOperation.LastValue;
@@ -71,29 +67,18 @@ private void Handle()
case eCrudOperation.Delete:
this.RemoteDelete(identifier);
break;
+ case eCrudOperation.CreateOrUpdate:
+ this.RemoteCreateOrUpdate(identifier);
+ break;
+ case eCrudOperation.EntityExist:
+ var result = this.RemoteEntityExist(identifier);
+ await Operation._exist.SetAsync(result);
+ break;
default:
throw new ArgumentOutOfRangeException();
}
}
- private async void HandleEntityExist()
- {
- EntityExistTask.ReadAsync().Wait();
- var identifier = EntityExistTask.DataEntityIdentifier.LastValue;
-
- var result = this.RemoteEntityExist(identifier);
-
- await EntityExistTask._exist.SetAsync(result);
- }
-
- private void HandleCreateOrUpdate()
- {
- CreateOrUpdateTask.ReadAsync().Wait();
- var identifier = CreateOrUpdateTask.DataEntityIdentifier.LastValue;
-
- this.RemoteCreateOrUpdate(identifier);
- }
-
public IRepository? Repository { get; private set; }
public ITwinObject RefUIData { get; private set; }
diff --git a/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs b/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs
index 635a45c89..baf859767 100644
--- a/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs
+++ b/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs
@@ -552,17 +552,12 @@ public async void InitializeRemoteDataExchange_ShouldInitializeRPC_Calls_WithGiv
var repo = new InMemoryRepository();
sut.InitializeRemoteDataExchange(repo);
- await sut.CreateTask.DataEntityIdentifier.SetAsync("foo");
- sut.CreateTask.StartTimeStamp.Cyclic = DateAndTime.Now;
+ await sut.Operation.DataEntityIdentifier.SetAsync("foo");
+ sut.Operation.StartTimeStamp.Cyclic = DateAndTime.Now;
- Assert.True(await sut.CreateTask.IsInitialized.GetAsync());
- Assert.True(await sut.ReadTask.IsInitialized.GetAsync());
- Assert.True(await sut.UpdateTask.IsInitialized.GetAsync());
- Assert.True(await sut.DeleteTask.IsInitialized.GetAsync());
- Assert.True(await sut.EntityExistTask.IsInitialized.GetAsync());
- Assert.True(await sut.CreateOrUpdateTask.IsInitialized.GetAsync());
+ Assert.True(await sut.Operation.IsInitialized.GetAsync());
}
[Fact()]
@@ -575,17 +570,12 @@ public async void InitializeRemoteDataExchange_ShouldInitializeRPC_Calls()
sut.SetRepository(repo);
sut.InitializeRemoteDataExchange();
- await sut.CreateTask.DataEntityIdentifier.SetAsync("foo");
- sut.CreateTask.StartTimeStamp.Cyclic = DateAndTime.Now;
+ await sut.Operation.DataEntityIdentifier.SetAsync("foo");
+ sut.Operation.StartTimeStamp.Cyclic = DateAndTime.Now;
- Assert.True(await sut.CreateTask.IsInitialized.GetAsync());
- Assert.True(await sut.ReadTask.IsInitialized.GetAsync());
- Assert.True(await sut.UpdateTask.IsInitialized.GetAsync());
- Assert.True(await sut.DeleteTask.IsInitialized.GetAsync());
- Assert.True(await sut.EntityExistTask.IsInitialized.GetAsync());
- Assert.True(await sut.CreateOrUpdateTask.IsInitialized.GetAsync());
+ Assert.True(await sut.Operation.IsInitialized.GetAsync());
}
[Fact()]
@@ -597,26 +587,16 @@ public async void DeInitializeRemoteDataExchange_ShouldInitializeRPC_Calls()
var repo = new InMemoryRepository();
sut.InitializeRemoteDataExchange(repo);
- await sut.CreateTask.DataEntityIdentifier.SetAsync("foo");
- sut.CreateTask.StartTimeStamp.Cyclic = DateAndTime.Now;
+ await sut.Operation.DataEntityIdentifier.SetAsync("foo");
+ sut.Operation.StartTimeStamp.Cyclic = DateAndTime.Now;
- Assert.True(await sut.CreateTask.IsInitialized.GetAsync());
- Assert.True(await sut.ReadTask.IsInitialized.GetAsync());
- Assert.True(await sut.UpdateTask.IsInitialized.GetAsync());
- Assert.True(await sut.DeleteTask.IsInitialized.GetAsync());
- Assert.True(await sut.EntityExistTask.IsInitialized.GetAsync());
- Assert.True(await sut.CreateOrUpdateTask.IsInitialized.GetAsync());
+ Assert.True(await sut.Operation.IsInitialized.GetAsync());
sut.DeInitializeRemoteDataExchange();
- Assert.False(await sut.CreateTask.IsInitialized.GetAsync());
- Assert.False(await sut.ReadTask.IsInitialized.GetAsync());
- Assert.False(await sut.UpdateTask.IsInitialized.GetAsync());
- Assert.False(await sut.DeleteTask.IsInitialized.GetAsync());
- Assert.False(await sut.EntityExistTask.IsInitialized.GetAsync());
- Assert.False(await sut.CreateOrUpdateTask.IsInitialized.GetAsync());
+ Assert.False(await sut.Operation.IsInitialized.GetAsync());
}
diff --git a/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs b/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs
index 9449287cd..47b223cf6 100644
--- a/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs
+++ b/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs
@@ -9,6 +9,7 @@
using Microsoft.AspNetCore.Components.Web;
using Pocos.IntegrationAxoDataFramentsExchange;
using Serilog;
+using AXOpen.Core;
namespace axopen_integrations_blazor
{
@@ -22,7 +23,7 @@ public static async Task Main(string[] args)
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton();
-
+ builder.Services.AddAxoCoreServices();
builder.Services.AddIxBlazorServices();
//builder.Services.AddScoped();
@@ -108,7 +109,6 @@ public static async Task Main(string[] args)
//
Entry.Plc.AxoLoggers.LoggerOne.StartDequeuing(AxoApplication.Current.Logger, 250);
- Entry.Plc.AxoLoggers.LoggerTwo.StartDequeuing(AxoApplication.Current.Logger, 250);
//
diff --git a/src/templates.simple/.config/dotnet-tools.json b/src/templates.simple/.config/dotnet-tools.json
index eca5c36c9..fc8e2cd35 100644
--- a/src/templates.simple/.config/dotnet-tools.json
+++ b/src/templates.simple/.config/dotnet-tools.json
@@ -3,13 +3,13 @@
"isRoot": true,
"tools": {
"AXSharp.ixc": {
- "version": "0.14.0-alpha.112",
+ "version": "0.14.0-alpha.115",
"commands": [
"ixc"
]
},
"AXSharp.ixr": {
- "version": "0.14.0-alpha.112",
+ "version": "0.14.0-alpha.115",
"commands": [
"ixr"
]