ComponentVersion
BcsService.exe3.4.321.0

Dependencies

ComponentMin. Version
Audio32.dll2.12.221.0 (as minimum, part of release 2019.2)

DigaSQL

3.14.3466.0

EndPoints.dll1.0.8.0
BcsHelpers.dll1.0.22.0 
IBCS.dll3.0.124.0 
RtfQuillDeltaConverter.dll1.0.56.0
.NET 4.6

Known issues

  • If the service client crashed locked BCS nodes related to the client can't be unlocked via BCS Service and must be force unlocked (e.g. via DigAIRange) 
  • If client locked BCS node and then unexpected terminated (e.g. killed in Task Manager) locked node will be unlocked only after client inactivity connection timeout is exceeded
  • Full name in DigaSystem must be always filled and be unique by every user. Otherwise isn't possible to set properly speaker & speaking speed in broadcast list

New features

  • API
    • Support WS and WSS connections to BCS
    • OIDC login is approved for WebSocket authentication
    • OIDC login is approved for HTTP authentication
    • Unified PostDatabaseObject request for import any database objects
    • Support multiple database objects in PostDatabaseObject request
    • Support multiple database objects via parameter "Reference" in PostDatabaseObject request
    • Support optional extra BCS metadata for imported database objects in PostDatabaseObject request
    • Support changed RTF in BCS notifications
    • Enable modern lock notification mechanism based on multilock info. Warning!!! Notification format is changed. See documentation for details
    • Remove obsolete NodeId parameter from lock / unlock notifications
    • Send lock / unlock notifications
    • Support insert & update RTF in PostNode request
    • Support insert & update RTF in PutNode request
    • Support LockWithRtf request
    • Optional flag to not change already specified speakers for PutSpeaker request
    • Set default value for the parameter strictTrackNumbers in PutSpeaker request as false
    • CopyShow provide option to copy specified tracks only
    • Force to use for REST DeleteLock request access token only
    • Force to use for REST DeleteLogin request access token only
    • Force to use for REST DeleteNodeNotification request access token only
    • FileHandlingProgress and FileHandlingResult requests requires authentication now
    • Show parameter name in error message if parameter value is invalid
    • More detailed error message about requested RTF files for nodes located in BCS trash
  • Others
    • Initialize BCS day at once before 1-st CRUD request
    • GetPrograms request is more performant through using cached BCS programs information
    • Performance optimization for large number of client connections
    • Use new RtfQullDelta converter based on SautinSoft library
    • Use new RtfQuillDeltaConverter to remove footer from RTF
    • Check IBCS.dll version at start
    • Use the BCSHelpers.dll for replication RTF files imported from database
    • Exclude passwords from debugging log

Bug fixes

  • Determine RTF referenced files in any XML tags with file references
  • Remove inactive WebSocket connections
  • Set properly default flag for removing all specified speakers in PutSpeaker request
  • Properly read RTF files locked for writing from another client
  • Properly handle client connection identifiers
  • Return empty string instead error for non-existed RTF files for compatibility with DigAIRange
  • Escaped JSON string returned from WebSocket request GetRtfFile
  • DpeAuthorizationToken request return error for connections with OpenID authentication
  • Insert imported database objects with properly sequence
  • Properly handle CheckIsTargetShowEmpty flag in PutCopyShow request
  • Copy media files referenced in source show in PutCopyShow request if AnalyzeMediaFiles flag is used
  • Properly copy shows with AnalyzeMediaFiles parameter as false
  • Properly check is target show empty
  • Properly handle short time file changes
  • Properly lock RTF file if lock mode isn't specified in PutRtfFile request
  • Properly lock non-existed RTF file in LockWithRtfFile request
  • Properly remove file locks by WebSocket connection closing
  • Send lock / unlock notifications only at once
  • Send lock / Unlock notifications only to related clients connected under the same BCS account
  • Send lock notifications in JSON format without unnecessary wrapped fields
  • No more error message if referenced RTF file from BCS notification doesn't exist
  • If RTF file doesn't exist wait until it copied into BCS media directory before locking
  • Return properly full id to the moved node in PutMoveNode request
  • No more error by unlocking not locked node
  • Wrong formatted RTF by XML output format in GetRtfFile request
  • Properly change RTF content if full XML is specified in PutNode & PostNode requests
  • Remove backup files after restore if already existed RTF file can't be changed
  • Properly handle PutNode & PostNode requests with some specififc formatted RtfQuillDelta RTF content
  • Properly combine track from source & destination shows
  • Unlock all locked files after closing connection from client
  • Properly handle sending close notification to already non-existed clients
  • Unlock all locked nodes after closing connection from client
  • Properly response to PostDatabaseObject request via websocket in JSON format with different database objects types
  • Properly recalculate text duration in PutNode request if only partial XML is specifified for update
  • Always include connection identifier initiated locking event into event message
  • No more overloading by checking inactive file handling tasks
  • Race condition by accessing to file handling task