Технология IBM для систем работы с клиентами на финансовых рынках: Часть 2. Активизация условных бизнес-правил на основе анализа потоков данных

Интеграция IBM InfoSphere Streams и IBM WebSphere ILOG JRules

Во второй части данной серии статей рассматривается интеграция InfoSphere Streams и WebSphere ILOG JRules. InfoSphere Streams – это высокопроизводительная система обработки потоков данных в режиме реального времени. ILOG JRules – это система управления бизнес-правилами, позволяющая создавать приложения, основанные на правилах. В настоящей статье рассматривается простой сценарий алгоритмической торговли, в котором InfoSphere Streams работает с потоком рыночных данных, а с помощью ILOG JRules при определенных условиях активизируется бизнес-правило. Вы узнаете, как эффективно интегрировать эти два продукта, чтобы выполнить данную задачу.

Ник Шофилд, разработчик программного обеспечения, IBM

Ник Шофилд (Nick Schofield) – фотографияНик Шофилд (Nick Schofield) является разработчиком программного обеспечения в подразделении IBM Software Services for WebSphere организации IBM Software Development Lab, Торонто, Онтарио. Он работал над различными проектами, включая тестирование и настройку производительности, создание приложений, интеграцию продуктов.



Мэри Тейлор, старший архитектор информационных систем, IBM

Мэри Тейлор (Mary Taylor) является старшим разработчиком архитектуры информационных систем. Она работает в группе Strategic Technology Architecture and Incubation (STAI) и в данный момент занимается пилотным проектом SOA CBS. Среди ее интересов DB2 и DataStage.



11.03.2012

Введение

Данная статья является второй частью серии статей , в которых исследуется интеграция возможностей программного обеспечения IBM промежуточного уровня для удовлетворения технических требований систем работы с клиентами на финансовых рынках. Эти требования порождают потребность в специализированном программном обеспечении, способном работать с большими объемами данных на чрезвычайно высоких скоростях. В данной серии статей рассматривается сценарий алгоритмической торговли, реализованный в рамках инкубационного проекта IBM Software Group.

InfoSphere Streams

InfoSphere Streams (Streams) – это среда разработки приложений, работающая с живыми потоками данных в режиме реального времени. Streams-приложения создаются на высокоуровневом языке обработки потоков. Каждое Streams-приложение представляет собой последовательности операторов, выполняющих функции или вычисления с проходящими через них данными. Операторы часто соединяют в цепочки для выполнения сложных функций. Имеется много готовых операторов, выполняющих такие функции, как агрегирование данных, присоединение, разбиение, а также комплексные функции. Streams также позволяет создавать собственные операторы для выполнения специфических команд. Такие операторы пишутся на Java или C++ и называются операторами, определяемыми пользователями (User Defined Operator – UDOP). В данной статье рассматривается процесс создания оператора Java UDOP для интеграции с ILOG JRules.

WebSphere ILOG JRules

ILOG JRules (JRules) – это система управления бизнес-правилами (Business Rules Management System – BRMS), позволяющая проектировать, разрабатывать и развертывать бизнес-правила, доступные из внешних систем или приложений. Бизнес-правила разрабатываются при помощи среды разработки Rule Studio или Web-приложения Rule Team Server (RTS). Затем правила развертываются на сервере Rule Execution Server (RES). Приложения могут подключаться к RES и выполнять правила на нем или запрашивать эти правила и выполнять их локально. В рассматриваемом сценарии по соображениям производительности оператор Streams Java UDOP запрашивает правила и выполняет их локально.

Предварительные требования

Для выполнения примера сценария необходимо установить следующие программные компоненты:

  • ILOG Rule Studio Development Environment
  • ILOG Rule Team Server
  • ILOG Rule Execution Server
  • InfoSphere Streams

О сценарии

В данной статье рассматривается пример сценария, в котором JRules и Streams работают совместно. Изучив этот сценарий, вы можете адаптировать его к своей собственной среде.

Сценарий начинается со Streams-приложения, принимающего данные об акциях и котировках. Затем на основании этих данных выполняются простые вычисления, генерирующие значение, называемое индексом сделки (bargain index). Если значение превышает определенную границу, автоматически размещается заказ на приобретение данных акций. Чтобы исключить размещение крупных заказов без подтверждения, мы изменим Streams-приложение таким образом, чтобы оно сначала направляло любой запрос на крупный заказ в JRules. JRules принимает решение, будет заказ обрабатываться автоматически или нет.


Создание бизнес-правил при помощи среды разработки ILOG Rule Studio

Для создания бизнес-правил при помощи среды разработки ILOG Rule Studio выполните приведенные далее действия.

Создание XOM

При создании JRules-приложения прежде всего нужно определить модель объекта исполнения (Execution Object Model – XOM). XOM определяет входные и выходные данные вызовов JRules. В нашем сценарии в качестве интерфейса используются POJO-объекты (plain old Java objects). Для определения XOM можно также использовать XML-схему.

Для создания XOM с использованием POJO выполните следующие действия:

  1. Создайте новый Java-проект, введя OrderDecision-XOM в поле Project name, и нажмите кнопку Next (см. рисунок 1).
    Рисунок 1. Создание проекта OrderDecision-XOM
    Рисунок 1. Создание проекта OrderDecision-XOM
  2. Создайте новый Java-класс в пакете com.ibm.orderdecision, введя OrderDecision в поле Name (см. рисунок 2).
    Рисунок 2. Java-класс OrderDecision
    Рисунок 2. Java-класс OrderDecision
  3. Добавьте следующие поля в поле Interfaces для класса OrderDecision и нажмите кнопку Finish:
    • private Boolean canContinue;
    • private String symbol;
    • private Double price;
    • private Double qty;
  4. Создайте getter- и setter- методы для этих четырех полей, используя подход, приведенный в листинге 1 для поля symbol.
Листинг 1. Создание getter- и setter-методов
	    public String getSymbol() {
	        return symbol;
	    }
	    public void setSymbol(String symbol) {
	        this.symbol = symbol;
	    }

Поле canContinue содержит результат выполнения правила и определяет, является заказ исключением или нет. Если заказ является исключением, значение canContinue равно 0. Значения symbol, price и quantity передаются в ILOG из рыночных данных, обрабатываемых в Streams-программе.

Создание правил

Для создания реальных бизнес-правил выполните следующие действия:

  1. Создайте новый стандартный проект правил, введя OrderDecisionRules в поле Project name в окне New Rule Project (см. рисунок 3).
    Рисунок 3. Создание проекта OrderDecisionRules
    Рисунок 3. Создание проекта OrderDecisionRules
  2. Откройте окно Rule Project Map и в элементе Design нажмите Import XOM, как показано на рисунке 4.
    Рисунок 4. Импорт XOM
    Рисунок 4. Импорт XOM
  3. Выберите Java Execution Object Model.
  4. Отметьте OrderDecision-XOM и нажмите кнопку OK.
  5. Нажмите Create BOM (Business Object Model) в элементе Design окна Rule Project Map. BOM содержит преобразование входного Java- или XML-кода в бизнес-понятия, используемые механизмом обработки правил (см. рисунок 5).
    Рисунок 5. Элемент Design – шаг 1
    Рисунок 5. Элемент Design – шаг 1
  6. Примите значения по умолчанию на первой странице и выберите пакет com.ibm.orderdecision в области Select classes окна ввода BOM (см. рисунок 6).
    Рисунок 6. Окно ввода BOM
    Рисунок 6. Окно ввода BOM
  7. Примите значения по умолчанию на третьей странице и нажмите кнопку OK.
  8. Нажмите Define Parameters в элементе Design в окне Rule Project Map (см. рисунок 7).
    Рисунок 7. Элемент Design – шаг 2
    Рисунок 7. Элемент Design – шаг 2
  9. Добавьте параметры ruleset (набор правил), приведенные в таблице 1.
Таблица 1. Параметры ruleset
ИмяТипНаправлениеЗначение по умолчаниюСмысл
symboljava.lang.StringINsymbol (символ)
pricedoubleINprice (цена)
qtydoubleINquantity (количество)
canContinueBooleanOUTfalsecan continue (продолжить)
  1. Нажмите Add Rule Package в элементе Orchestrate.
  2. Нажмите Add rule package для добавления параметров ruleset (см. рисунок 8).
    Рисунок 8. Элемент Orchestrate для добавления пакета правил
    Рисунок 8. Элемент Orchestrate для добавления пакета правил
  3. Назовите пакет com.ibm.orderdecision.
  4. Нажмите Add Ruleflow в элементе Orchestrate (см. рисунок 9). Ruleflow (поток правил) – это представление бизнес-логики приложения. Ruleflow используются для организации выполнения правил путем их группирования в последовательности задач.
    Рисунок 9. Элемент Orchestrate для добавления ruleflow
    Рисунок 9. Элемент Orchestrate для добавления ruleflow
  5. Установите следующие значения параметров ruleflow:
    1. Введите /OrderDecisionRules/rules в поле Source folder.
    2. Введите com.ibm.orderdecision в поле Package.
    3. Введите OrderDecisionRuleFlow в поле Name.
    4. Введите RuleFlow в поле Type.
    5. Нажмите Finish.
  6. Нажмите Add Business Rule в элементе Author в окне Rule Project Map (см. рисунок 10).
    Рисунок 10. Элемент Author для добавления бизнес-правила
    Рисунок 10. Элемент Author для добавления бизнес-правила
  7. Установите следующие значения свойств бизнес-правила:
    1. Введите /OrderDecisionRules/rules в поле Source folder.
    2. Введите com.ibm.orderdecision в поле Package.
    3. Введите Order Decision Rule в поле Name.
    4. Введите ActionRule в поле Type.
    5. Нажмите Finish.
  8. Напишите код правила, приведенный в листинге 2.
Листинг 2. Правило принятия решения по заказу
if
     price * quantity is less than 500 or symbol is "IBM"
then
     set 'can continue' to true;

Этот код устанавливает флажок canContinue в значение true для всех заказов IBM и других заказов, значение произведения стоимости на количество которых меньше 500. Эти заказы в Streams являются неисключительными (заказы прямой обработки).

  1. Измените OrderDecisionRuleFlow, созданный ранее.
  2. Добавьте на палитру начальный элемент, конечный элемент и элемент задания правила (Rule Task), а затем соедините их так, как показано на рисунке 11.
    Рисунок 11. Создание диаграммы потока правил
    Рисунок 11. Создание диаграммы потока правил
  3. Измените ID в Rule Task на Order Decision.
  4. Добавьте правило com.ibm.orderdecision.Order Decision Rule в раздел Rule Selection на вкладке Properties (см. рисунок 12).
    Рисунок 12. Обновление раздела правил
    Рисунок 12. Обновление раздела правил

Развертывание правил на сервере Rule Team Server

После завершения работы над проектом правил опубликуйте его на сервере Rule Team Server (RTS). После публикации правил на RTS бизнес-пользователи могут изменять установленные вами значения. Например, если исключительных заказов станет слишком много, бизнес-пользователь может повысить граничное значение с 500 до 1000.

Для развертывания на RTS выполните следующие действия:

  1. Щелкните правой кнопкой мыши на проекте OrderDecisionRules в панели Rule explorer слева и выберите Rule Team Server > Connect.
  2. Введите информацию о подключении.
  3. Отметьте флажок Create a new project on Rule Team Server и нажмите кнопку Finish.

Вот и все! Теперь бизнес-пользователи могут зайти на RTS и изменить только что опубликованное вами правило.

Публикация правил на сервере Rule Execution Server

Для выполнения правил необходимо правила с сервера RTS опубликовать на сервере Rule Execution Server (RES). RES предоставляет две возможности:

  • Можно выполнять правила удаленно и отправлять ответ вызывающей стороне.
  • Можно использовать RES в качестве репозитория правил.

По соображениям производительности в данном примере сценария мы подключимся к RES и запросим последнюю версию правил, но выполнять их будем локально в среде InfoSphere Streams.

Создание ruleapp

ruleapp – это формат упаковки, используемый для развертывания правил на RES. После создания ruleset упаковывается в ruleapp и развертывается в исполняющей среде RES. Чтобы создать ruleapp, выполните следующие действия:

  1. Зайдите на сервер RTS и выберите Configure > Manage RuleApps.
  2. Нажмите New и введите имя OrderDecisionRuleApp.
  3. Нажмите New под Rulesets и введите имя OrderDecisionRuleSet.
  4. Выберите проект OrderDecisionRules, а затем Save > Save для сохранения ruleapp.

Публикация ruleapp

Для публикации ruleapp выполните следующие действия:

  1. Выберите Configure > Manage RuleApps.
  2. Отметьте флажок рядом с OrderDecisionRuleApp и нажмите кнопку Deploy.
  3. Снимите отметку с флажка рядом с Create a baseline for this deployment и нажмите кнопку Next.
  4. Отметьте флажок Deploy on a Rule Execution Server и нажмите кнопку Next.
  5. Отметьте флажок Increment ruleset(s) major version и нажмите кнопку Next.
  6. Выберите исполняющий сервер из списка и нажмите кнопку Deploy.

Разработка и интеграция Streams-приложений

В данном разделе описывается работа со Streams-приложениями.

Обзор приложения

В примере Streams-приложения, ссылка на который приведена в разделе Загрузки, вычисляется индекс сделки. На рисунке 13 показана графическая схема приложения, полученная с помощью программы StreamSight, поставляемой вместе с InfoSphere Streams.

Рисунок 13. Streams-приложение
Рисунок 13. Streams-приложение

На рисунке 13 данные поступают из оператора source слева, а затем разделяются на два потока. Один поток для акций, а второй – для котировок. Затем поток для акций агрегируется и обрабатывается с целью вычисления индекса VWAP (volume weighted average price – средневзвешенная по объему цена). После этого VWAP соединяется с потоком котировок и рассчитывается индекс сделки. Наконец, если этот индекс выше определенной границы, генерируется заказ.

В примере сценария мы расширим это приложение, вставив оператор между последними двумя операторами в правой части графика. Этот оператор будет вызывать созданное нами ранее правило JRules для определения возможности продолжения выполнения заказа.

Расширение приложения

Для расширения приложения путем добавления оператора JavaUdop выполните следующие действия:

  1. Разархивируйте поставляемое с данной статьей Streams-приложение (orderDecision_orig.tar.gz) в какой-нибудь каталог на вашем компьютере (например, в каталог orderDecision_orig), выполнив команду tar -xvzf orderDecision_orig.tar.gz.
  2. Создайте подкаталог под названием classpath в каталоге orderDecision_orig и скопируйте jar-файлы следующим образом:
    • В каталог ILOG studio lib:
      • asm-3.1.jar
      • asm-analysis-3.1.jar
      • asm-commons-3.1.jar
      • asm-tree-3.1.jar
      • asm-util-3.1.jar
      • bcel-5.1.jar
      • jdom-1.0.jar
      • jrules-engine.jar
      • sam.jar
    • В каталог db2 java:
      • db2jcc4.jar
    • В каталог ILOG executionserver lib:
      • jrules-res-execution.jar
      • j2ee_connector-1_5-fr.jar
  3. Настройте подключение к JRules путем извлечения файла ra.xml из архива, ссылка на который приведена в разделе Загрузки.
  4. Поместите файл в каталог classpath.
  5. Измените файл и введите имя пользователя, пароль и URL вашей базы JRules RES db в свойстве persistenceProperties.
  6. Чтобы добавить оператор Java UDOP в Streams-приложение, добавьте два оператора, приведенные в листинге 3, непосредственно перед оператором sink в конце файла vwap.dps. Файл vwap.dps содержит Streams-приложение, показанное на рисунке 13.
Листинг 3. Операторы Java UDOP для разделения потока заказа
	    stream OrdersNotToVerify(schemaFor(Orders))
		:= Functor(Orders)
		     [price * qty <= 200d]
		     {}	

	    stream OrdersToVerify(schemaFor(Orders))
		:= Functor(Orders)
		     [price * qty > 200d]
		     {}

Эти операторы разделяют поток заказа на два отдельных потока. Один поток содержит достаточно маленькие заказы, не требующие проверки. Для проверки другого потока необходимы правила JRules.

  1. Добавьте операторы, приведенные в листинге 4, после оператора OrdersToVerify, чтобы добавить вызов механизма JRules.
Листинг 4. Обновления оператора OrdersToVerify
	    stream CheckedOrders(schemaFor(Orders), canContinue: Boolean)
	     := JavaUdop(OrdersToVerify)
	     [generated;
	     className:"com.ibm.orderchecker.OrderDecision";
	     classLibrary:
	     "../orderDecision_orig/classpath/asm-3.1.jar",
	     "../orderDecision_orig/classpath/asm-analysis-3.1.jar",
	     "../orderDecision_orig/classpath/asm-commons-3.1.jar",
	     "../orderDecision_orig/classpath/asm-tree-3.1.jar",
	     "../orderDecision_orig/classpath/asm-util-3.1.jar",
	     "../orderDecision_orig/classpath/bcel-5.1.jar",
	     "../orderDecision_orig/classpath/j2ee_connector-1_5-fr.jar",
	     "../orderDecision_orig/classpath/jdom-1.0.jar",
	     "../orderDecision_orig/classpath/jrules-engine.jar",
	     "../orderDecision_orig/classpath/jrules-res-execution.jar",
	     "../orderDecision_orig/classpath/sam.jar",
	     "../orderDecision_orig/classpath/db2jcc4.jar",
	     "../orderDecision_orig/classpath",
	     "../orderDecision_orig/bin";
 	     vmArg:"-Xmx512m"] {}
  1. Замените путь к каталогу classpath в параметре classLibrary собственным значением.
  2. После вызова JRules необходимо отфильтровать все заказы, которые не прошли проверку, и изменить оператор Sink для вывода верифицированных заказов, а также заказов, которые не были проверены. Сделайте это путем замены оператора Sink в конце файла на код, приведенный в листинге 5.
Листинг 5. Изменение VerifiedOrders
	    stream VerifiedOrders(schemaFor(Orders))
	     := Functor(CheckedOrders)
	     [canContinue]
	     {}
	    
	    Null := 
	    Sink (OrdersNotToVerify, VerifiedOrders) ["file:///Orders.dat", nodelays]{}
  1. Сохраните файл vwap.dps.
  2. Выполните команду make из каталога orderDecision_orig, чтобы скомпилировать приложение.
  3. После успешной компиляции примера сценария вы увидите:
    • итоговую информацию о создании 1 задания (job) и 12 элементов обработки (processing element – PE);
    • три созданных ранее оператора (OrdersToVerify.dpe, OrdersNotToVerify.dpe и CheckedOrders.dpe);
    • несколько shell-сценариев.
    При первой компиляции Streams-приложения с оператором JavaUdop приложение автоматически создает необходимые .java и .class-файлы в каталоге src.
  4. Для вызова ILOG JRules API измените файл OrderDecision.java, добавив в него строки, выделенные жирным шрифтом в листинге 6. Комментарии в листинге 6 описывают добавляемую функциональность. Измененный файл OrderDecision.java включен в архив для загрузки.
Листинг 6. Фильтрация заказов
	    package com.ibm.orderchecker;
	   
	    import ilog.rules.res.model.IlrPath;
	    import ilog.rules.res.session.IlrJ2SESessionFactory;
	    import ilog.rules.res.session.IlrSessionRequest;
	    import ilog.rules.res.session.IlrSessionResponse;
	    import ilog.rules.res.session.IlrStatelessSession;
	   
	    import com.ibm.streams.spade.OperatorContext;
	   
	    public  class OrderDecision extends AbstractOrderDecision {
	   
	   
	    	private IlrPath path;
	   	
	   	
	       /**
	       ** Инициализация оператора
	       */
	       @Override
	       public void initialize
(OperatorContext context) throws Exception {
	           super.initialize(context);
	   		
	   		//Установка пути к Rule. 
Указывается в форме /RuleApp/RuleSet
	   		this.path = 

	   		  IlrPath.parsePath
("/OrderDecisionRuleApp/OrderDecisionRuleSet");

	       }
	   
	       /**
	       ** метод обработки для порта 0 (Stream IPort0Stream).
	       */
	       @Override
	       protected void process0(IPort0 tuple) throws Exception {
	   		//Инициализация нового сеанса JRules.
			//Если вы заботитесь о производительности,
	   		//этот сеанс можно использовать повторно. Однако 
	   		//при опубликовании новой версии правил на сервере RES они не 
	   		//активизируются до тех пор, пока сеанс
			//не будет инициализирован заново
	   		IlrJ2SESessionFactory sessionFactory = 
	   		  new IlrJ2SESessionFactory();
	           sessionFactory.setClassLoader(getClass().getClassLoader());
	   		
	   		
	   		//Создание объекта JRules Request
	   		IlrSessionRequest sRequest = sessionFactory.createRequest();
	   		sRequest.setRulesetPath(path);	
	   		sRequest.setInputParameter("symbol", tuple.get_symbol());
	   		sRequest.setInputParameter("price", tuple.get_price());
	   		sRequest.setInputParameter("qty", tuple.get_qty());
	   
	   		IlrSessionResponse sResponse = null;
	   		try {
	   			//Выполнение правила JRules
	   			IlrStatelessSession ss = 
	   			  sessionFactory.createStatelessSession();
	   			sResponse = ss.execute(sRequest);
	   			
	   			//Анализ ответа
	   			boolean canContinue = 
	   ((Boolean)sResponse.getOutputParameters().get("canContinue")).
booleanValue();
	   			
	   			
	   			//Создание выходной записи (Output Tuple).
				//Необходимо установить все 
	   			//входные параметры, а также результат JRules
	   			OPort0 otuple = getOutput0().newTuple();
	   			
	   			otuple.set_symbol(tuple.get_symbol());
	   			otuple.set_price(tuple.get_price());
	   			otuple.set_qty(tuple.get_qty());
	   			
	   			otuple.set_canContinue(canContinue);
	   			
	   			//Подтверждение полученной записи
	   			submit0(otuple);
	   			
	   		} catch (Exception e) {
	   			e.printStackTrace();
	   		}
	   		
	        }
	    }
  1. Введите команду ./start_streams_vwap.sh для запуска сервера Streams.
  2. Введите команду ./submitjob_vwap.sh для подтверждения задания.
  3. Чтобы просмотреть приложение, используйте программу StreamSight, поставляемую в составе пакета InfoSphere Streams: откройте eclipse и выберите перспективу InfoSphere Streams Live Graph.
  4. Нажмите пиктограмму Load в инструментальной панели и выберите Spade. На рисунке 14 показана итоговая диаграмма приложения.
Рисунок 14. Измененное Streams-приложение
Рисунок 14. Измененное Streams-приложение

На рисунке 14 потоки данных идут слева направо аналогично рисунку 13, за исключением функции Orders; здесь поток разделяется на два потока, которые затем снова сходятся в функции Sink.

  1. Выполните приложение. Мы изменили файл orderDecision.java для активизации ILOG-правила, устанавливающего флажок canContinue в значение true, если произведение стоимость*количество меньше 500$ или если значение symbol равно IBM. После выполнения приложения вы увидите файл с результатами, Orders.dat, в каталоге orderDecision_orig/data. В этом файле должны находиться только те заказы, которые удовлетворяют нашему ILOG-правилу, как показано в листинге 7.
Листинг 7. Сгенерированный файл заказов
	    symbol:TWX,price:17.7,qty:1
	    symbol:UNH,price:64.6,qty:4
	    symbol:MRK,price:32.07,qty:3
	    symbol:VRX,price:18.67,qty:1
	    symbol:CD,price:16.75,qty:17
	    symbol:CVS,price:27.26,qty:10
	    symbol:CVS,price:27.26,qty:8
	    symbol:HAR,price:97.23,qty:1CH
	    symbol:IBM,price:83.59,qty:6
	    symbol:THC,price:7.93,qty:14
	    symbol:THC,price:7.93,qty:7
	    symbol:FSLb,price:26.04,qty:4
	    symbol:BHI,price:61.95,qty:3
	    symbol:LRY,price:43.67,qty:4
	    symbol:DG,price:19.18,qty:24
	    symbol:CEG,price:56.79,qty:1

Заключение

В данной статье рассматривался процесс создания и развертывания бизнес-правила на сервер приложений JRules, а также использование этого правила из приложения InfoSphere Streams. Комбинация этих двух технологий предоставляет бизнес-пользователям мощный инструмент изменения правил, используемых высокопроизводительным механизмом обработки данных в режиме реального времени, не требующий их разработки и развертывания.


Загрузка

ОписаниеИмяРазмер
Файл для загрузкиStreamsJRulesCodeDownloads.zip831 КБ

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management, WebSphere, Технология Java, XML
ArticleID=801454
ArticleTitle=Технология IBM для систем работы с клиентами на финансовых рынках: Часть 2. Активизация условных бизнес-правил на основе анализа потоков данных
publish-date=03112012