Компонентная бизнес модель как составить

Component Business Model (CBM) — техника, развитая IBM, чтобы смоделировать и проанализировать предприятие. Это — логическое представление или карта бизнес-компонентов или «стандартных блоков» и может быть изображено на единственной странице. Это может использоваться, чтобы проанализировать выравнивание стратегии предприятия с возможностями организации, и инвестиции, чтобы определить избыточные или накладывающиеся деловые возможности, проанализировать возможности сорсинга для различных компонентов (купите или постройте), располагая по приоритетам варианты преобразования, и может использоваться, чтобы создать объединенную дорожную карту после слияний или приобретений.

Модель организована как бизнес-компоненты вдоль колонок и «эксплуатационных уровней» вдоль рядов. Бизнес-компоненты определены частично как большие сферы бизнеса с характерными навыками, возможностями IT и процессом. Три эксплуатационных уровня «Прямые», «Контроль» и «Выполняют» — они отделяют стратегические (Прямые) решения, управленческие проверки (Контроль), и деловые действия (Выполняют) на деловых компетенциях.

Критика

С развитием компетентности развития компонентов «Логика» и «стоимость» стали словами в литературе по бизнес-моделям. Однако, за прошлые годы, подходы Бизнес-модели развили и включают сегодня дизайн бизнес-модели, инновации бизнес-модели и преобразование бизнес-модели. Даже при том, что подход бизнес-модели IBM хорош для отображения компонентов бизнес-модели или продукта, следующие критические замечания были определены. Составляющий подход Бизнес-модели IBM:

  • Основан на компонентах, которые, как предполагается, состоят из людей, процессов и технологии, необходимой этому компоненту, чтобы действовать как автономное предприятие. Как подвергшийся критике законно ‘технологический’ элемент в каждом блоке — определенно дань основному бизнесу IBM, в то время как это не обязательная часть многих бизнес-моделей в действительности. Это — стратегия, которая жизненно важна в пределах бизнес-модели, не технологии.
  • Термин ‘процесс’ в рамках составляющего описания IBM, также законно подвергся критике, требует дополнительных объяснений, потому что у этого есть двойное значение в Бизнесе и единственное значение в IT; какой предназначался здесь? И почему каждый бизнес-компонент должен действовать как «автономное предприятие» вместо того, чтобы быть составами бизнес-компонентов также (т.е. он не может действовать, стоя один)?
  • Не включает Корпоративную структуру https://ru.knowledgr.com/07433067/ModelloDiBusinessComponente» target=»_blank»]ru.knowledgr.com[/mask_link]

    Компонентная модель бизнеса

    КМБ, CBM, Component Business Model™ – методика, используемая для представления деятельности компании в виде набора отдельных бизнес-компонент, распределенных по компетенциям бизнеса и уровням управления (ответственности), для анализа и идентификации возможностей улучшения и инновации. Методика компонентного бизнес-моделирования разработана компанией IBM и успешно используется ею для собственных проектов. Вместе с тем, созданный IBM инструмент для отображения бизнеса компаний оказался очень удобным, и его применение сейчас выходит за рамки проектов в области ИТ в силу своей универсальности, удобства, наглядности.

    Консалтинг

    • Компетенции
    • Реализованные проекты
    • Клиенты и партнеры
    • Рекомендации и отзывы

    Бизнес-обучение

    • Программы обучения
    • Рекомендации и отзывы
    • Словарь бизнес-терминов
    • Обзоры бизнес-литературы
    • Записаться на Обучение в группе
    • Записаться на Индивидуальное обучение

    Источник: www.semenyutin.ru

    [ELMA3] Компонентная модель

    Для инициализации и работы с ядром системы существует менеджер компонентов – класс EleWise.ELMA.ComponentModel.ComponentManager . Он позволяет инициализировать компонентную модель, регистрировать и получать компоненты. При запуске системы менеджер компонентов загружает сборки, помеченные атрибутом EleWise.ELMA.ComponentModel.ComponentAssemblyAttribute и обрабатывает их на наличие компонентов.

    Основные классы для работы с компонентной моделью расположены в сборке EleWise.ELMA.SDK в пространстве имен EleWise.ELMA.ComponentModel .

    Типы, используемые в компонентной модели

    • • ExtensionPointAttribute – атрибут для объявления интерфейса-расширения;
      • ComponentManager – менеджер доступа к загруженным компонентам;
      • ComponentAssemblyAttribute – атрибут для объявления сборки, содержащей компоненты;
      • ComponentAttribute – атрибут для объявления компонента;
      • IInitHandle r – точка расширения для обработки загрузки компонентов.

    Создание точки расширения

    Для создания точки расширения необходимо создать интерфейс и пометить его атрибутом EleWise.ELMA.ComponentModel.ExtensionPointAttribute .

    namespace EleWise.ELMA.ComponentModel < /// /// Атрибут интерфейса точки расширения /// [AttributeUsage(AttributeTargets.Interface)] public class ExtensionPointAttribute : Attribute < /// /// Точка расширения с типом жизненного цикла Application и регистрацией экземпляров компонентов /// public ExtensionPointAttribute(); /// /// Точка расширения с указанным типом регистрации компонентов (регистрация типов компонентов, либо экземпляров компонента) /// /// Если false, то регистрируются только типы компонентов, реализующих данную точку расширения public ExtensionPointAttribute(bool createInstance); /// /// Точка расширения с указанным типом жизненного цикла /// /// Тип жизненного цикла компонентов, реализующих данную точку расширения public ExtensionPointAttribute(ServiceScope serviceScope); /// /// Создавать ли экземпляры компонентов /// /// /// True, если нужно создать экземпляры (после загрузки они доступны через метод IComponentManager.GetExtensionPoints). /// False, если нужно загружать только их типы (после загрузки они доступны через метод IComponentManager.GetExtensionPointTypes). /// public bool CreateInstance < get; >/// /// Контекст, в котором будут зарегистрированы и созданы компоненты, реализующие точку расширения /// Applcation — регистрация на уровне приложения (до инициализации IInitHandler.Init), один экземпляр на приложение /// Shell — регистрация уровне контейнера (контейнер пересоздается после включения/отключения расширений), один экземпляр на контейнер /// Transient — регистрация уровне контейнера, экземпляр создается на пождому запросу из контейнера /// UnitOfWork — регистрация уровне контейнера, экземпляр создается на каждый UnitOfWork (в Web сонтексте на каждый HTTP запрос) /// public ServiceScope ServiceScope < get; >> >
    /// /// Точка расширения для меню /// [ExtensionPoint] public interface IMenuExtension < /// /// Получить список пунктов меню. /// MenuItem[] GetMenuItems(); >

    Создание компонента

    Для создания компонента нужно проверить наличие у сборки, в которой он создается, атрибута EleWise.ELMA.ComponentModel.ComponentAssemblyAttribute . Если его нет, нужно прописать.

    [assembly: EleWise.ELMA.ComponentModel.ComponentAssembly]

    Затем создать класс, реализовать интерфейс точки расширения и пометить атрибутом EleWise.ELMA.ComponentModel.ComponentAttribute .

    namespace EleWise.ELMA.ComponentModel < /// /// Атрибут компонента, реализующего точки расширений /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)] public class ComponentAttribute : Attribute < /// /// Порядок, в котором выстраивается список компонентов, реализующих определенную точку расширения /// [DefaultValue(0)] public int Order < get; set; >/// /// Автоматически инициализировать значения свойств (через контейнер Autofac) /// [DefaultValue(true)] public bool InjectProerties < get; set; >/// /// Применять перехватчики методов к классу /// [DefaultValue(false)] public bool EnableInterceptiors < get; set; >> >
    /// /// Компонент, реализующий точку расширения IMenuExtension /// [Component] public class CustomMenuExtension : IMenuExtension < public MenuItem[] GetMenuItems() < . >>

    Менеджер компонентов

    Менеджер компонентов создается при запуске системы и может быть получен после его создания через статическое свойство ComponentManager.Current .

    namespace EleWise.ELMA.ComponentModel
    < /// /// Менеджер компонентов /// public class ComponentManager : IComponentManager, IDisposable < /// /// Этап жизненного цикла /// public enum LifetimeStage < /// /// До начала инициализации /// BeforeInit, /// /// В момент вызова IInitHandler.Init /// Initializing, /// /// В момент вызова IInitHandler.InitComplete /// InitCompleting, /// /// После инициализации /// Initialized, /// /// Уничтожен /// Disposed > /// /// Получить текущий менеджер /// public static ComponentManager Current < get; >/// /// Инициализирован или нет /// public static bool Initialized < get; >/// /// Текущий контейнер IoC (доступен только в процессе начала инициализации — в методе IInitHandler.Init) /// public static ContainerBuilder Builder < get; >/// /// Этап жизненного цикла /// public LifetimeStage Stage < get; >/// /// Зарегистрировать существующий компонент. Метод доступен на этапах BeforeInit и Initializing. /// /// Компонент public ComponentManager RegisterComponent(object component); /// /// Зарегистрировать сборку, в которой будет искаться компоненты.

    Метод доступен на этапах BeforeInit и Initializing. /// /// Сборка public ComponentManager RegisterAssembly(Assembly assembly); /// /// Возвращает компонент определенного типа. Метод доступен на этапах Initializing, InitCompleting и Initialized. /// /// Тип расширения /// Экземпляр расширения public T GetExtensionPointByType(); /// /// Возвращает компонент, определенного типа.

    Метод доступен на этапах Initializing, InitCompleting и Initialized. /// /// Тип расширения /// Экземпляр расширения public object GetExtensionPointByType(Type type); /// /// Возвращает компоненты, реализующие интерфейс-расширение. Метод доступен на этапах Initializing, InitCompleting и Initialized. /// /// Тип интерфейса расширения /// public IEnumerable GetExtensionPoints(); /// /// Возвращает компоненты, реализующие интерфейс-расширение.

    Метод доступен на этапах Initializing, InitCompleting и Initialized. /// /// Тип интерфейса расширения /// public IEnumerable GetExtensionPoints(Type type); /// /// Возвращает типы компонентов, реализующих интерфейс-расширение. /// /// Тип интерфейса расширения /// Список типов компонентов. Если не найдены — возвращается пустой список.

    public IEnumerable GetExtensionPointTypes(Type type); /// /// Возвращает типы компонентов, реализующих интерфейс-расширение. /// /// Тип интерфейса расширения /// Список компонентов public IEnumerable GetExtensionPointTypes(); /// /// Возвращает типы компонентов, реализующих интерфейс-расширение. /// /// Тип интерфейса расширения /// Список типов компонентов. Если не найдены — возвращается пустой список. public Type[] GetExtensionPointTypesArray(Type type); /// /// Получить типы, реализующие интерфейс IXsiType. /// /// public Type[] GetXsiTypes(); /// /// Получить массив всех компонентов, зарегистрированных в менеджере. Метод доступен на этапах Initializing, InitCompleting и Initialized. /// /// Массив компонентов. public object[] GetComponents(); > >

    Процесс инициализации менеджера компонентов выглядит следующим образом:

    1. Загружаются все сборки (*.dll и *.exe), находящиеся в папке запускаемого приложения (веб-приложение или дизайнер ELMA).
    2. Выбираются сборки, имеющие атрибут ComponentAssemblyAttribute , а также добавленные через метод ComponentManager.RegisterAssembly .
    3. Из данных сборок выбираются классы, помеченные атрибутом ComponentAttributeилиServiceAttribute . Также выбираются объекты, добавленные через метод ComponentManager.RegisterComponent .
    4. В контейнере Autofac регистрируются классы выбранные на этапе 3:
      • классы с атрибутом ComponentAttribute регистрируются с типом класса, а также типами реализуемых точек расширения;
      • классы с атрибутом ServiceAttribute регистрируются с типом класс, а также всеми реализуемыми интерфейсами.
      • Выбираются компоненты, реализующие точку расширения IInitHandler . Для каждого из них вызывается метод Init() .
      • Обновляется контейнер Autofac компонентами, зарегистрированными на шаге 5.
      • Выбираются компоненты, реализующие точку расширения IInitHandler. Для каждого из них вызывается метод InitComplete() .
      • Инициализация завершена.

      Точка расширения IInitHandler

      Системная точка расширения EleWise.ELMA.ComponentModel.IInitHandler позволяет подписываться на события начала ( Init ) и окончания ( InitComplete ) инициализации менеджера компонентов.

      namespace EleWise.ELMA.ComponentModel < /// /// Интерфейс компонента, поддерживающего методы инициализации /// [ExtensionPoint] public interface IInitHandler < /// /// Начало инициализации (могут использоваться свойства ComponentManager.Current и ComponentManager.Builder) /// void Init(); /// /// Завершение инициализации (доступен Locator) /// void InitComplete(); > >

      В методе Init можно работать с текущим менеджером компонентов — статическим свойством ComponentManager.Current , а также построителем контейнера Autofac – статическим свойством ComponentManager.Builder (см. статью Архитектура ядра системы).

      В методе InitComplete можно работать с текущим менеджером компонентов, а также локатором служб Locator (см. статью Архитектура ядра системы).

      Получение компонентов

      Для получения компонентов, реализующих определенную точку расширения (допустим, IMenuExtension), существуют 3 способа.

      Способ 1. Автоматически инициализируемые свойства (Auto-injected)

      Если объект, в котором требуется получить компоненты (допустим, MenuController), помещен в контейнер Autofac (см. статью Архитектура ядра системы), то необходимо объявить свойство.

      public class MenuController : Controller < . public IEnumerableMenuExtensions < get; set; >. >

      При создании объекта MenuController свойство MenuExtensions будет заполнено автоматически, если зарегистрирован хотя бы один компонент с реализацией точки расширения IMenuExtension. Если не зарегистрирован ни один, то в свойстве будет Null.

      Способ 2. Использование менеджера компонентов (ComponentManager)

      using EleWise.ELMA.Services; public class SomeClass < public void SomeMethod() < var menuExtensions = ComponentManager.Current.GetExtensionPoints(); if (menuExtensions != null) < . >> >

      Способ 3. Использование локатора служб (Locator)

      Описание класса Locator см. в статье Архитектура ядра системы

      using EleWise.ELMA.Services; public class SomeClass < public void SomeMethod() < var menuExtensions = Locator.GetService>(); if (menuExtensions != null) < . >> >

      Смотри также

      • Список доступных точек расширения в системе: версии 3.13, 3.15, 4.0;
      • Архитектура ядра системы.

      Источник: www.elma-bpm.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    Бизнес для женщин