/// <summary> /// Changes owner of process element data. /// <param name="elementDataOwnerInfo">Information about owner of process element data.</param> /// </summary> public void Change(SysProcessElementDataOwnerInfo elementDataOwnerInfo) { var ownerProcessesId = GetEntityProcesses(elementDataOwnerInfo); if (ownerProcessesId.Length > 0) { UpdateSysProcessElementDataOwner(ownerProcessesId, elementDataOwnerInfo); UpdateSysProcessElementToDoOwner(ownerProcessesId, elementDataOwnerInfo); } }
private Guid[] GetEntityProcesses(SysProcessElementDataOwnerInfo elementDataOwnerInfo) { var select = new Select(_userConnection) .Column("SysProcessId") .From("SysProcessEntity").WithHints(new NoLockHint()) .Where("EntityId") .IsEqual(Column.Parameter(elementDataOwnerInfo.EntityId)) as Select; return(select.ExecuteEnumerable(r => r.GetColumnValue <Guid>("SysProcessId")).ToArray()); }
/// <summary> /// <see cref="IEntityEventAsyncOperation.Execute"/> /// <remarks>Executes operation by changing process elements data owner.</remarks> /// </summary> public void Execute(UserConnection userConnection, EntityEventAsyncOperationArgs arguments) { var operationArgs = (EntityOwnerEventAsyncOperationArgs)arguments; var ownerProcessInfo = new SysProcessElementDataOwnerInfo { EntityId = operationArgs.EntityId, NewOwnerId = operationArgs.EntityColumnValues.GetTypedValue <Guid>(operationArgs.OwnerColumnName), OldOwnerId = operationArgs.OldEntityColumnValues.GetTypedValue <Guid>(operationArgs.OwnerColumnName), }; new SysProcessElementDataOwner(userConnection).Change(ownerProcessInfo); }
private void UpdateSysProcessElementDataOwner(IEnumerable <Guid> processesId, SysProcessElementDataOwnerInfo elementDataOwnerInfo) { new Update(_userConnection, "SysProcessElementData") .Set("OwnerId", Column.Parameter(elementDataOwnerInfo.NewOwnerId)) .Where("SysProcessId").In(Column.Parameters(processesId)) .And("OwnerId").IsEqual(Column.Parameter(elementDataOwnerInfo.OldOwnerId)) .Execute(); }