void LoadDataSourceLocks(ISystemContext context, DsatsDemo.DataSource.DataSource datasource)
        {
            if (datasource == null || datasource.Lock == null)
            {
                return;
            }

            foreach (DsatsDemo.DataSource.LockType source in datasource.Lock)
            {
                DsatsDemo.LockConditionState node = datasource.ReadLock(context, source);

                node.Request.OnCallMethod2 = OnRequestLock;
                node.Release.OnCallMethod2 = OnReleaseLock;
                node.Approve.OnCallMethod2 = OnApproveLock;
                node.LockStateAsString.OnWriteValue = OnChangeLockByWrite;

                if (source.Permission != null)
                {
                    foreach (DsatsDemo.DataSource.CertificatePermissionType permission in source.Permission)
                    {
                        node.SetPermission(permission.Thumbprint);
                    }
                }

                node.AddNotifier(context, Opc.Ua.ReferenceTypeIds.HasEventSource, true, m_rig.Locks);
                m_rig.Locks.AddNotifier(context, Opc.Ua.ReferenceTypeIds.HasEventSource, false, node);

                AddPredefinedNode(context, node);
            }
        }