Модуль org.unidata.mdm.bulk.core

Общая информация

Модуль содержит сервис запуска и получения информации о массовых операциях, реализующих интерфейс BulkOperation, а также интерфейсы и классы необходимые при реализации самих операций для использования функциональности модуля.

Зависимости

  • org.unidata.mdm.core

  • org.unidata.mdm.search

  • org.unidata.mdm.draft

Параметры конфигурации

Отсутствуют внешние параметры

Точки в пайплайнах

Отсутствуют

Классы и интерфейсы модуля

  • BulkOperationService - Сервис для работы c массовыми операциями.

    • содержит реестр массовых операций (BulkOperation), в который необходимо регистрировать создаваемые операции;

    • содержит реестр критериев выборки (BulkOperationState), в которые необходимо регистрировать новые критерии;

    • позволяет получить описания (BulkOperationDescriptor) всех операций из реестра;

    • позволяет получить все критерии выборки из реестра;

    • позволяет получить описание по ID операции;

    • позволяет получить критерий выборки по имени критерия;

    • позволяет получить описания всех операций, которые указанную комбинацию пространств имен и критериев выборки;

    • позволяет запустить операцию;

  • BulkOperation - Интерфейс, через который реализуются массовые операции.

Позволяет получить ID операции и запустить ее исполнение. * BulkOperationDescriptor - Представляет дескриптор операции. * BulkOperationState - Представляет критерий выборки.

Сервисы

Сервис для работы с массовыми операциями (org.unidata.mdm.bulk.core.service.BulkOperationService)

В текущей стандартной реализации поиск операций Collection<BulkOperationDescriptor> descriptors(Collection<String> nameSpaces, Collection<String> states) по поддерживаемым пространствам имен и критериям выборки происходит таким образом, что возвращаются все операции, которые поддерживают хотя бы одно из пространств имен и все из указанных критериев выборки.

/**
* @author Mikhail Mikhailov on Mar 25, 2022
*/
public interface BulkOperationService {
   /**
   * Registers a bulk operation at system.
   * @param operation the operation
   */
   void register(BulkOperation operation);
   /**
   * Registers BOp states.
   * @param states the states
   */
   void register(Collection<BulkOperationState> states);
   /**
   * Gets all registered descriptors.
   * @return all registered descriptors
   */
   @Nonnull
   Collection<BulkOperationDescriptor> descriptors();
   /**
   * Returns all registered states.
   * @return all registered states
   */
   @Nonnull
   Collection<BulkOperationState> states();
   /**
   * Gets a specific descriptor by BOp ID.
   * @param id the id
   * @return descriptor or null, if not found
   */
   @Nullable
   BulkOperationDescriptor descriptor(String id);
   /**
   * Gets registerd state by state name
   * @param name the state name
   * @return state or null, if not found
   */
   @Nullable
   BulkOperationState state(String name);
   /**
   * Filter only those descriptors, which support given combination of namespaces and states.
   * @param nameSpaces namespaces
   * @param states states
   * @return collection of descriptors
   */
   @Nonnull
   Collection<BulkOperationDescriptor> descriptors(Collection<String> nameSpaces, Collection<String> states);
   /**
   * Runs a bulk operation.
   * @param ctx the context
   * @return result
   */
   AbstractBulkOperationResult execute(AbstractBulkOperationContext ctx);
}

Классы и интерфейсы, необходимые для реализации

Интерфейс массовой операции

org.unidata.mdm.bulk.core.type.BulkOperation

/**
* @author Mikhail Mikhailov on Mar 25, 2022
*/
public interface BulkOperation {
   /**
   * Gets the ID of this BOp.
   * @return ID of this BOp
   */
   BulkOperationDescriptor descriptor();
   /**
   * Executes this bulk operation.
   * @param input the BOp input
   */
   AbstractBulkOperationResult execute(AbstractBulkOperationContext input);
}

Дескриптор операции

org.unidata.mdm.bulk.core.type.BulkOperationDescriptor

Указаны только поля:

/**
* @author Mikhail Mikhailov on Mar 26, 2022
*/
public class BulkOperationDescriptor {
   /**
   * This BOp ID.
   */
   private final String id;
   /**
   * This BOp module ID.
   */
   private final String moduleId;
   /**
   * Display name.
   */
   private final Supplier<String> displayName;
   /**
   * Description.
   */
   private final Supplier<String> description;
   /**
   * The exact input type class.
   */
   private final Class<? extends AbstractBulkOperationContext> inputType;
   /**
   * Supported namespaces.
   */
   private final Set<NameSpace> nameSpaces = new HashSet<>();
   /**
   * Supported operation states.
   * Collection of states is understood as AND condition
   * (if this descriptor defines two states, those two states must also be defined during filtering to select this op/descriptor).
   */
   private final Set<BulkOperationState> states = new HashSet<>();

   private final Set<BulkOperationOption> options = new HashSet(); //Параметры запуска операции
}

Критерий выборки

org.unidata.mdm.bulk.core.type.BulkOperationState

Указаны только поля:

/**
* @author Mikhail Mikhailov on Mar 25, 2022
*/
public final class BulkOperationState {
   /**
   * NS.
   */
   private final String name;
   /**
   * Exporting module ID.
   */
   private final String moduleId;
   /**
   * A possibly localized display name.
   */
   private final Supplier<String> displayName;
   /**
   * A possibly localized description.
   */
   private final Supplier<String> description;
   /**
   * Hash.
   */
   private final int h;
}