diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb
index 84f8f1b6..f1f6ad9f 100644
--- a/Modules.EDMIAPI/Client.vb
+++ b/Modules.EDMIAPI/Client.vb
@@ -151,6 +151,22 @@ Public Class Client
End Try
End Function
+ Public Async Function GetAccessRightAsync(UserId As Long, ObjectId As Long) As Task(Of Rights.AccessRight)
+ Try
+ Dim oResponse As AccessRightResult = Await _channel.GetAccessRightAsync(UserId, ObjectId)
+
+ If oResponse.OK Then
+ Return oResponse.Right
+ Else
+ _logger.Warn("Rights from server could not be fetched for UserId [{0}] on Object [{1}]. Returning default Right View", UserId, ObjectId)
+ Return Rights.AccessRight.VIEW_ONLY
+ End If
+ Catch ex As Exception
+ _logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
'''
''' Aborts the channel and creates a new connection
'''
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult.datasource
new file mode 100644
index 00000000..6b5713fa
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult.datasource
@@ -0,0 +1,10 @@
+
+
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.xsd
new file mode 100644
index 00000000..b79942a2
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
index 943f1763..6bbe67ac 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
@@ -1,5 +1,6 @@
+
@@ -48,4 +49,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
index 49a6e750..186b4eab 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
@@ -7,6 +7,7 @@
+
@@ -76,6 +77,12 @@
+
+
+
+
+
+
@@ -140,6 +147,10 @@
+
+
+
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
index 333e0f84..29204c42 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
@@ -156,6 +156,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -184,7 +199,7 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
index 8b05869e..873b6dfc 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
@@ -29,6 +29,7 @@
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
index e1e3d13a..42e51812 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
@@ -23,6 +23,7 @@ Namespace EDMIServiceReference
System.SerializableAttribute(), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ScalarResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.AccessRightResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult))> _
Partial Public Class BaseResult
Inherits Object
@@ -82,182 +83,229 @@ Namespace EDMIServiceReference
End If
End Sub
End Class
-
- _
+
+
Partial Public Class ScalarResult
Inherits EDMIServiceReference.BaseResult
-
- _
+
+
Private ScalarField As Object
-
- _
+
+
Public Property Scalar() As Object
Get
Return Me.ScalarField
End Get
Set
- If (Object.ReferenceEquals(Me.ScalarField, value) <> true) Then
- Me.ScalarField = value
+ If (Object.ReferenceEquals(Me.ScalarField, Value) <> True) Then
+ Me.ScalarField = Value
Me.RaisePropertyChanged("Scalar")
End If
End Set
End Property
End Class
-
- _
+
+
Partial Public Class NonQueryResult
Inherits EDMIServiceReference.BaseResult
End Class
-
- _
+
+
+ Partial Public Class AccessRightResult
+ Inherits EDMIServiceReference.BaseResult
+
+
+ Private RightField As EDMIServiceReference.RightsAccessRight
+
+
+ Public Property Right() As EDMIServiceReference.RightsAccessRight
+ Get
+ Return Me.RightField
+ End Get
+ Set
+ If (Me.RightField.Equals(Value) <> True) Then
+ Me.RightField = Value
+ Me.RaisePropertyChanged("Right")
+ End If
+ End Set
+ End Property
+ End Class
+
+
Partial Public Class TableResult
Inherits EDMIServiceReference.BaseResult
-
- _
+
+
Private TableField As System.Data.DataTable
-
- _
+
+
Public Property Table() As System.Data.DataTable
Get
Return Me.TableField
End Get
Set
- If (Object.ReferenceEquals(Me.TableField, value) <> true) Then
- Me.TableField = value
+ If (Object.ReferenceEquals(Me.TableField, Value) <> True) Then
+ Me.TableField = Value
Me.RaisePropertyChanged("Table")
End If
End Set
End Property
End Class
-
- _
+
+
+ Public Enum RightsAccessRight As Integer
+
+
+ VIEW_ONLY = 1
+
+
+ VIEW_EXPORT = 2
+
+
+ FULL = 4
+ End Enum
+
+
Public Interface IEDMIService
-
- _
+
+
Function Heartbeat() As Boolean
-
- _
+
+
Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean)
-
- _
+
+
Function ReturnDatatableFromCache(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As EDMIServiceReference.TableResult
-
- _
+
+
Function ReturnDatatableFromCacheAsync(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
- _
+
+
Function ReturnDatatable_Firebird(ByVal SQL As String) As EDMIServiceReference.TableResult
-
- _
+
+
Function ReturnDatatable_FirebirdAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
- _
+
+
Function ReturnScalar_Firebird(ByVal SQL As String) As EDMIServiceReference.ScalarResult
-
- _
+
+
Function ReturnScalar_FirebirdAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.ScalarResult)
-
- _
+
+
Function ExecuteNonQuery_Firebird(ByVal SQL As String) As EDMIServiceReference.NonQueryResult
-
- _
+
+
Function ExecuteNonQuery_FirebirdAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.NonQueryResult)
-
- _
+
+
Function ReturnDatatable_MSSQL_IDB(ByVal SQL As String) As EDMIServiceReference.TableResult
-
- _
+
+
Function ReturnDatatable_MSSQL_IDBAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
- _
+
+
Function ReturnScalar_MSSQL_IDB(ByVal SQL As String) As EDMIServiceReference.ScalarResult
-
- _
+
+
Function ReturnScalar_MSSQL_IDBAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.ScalarResult)
-
- _
+
+
Function ExecuteNonQuery_MSSQL_IDB(ByVal SQL As String) As EDMIServiceReference.NonQueryResult
-
- _
+
+
Function ExecuteNonQuery_MSSQL_IDBAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.NonQueryResult)
-
- _
+
+
Function ReturnDatatable_MSSQL_ECM(ByVal SQL As String) As EDMIServiceReference.TableResult
-
- _
+
+
Function ReturnDatatable_MSSQL_ECMAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
- _
+
+
Function ReturnScalar_MSSQL_ECM(ByVal SQL As String) As EDMIServiceReference.ScalarResult
-
- _
+
+
Function ReturnScalar_MSSQL_ECMAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.ScalarResult)
-
- _
+
+
Function ExecuteNonQuery_MSSQL_ECM(ByVal SQL As String) As EDMIServiceReference.NonQueryResult
-
- _
+
+
Function ExecuteNonQuery_MSSQL_ECMAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.NonQueryResult)
-
+
+
+ Function GetAccessRight(ByVal UserId As Long, ByVal ObjectId As Long) As EDMIServiceReference.AccessRightResult
+
+
+ Function GetAccessRightAsync(ByVal UserId As Long, ByVal ObjectId As Long) As System.Threading.Tasks.Task(Of EDMIServiceReference.AccessRightResult)
+
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentImportRequest) von Nachricht "DocumentImportRequest" nicht mit dem Standardwert (ImportFile) übereinstimmt.
- _
+
Function ImportFile(ByVal request As EDMIServiceReference.DocumentImportRequest) As EDMIServiceReference.DocumentImportResponse
-
- _
+
+
Function ImportFileAsync(ByVal request As EDMIServiceReference.DocumentImportRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentImportResponse)
-
+
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt.
- _
+
Function GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse
-
- _
+
+
Function GetFileByObjectIdAsync(ByVal request As EDMIServiceReference.DocumentStreamRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentStreamResponse)
-
+
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Vorgang ListFilesForUser weder in RPC noch in einem Dokument eingeschlossen ist.
- _
+
Function ListFilesForUser(ByVal request As EDMIServiceReference.ListFilesForUserRequest) As EDMIServiceReference.DocumentListResponse
-
- _
+
+
Function ListFilesForUserAsync(ByVal request As EDMIServiceReference.ListFilesForUserRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentListResponse)
End Interface
-
+
_
Function EDMIServiceReference_IEDMIService_ImportFile(ByVal request As EDMIServiceReference.DocumentImportRequest) As EDMIServiceReference.DocumentImportResponse Implements EDMIServiceReference.IEDMIService.ImportFile
Return MyBase.Channel.ImportFile(request)
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl
index 8057e4f2..ab72cafa 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl
@@ -140,6 +140,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj
index 2e00b6e9..62d7626b 100644
--- a/Modules.EDMIAPI/EDMI.API.vbproj
+++ b/Modules.EDMIAPI/EDMI.API.vbproj
@@ -106,6 +106,9 @@
+
+ Reference.svcmap
+
Reference.svcmap
@@ -124,6 +127,9 @@
Reference.svcmap
+
+ Designer
+
Designer
diff --git a/Service.EDMIService/Results/AccessRightResult.vb b/Service.EDMIService/Results/AccessRightResult.vb
index d8640d49..d38239ff 100644
--- a/Service.EDMIService/Results/AccessRightResult.vb
+++ b/Service.EDMIService/Results/AccessRightResult.vb
@@ -3,9 +3,12 @@ Imports DigitalData.Modules.Language
Imports DigitalData.Modules.EDMI.API.Rights
Namespace Messages
+
+
Public Class AccessRightResult
Inherits BaseResult
+
Public Property Right As AccessRight = AccessRight.VIEW_ONLY
Public Sub New(AccessRight As AccessRight)
diff --git a/Service.EDMIService/Scheduler.vb b/Service.EDMIService/Scheduler.vb
index 795cd335..bcd86946 100644
--- a/Service.EDMIService/Scheduler.vb
+++ b/Service.EDMIService/Scheduler.vb
@@ -52,26 +52,49 @@ Public Class Scheduler
Dim oTitle As String = oRow.Item("TITLE")
Dim oGuid As Integer = oRow.Item("GUID")
- Dim oTrigger As ITrigger
+ Dim oCronTrigger As ITrigger
+ Dim oInitTrigger As ITrigger
+
Dim oJob As IJobDetail
+ Dim oInitJob As IJobDetail
+
+ Dim oJobData As New JobDataMap From {
+ {"LogConfig", _LogConfig},
+ {"MSSQL", _MSSQL},
+ {"CronJobId", oGuid},
+ {"CronJobTitle", oTitle}
+ }
+
Dim oIdentity As String = $"CRON-JOB-{oGuid}"
- oTrigger = TriggerBuilder.Create().
- WithIdentity(oIdentity, JOB_GROUP).
+ oCronTrigger = TriggerBuilder.Create().
+ WithIdentity(oIdentity & "-TRIGGER", JOB_GROUP).
WithCronSchedule(oDefinition).
Build()
oJob = JobBuilder.Create(Of DatatableJob)().
WithIdentity(oIdentity, JOB_GROUP).
- UsingJobData(New JobDataMap From {
- {"LogConfig", _LogConfig},
- {"MSSQL", _MSSQL},
- {"CronJobId", oGuid},
- {"CronJobTitle", oTitle}
- }).
+ UsingJobData(oJobData).
Build()
- Await _Scheduler.ScheduleJob(oJob, oTrigger)
+ Await _Scheduler.ScheduleJob(oJob, oCronTrigger)
+
+ ' Also create variant of the job that runs immediately, once
+
+ Dim oInitIdentity As String = $"CRON-JOB-INIT-{oGuid}"
+
+ oInitTrigger = TriggerBuilder.Create().
+ WithIdentity(oInitIdentity & "-TRIGGER", JOB_GROUP).
+ StartNow().
+ Build()
+
+ oInitJob = JobBuilder.Create(Of DatatableJob)().
+ WithIdentity(oInitIdentity, JOB_GROUP).
+ UsingJobData(oJobData).
+ Build()
+
+ Await _Scheduler.ScheduleJob(oInitJob, oInitTrigger)
+
_Logger.Debug("Scheduled a new job for Cron Job [{0}]", oTitle)
Next
Else
@@ -83,6 +106,9 @@ Public Class Scheduler
End Try
End Sub
+
+
+
Public Async Function GetCronJobs() As Task(Of DataTable)
Try
Dim oSQL As String = "SELECT * FROM TBAPPSERV_CRON_JOB WHERE ACTIVE = 1"