SlideShare a Scribd company logo
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
IBM Integration
Bus
‫ند‬‫کن‬‫ه‬‫ی‬‫ته‬:‫ه‬
‫ی‬‫ن‬‫ا‬‫ب‬‫ر‬‫ق‬‫ید‬‫حم‬
‫ش‬‫ی‬‫وریا‬2
‫ال‬‫س‬1396
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
point-to-point Architecture:
Integrating IT systems has traditionally been a complex and arduous task. If you’ve ever tried to get more than
a few IT systems to communicate with each other, you’re familiar with all the problems involved.
Obscure, poorly documented point-to-point
connections (or interfaces), involving a bewildering
collection of formats, protocols, and technologies,
make up an infrastructure that only the most
courageous dare tamper with.
Hub and Spoke Architecture:
Some years back, a way of dealing with this problem emerged in the shape of an architectural mode called Hub
and Spoke.
This architecture was built around the notion of
having one central piece of software (the Hub) deal
with all the complexities of inter-system
communication. A new class of software,
called Message Brokers, entered the stage,
providing the technology to build those hubs.
Enterprise service bus (ESB):
An ESB is fundamentally an architecture. It is a set of rules and principles for integrating numerous applications
together over a bus-like infrastructure. ESB products enable users to build this type of architecture, but vary in
the way that they do it and the capabilities that they offer.
The core concept of the ESB architecture is that you
integrate different applications by putting a
communication bus between them and then
enable each application to talk to the bus. This
decouples systems from each other, allowing them
to communicate without dependency on or
knowledge of other systems on the bus.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
ESB‫برگرفته‬‫واژه‬ ‫از‬ ‫شده‬‫های‬Enterprise Service Bus‫يک‬ ،‫افزاری‬ ‫نرم‬ ‫معماری‬‫(مجموعه‬‫اهداف‬ ‫و‬ ‫قوانين‬ ‫از‬ ‫ای‬)‫برای‬
‫سازی‬ ‫يکپارچه‬‫بين‬ ‫آسان‬ ‫و‬ ‫سهل‬ ‫ارتباط‬ ‫امکان‬ ‫ايجاد‬ ‫و‬‫يک‬ ‫حول‬ ‫سازماني‬ ‫افزارهای‬ ‫نرم‬ ‫از‬ ‫ای‬ ‫مجموعه‬‫گذرگاه‬.‫است‬‫نرم‬ ‫اينکه‬ ‫بجای‬
‫تعامل‬ ‫يکديگر‬ ‫با‬ ‫مستقيما‬ ‫ها‬ ‫افزار‬.)‫باال‬ ‫بود(شکل‬ ‫خواهند‬ ‫تعامل‬ ‫در‬ ‫گذرگاه‬ ‫اين‬ ‫با‬ ، ‫باشند‬ ‫داشته‬ESB‫ابزاری‬‫برای‬‫کردن‬ ‫يکپارچه‬‫و‬
‫اطالعات‬ ‫جريان‬ ‫مديريت‬‫نرم‬ ‫مابين‬‫سازماني‬ ‫افزارهای‬‫مي‬‫باش‬‫ن‬.‫د‬‫افزار‬ ‫ميان‬ ‫يک‬ESB‫سرويس‬ ‫تمامي‬ ‫مخزن‬ ‫يک‬ ‫مثابه‬ ‫به‬‫ارتباطي‬ ‫های‬
‫نرم‬‫مي‬ ‫نگهداری‬ ‫خود‬ ‫در‬ ‫را‬ ‫افزارها‬‫نياز‬ ‫هرگاه‬ ‫و‬ ‫کند‬‫باشد‬ ‫اطالعاتي‬ ‫سيستم‬ ‫مختلف‬ ‫اجزای‬ ‫از‬ ‫اطالعاتي‬ ‫به‬،‫در‬ ‫را‬ ‫نياز‬ ‫مورد‬ ‫سرويس‬
‫مي‬ ‫قرار‬ ‫کننده‬ ‫درخواست‬ ‫اختيار‬‫دهد‬.
ESB Core Capabilities:
 Rich set of Adapters: (‫ديگر‬ ‫انواع‬ ‫به‬ ‫ها‬ ‫داده‬ ‫تبديل‬ ‫برای‬ ‫مختلف‬ ‫های‬ ‫آداپتور‬ ‫از‬ ‫ای‬ ‫)مجموعه‬
 Message Transformation: Transform an incoming message into several outgoing formats and structure
for example: XML to Json, XML to Java objects etc. ( ‫پروتکل‬ ‫تبديل‬ ‫و‬ ‫پشتيباني‬‫ي‬ ‫به‬ ‫مختلف‬ ‫های‬‫کديگر‬ )
 Reliable Message Delivery: ‫اطمينان‬ ‫قابل‬ ‫رسان‬ ‫پيام‬ ‫يک‬) )
 Contetnt-based Routing: route, filter, aggregate, and re-sequence messages according to specific
business needs between services (‫بيزينسي‬ ‫نيازهای‬ ‫اساس‬ ‫بر‬ ‫پيامها‬ ‫مسير‬ ‫کردن‬ ‫تعيين‬)
 Security: Protect services from unauthorized access. (‫کار‬ ‫مراحل‬ ‫کليه‬ ‫امنيت‬)
 Business activity monitoring(BAM): Monitor the activity and state of individual business processes, or
the entire system, and key performance indicators
(‫بيزينس‬ ‫يک‬ ‫به‬ ‫مربوط‬ ‫مختلف‬ ‫های‬ ‫پروسس‬ ‫کارايي‬ ‫و‬ ‫وضعيت‬ ‫کردن‬ ‫مانيتور‬)
ESB products:
‫عنوان‬ ‫به‬ ‫زيادی‬ ‫محصوالت‬ ‫گذشته‬ ‫سالهای‬ ‫طول‬ ‫در‬ESB‫ان‬ ‫شده‬ ‫ارائه‬ ‫بازار‬ ‫به‬‫مختلف‬ ‫امکانات‬ ‫دارای‬ ‫يک‬ ‫هر‬ ‫که‬ ‫د‬‫مي‬ ‫متفاوتي‬ ‫و‬
‫افزار‬ ‫ميان‬ ‫يک‬ ‫ويژگيهای‬ ‫دقيق‬ ‫تعريف‬ ‫برای‬ ‫استانداردی‬ ‫متاسفانه‬ .‫باشند‬ESB‫قبل‬ ‫رو‬ ‫اين‬ ‫از‬ ‫و‬ ‫ندارد‬ ‫وجود‬‫از‬ ‫هريک‬ ‫از‬ ‫استفاده‬ ‫از‬
‫از‬ ‫دقيقا‬ ‫که‬ ‫بدانيد‬ ‫بايد‬ ‫محصوالت‬ESB‫انتخ‬ ‫را‬ ‫مربوطه‬ ‫محصول‬ ‫آن‬ ‫با‬ ‫متناسب‬ ‫و‬ ‫داريد‬ ‫انتظاراتي‬ ‫چه‬‫نمايي‬ ‫اب‬‫که‬ ‫محصوالتي‬ ‫معموال‬ .‫د‬
‫عنوان‬ ‫به‬ESB‫سه‬ ‫در‬ ‫توان‬ ‫مي‬ ‫را‬ ‫شوند‬ ‫مي‬ ‫عرضه‬ ‫باز‬ ‫به‬‫سطح‬‫مختلف‬‫دسته‬‫مي‬ ‫مشاهده‬ ‫را‬ ‫آنها‬ ‫زير‬ ‫شکل‬ ‫در‬ ‫که‬ ‫کرد‬ ‫بندی‬‫نماييد‬:
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
1)‫ابزارهاي‬‫یکپارچه‬‫سازي‬)FrameworkIntegration(:
‫اول‬ ‫سطح‬ESB‫ها‬،‫افزارهايي‬ ‫ميان‬‫يکپارچ‬ ‫برای‬ ‫صرفا‬ ‫که‬ ‫هستند‬‫ه‬‫نرم‬ ‫سازی‬‫مي‬ ‫استفاده‬ ‫سازمان‬ ‫افزارهای‬‫آنها‬ ‫به‬ ً‫ا‬‫اصطالح‬ ‫و‬ ‫شوند‬
Integration Framework‫مي‬‫گويند‬.‫که‬ ‫دارد‬ ‫وجود‬ ‫مختلفي‬ ‫استانداردهای‬ ‫سازی‬ ‫يکپارچه‬ ‫برای‬‫از‬Splitter‫و‬Content base
routers‫مي‬‫نمونه‬ ‫بعنوان‬ ‫توان‬‫از‬ ‫هايي‬‫اين‬‫يکپارچ‬ ‫استاندارد‬ ‫الگوهای‬‫ه‬.‫برد‬ ‫نام‬ ‫سازی‬Nservice Bus،Apache Camel‫و‬Spring
Integration‫نمونه‬‫اين‬ ‫از‬ ‫هايي‬.‫باشند‬ ‫مي‬ ‫ابزارها‬NService Bus‫محيط‬ ‫در‬ ‫استفاده‬ ‫بمنظور‬.Net‫باشد‬ ‫مي‬‫و‬Apache Camel
‫و‬Spring Integration‫محيط‬ ‫در‬ ‫استفاده‬ ‫بمنظور‬Java‫مي‬‫بصورت‬ ‫که‬ ‫دستوراتي‬ .‫باشند‬API‫دارند‬ ‫وجود‬ ‫ابزارها‬ ‫اين‬ ‫در‬‫برنامه‬ ‫به‬
‫مي‬ ‫اجازه‬ ‫نويسان‬‫نرم‬ ‫فهم‬ ‫قابل‬ ‫و‬ ‫شفاف‬ ‫بصورت‬ ‫بتوانند‬ ‫تا‬ ‫دهد‬‫ي‬ ‫يکديگر‬ ‫با‬ ‫را‬ ‫افزارها‬‫نمايند‬ ‫کپارچه‬.‫اين‬ ‫توسط‬،‫ابزارها‬‫از‬ ‫بسياری‬
‫فعاليت‬‫پروژه‬ ‫موفقيت‬ ‫ضريب‬ ‫و‬ ‫شده‬ ‫خالصه‬ ‫تيمي‬ ‫های‬‫مي‬ ‫افزايش‬‫يابد‬.
2)‫گذرگاههاي‬‫سرویس‬‫سازماني‬(ESB:)‫ها‬
‫دوم‬ ‫سطح‬‫سطح‬ ،‫گستر‬‫ده‬‫از‬ ‫تری‬Integration Framework‫آن‬ ‫به‬ ‫که‬ ‫هستند‬ ‫ها‬«‫سا‬ ‫خدمات‬ ‫اتوبوس‬‫زمان‬»‫همان‬ ‫يا‬ESB
‫مي‬ ‫گفته‬‫شود‬.‫برای‬ ‫مناسبي‬ ‫امکانات‬ ‫ابزارها‬ ‫از‬ ‫گروه‬ ‫اين‬Develop( ‫مديريت‬ ‫و‬ ‫مانيتورينگ‬ ‫و‬Administration‫زمان‬ ‫در‬ )
‫و‬ ‫کنند‬ ‫مي‬ ‫فراهم‬ ‫را‬ ‫اجرا‬‫ب‬ ‫را‬ ‫کارآمدی‬ ‫بسيار‬ ‫بستر‬ ‫آنها‬ ‫گرافيکي‬ ‫محيط‬‫پياده‬ ‫رای‬‫يکپارچه‬ ‫مختلف‬ ‫سناريوهای‬ ‫سازی‬‫فراهم‬ ‫سازی‬
‫مي‬‫آورد‬.
ESB‫بريکپارچه‬ ‫عالوه‬ ‫قدرتمندی‬ ‫ابزارهای‬ ‫ها‬‫انتشار‬ ‫برای‬ ،‫سازی‬(Deployment)‫مديريت‬ ،(Administration)،‫پايش‬ ‫و‬
‫پياده‬ ‫برای‬ ‫را‬ ‫کارآمدی‬ ‫بسيار‬ ‫بستر‬ ‫آنها‬ ‫گرافيکي‬ ‫محيط‬ .‫دارند‬ ‫اجرا‬ ‫زمان‬ ‫در‬‫مختلف‬ ‫سناريوهای‬ ‫سازی‬‫يکپارچه‬‫فراهم‬ ‫سازی‬
‫مي‬‫ابزارهای‬ .‫آورد‬ESB‫فوق‬ ‫مزيت‬‫العاده‬‫پيچيدگي‬ ‫رفع‬ ‫و‬ ‫هزينه‬ ‫کاهش‬ ‫درخصوص‬ ‫را‬ ‫ای‬‫يکپارچه‬ ‫های‬‫مي‬ ‫فراهم‬ ‫سازی‬‫آورد‬.
3)‫مجموعه‬‫کامل‬‫یکپارچه‬‫سازي‬)SuiteIntegration(:
‫سوم‬ ‫سطح‬‫ک‬ ‫ابزارها‬‫آن‬ ‫به‬ ‫ه‬Integration Suite‫مي‬‫از‬ ‫ترکيبي‬ ،‫گويند‬ESB‫و‬ ‫ها‬BPMS‫يکپارچه‬ ‫بر‬ ‫عالوه‬ ‫که‬ ‫هستند‬ ‫ها‬‫سازی‬
‫نرم‬‫نرم‬ ‫با‬ ‫نيز‬ ‫را‬ ‫سازمان‬ ‫فرآيندهای‬ ‫کردن‬ ‫يکپارچه‬ ‫قابليت‬ ،‫سازمان‬ ‫افزارهای‬‫مي‬ ‫فراهم‬ ‫افزارها‬‫يک‬ ‫ميتوان‬ ،‫سازمان‬ ‫در‬ ‫بطوريکه‬ ‫کند‬
‫نمود‬ ‫ايجاد‬ ‫کامل‬ ‫يکپارچگي‬.‫برنامه‬ ‫و‬ ‫فرآيندها‬ ،‫افراد‬ ‫از‬ ‫سازمان‬ ‫اطالعات‬ ‫فناوری‬ ‫ساختار‬‫تشکي‬ ‫کاربردی‬ ‫های‬‫بنابراين‬ ،‫است‬ ‫شده‬ ‫ل‬
‫يکپارچه‬ ‫ايجاد‬ ‫برای‬‫برقرار‬ ‫ارتباط‬ ‫مناسبي‬ ‫نحو‬ ‫به‬ ‫يکديگر‬ ‫با‬ ‫شده‬ ‫مطرح‬ ‫عناصر‬ ‫کليه‬ ‫بايد‬ ‫سازمان‬ ‫سطح‬ ‫در‬ ‫کامل‬ ‫سازی‬‫ن‬.‫مايند‬
‫بخش‬ ‫در‬ ‫که‬ ‫همانگونه‬ESB،‫شد‬ ‫مطرح‬ESB‫برنامه‬ ‫سطح‬ ‫در‬ ‫يکپارچگي‬ ‫قابليت‬ ‫تنها‬ ‫ها‬‫ايجاد‬ ‫برای‬ ‫اما‬ ‫داشتند‬ ‫را‬ ‫کاربردی‬ ‫های‬
‫بي‬ ‫يکپارچگي‬‫برنامه‬ ‫و‬ ‫فرآيندها‬ ،‫افراد‬ ‫از‬ ‫اعم‬ ‫سازمان‬ ‫در‬ ‫موجود‬ ‫عناصر‬ ‫تمام‬ ‫ن‬‫قابليت‬ ‫از‬ ‫تا‬ ‫ضروريست‬ ‫کاربردی‬ ‫های‬‫سيستم‬ ‫های‬‫های‬
BPM‫کنار‬ ‫در‬ ‫نيز‬ESB‫فعاليت‬ ‫بکارگيری‬ ‫با‬ ‫تا‬ ‫برد‬ ‫بهره‬ ‫ها‬‫سيستم‬ ‫اين‬ ‫های‬‫سازمان‬ ‫سطح‬ ‫در‬ ‫را‬ ‫کامل‬ ‫يکپارچگي‬ ‫يکديگر‬ ‫کنار‬ ‫در‬ ‫ها‬
‫نمود‬ ‫ايجاد‬.
‫سيستم‬ ،‫گوياتر‬ ‫بعبارت‬‫های‬BPM‫مي‬ ‫متصل‬ ‫يکديگر‬ ‫به‬ ‫را‬ ‫افراد‬ ‫و‬ ‫فرآيندها‬ ،‫برنامه‬ ‫و‬ ‫کند‬‫تنگاتنگ‬ ‫ارتباط‬ ‫طريق‬ ‫از‬ ‫نيز‬ ‫کاربردی‬ ‫های‬
BPM‫و‬ESB‫مي‬ ‫متصل‬ ‫فرآيندها‬ ‫و‬ ‫افراد‬ ‫به‬‫از‬ ‫انکارناپذير‬ ‫نيازهای‬ ‫بدليل‬ ‫که‬ ‫دنيا‬ ‫بزرگ‬ ‫شرکتهای‬ ‫که‬ ‫روست‬ ‫اين‬ ‫از‬ .‫شوند‬
‫سيستم‬‫مي‬ ‫استفاده‬ ‫متفاوت‬ ‫های‬‫جامع‬ ‫سطح‬ ‫در‬ ،‫نمايند‬‫مي‬ ‫بهره‬ ‫آن‬ ‫مزايای‬ ‫از‬ ‫و‬ ‫هستند‬ ‫يکپارچه‬ ‫ي‬‫برند‬.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
ESB Suite Components:
An Enterprise Service Bus contains the following components:
 ESB Server: The ESB Server is the runtime server which listens on the control topic for updates
from the ESB Metadata Server and updates its cache.
 ESB Administrative Control: The ESB Admin Control panel will provide a Web-based
interface for managing, administering, and monitoring services that you have registered with the
ESB Metadata Server.
 ESB Metadata Server: The database that holds your ESB metadata such as schemas,
transformations, and routing rules. The ESB Metadata Server is the server to which you register the
ESB services that you have designed using Developer IDE and configured using ESB Control.
 Developer IDE:
Usually a graphical and user-friendly way to model, edit, and design the services that comprise an
Oracle Enterprise Service Bus system.
 Commercial
o Talend Enterprise ESB
o IBM Integration Bus
o IBM WebSphere ESB
o Microsoft BizTalk Server
o Windows Azure Service Bus
o Oracle Enterprise Service Bus (BEA Logic)
o Mule ESB (Enterprise Edition)
 Open-source
o Apache Camel
o JBoss ESB
o NetKernel
o Petals ESB
o Spring Integration
o Open ESB
o WSO2 ESB
o Mule ESB (Community Edition)
SOA & ESB :
‫معماری‬SOA‫اشاره‬ ‫موضوع‬ ‫اين‬ ‫به‬‫شکل‬ ‫به‬ ‫بايد‬ ‫سازمان‬ ‫يک‬ ‫افزاری‬ ‫نرم‬ ‫محصوالت‬ ‫طراحي‬ ‫که‬ ‫کند‬ ‫مي‬‫م‬ ‫سرويس‬‫حور‬‫نظر‬ ‫در‬
‫آنکه‬ ‫حال‬ ،‫شود‬ ‫گرفته‬ESB‫به‬‫افزارها‬ ‫نرم‬ ‫اين‬ ‫بين‬ ‫ارتباط‬ ‫برقراری‬ ‫نحوه‬‫روش‬ ‫به‬ ‫که‬ ‫سازمان‬ ‫ی‬SOA‫شده‬ ‫طراحي‬‫ا‬.‫کند‬ ‫مي‬ ‫اشاره‬ ،‫ند‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
IIB (IBM Integration Bus):
IIB (formerly known as WebSphere Message Broker) is IBM's integration broker from the WebSphere product
family that allows business information to flow between disparate applications across multiple hardware and
software platforms. The product is an Enterprise Service Bus supplying a communication channel between
applications and services in a service-oriented architecture.
IBM Integration Bus provides capabilities to build solutions needed to support diverse integration requirements
through a set of connectors to a range of data sources, including packaged applications, files, mobile devices,
messaging systems, and databases.
IIB‫نام‬ ‫با‬ ‫گذشته‬ ‫در‬ ‫که‬WebSphere Message Broker‫خانواده‬ ‫محصوالت‬ ‫از‬ ‫یکی‬ ‫شده‬ ‫می‬ ‫شناخته‬WebSphere‫مربوط‬
‫به‬IBM.‫شود‬ ‫منتقل‬ ‫مختلف‬ ‫افزارهای‬ ‫سخت‬ ‫و‬ ‫ها‬ ‫اپلیکشن‬ ‫بین‬ ‫بزینسی‬ ‫اطاعات‬ ‫که‬ ‫باشد‬ ‫می‬IIB‫مجموعه‬ ‫طریق‬ ‫از‬‫ا‬‫کانکتور‬ ‫از‬ ‫ی‬
‫با‬ ‫کار‬ ‫برای‬ ‫که‬ ‫امکاناتی‬ ‫و‬ ‫مختلف‬ ‫های‬Data source... ‫و‬ ‫موبایل‬ ‫مختلف‬ ‫دستگاههای‬ ،‫فایلها‬ ،‫ها‬ ‫دیتابیس‬ ،‫ها‬‫توا‬ ‫می‬ ‫دارد‬‫نرم‬ ‫ند‬
.‫کند‬ ‫یکپارچه‬ ‫باهم‬ ‫را‬ ‫سازمان‬ ‫یک‬ ‫مختلف‬ ‫افزارهای‬
 Provides endpoints and the ability to connect to other endpoints
Off-the-shelf applications, services, web apps, devices, appliances, custom built
software…
 Protocols and Message Formats
Protocols - e.g. MQ, TCP/IP, HTTP, File system, FTP, SMTP, POP3 etc.
Message Formats - e.g. Binary (C/COBOL), XML, Industry (SWIFT, EDI, HL7),
User-defined
 Mediation Patterns
Route, Transform, Enrich, Filter, Monitor, Distribute, Decompose, Correlate,
Fire and Forget, Request/Reply, Publish/Subscribe, Aggregation, Fan-in, Complex
Event Processing…
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫های‬ ‫ورژن‬ ‫انواع‬IIB:
IIB prerequisites:
 IBM MQ –Optional on distributed systems for most applications–Required on z/OS and for the use
of some IBM Integration Bus features
 Java 7.1 on all platforms
Supported software:
 Supports access to databases: DB2, Oracle, Sybase, SQL Server, Informix, solid DB
Open Driver Manager support enables new ODBC databases to be accessed
JDBC Type 4 for popular databases
 Supports access to message-oriented middleware: IBM MQ 7.0.1, 7.1, 7.5, and 8.0–JMS
1.2 and 2.0
 Includes access to ERP systems: SAP, Siebel, PeopleSoft, and JD Edwards
ERP(Enterprise resource planning)‫برنامه‬‫سازمانی‬ ‫منابع‬ ‫ریزی‬،‫فعالیت‬ ‫از‬ ‫وسیعی‬ ‫طیف‬ ‫شامل‬‫که‬ ‫است‬ ‫مختلفی‬ ‫های‬
‫یک‬ ‫عملکرد‬ ‫بهبود‬ ‫به‬‫سازمان‬‫می‬ ‫منتهی‬‫شود‬‫داده‬ ‫تمام‬ ‫و‬‫سیستم‬ ‫یک‬ ‫در‬ ‫را‬ ‫سازمان‬ ‫یک‬ ‫فرایندهای‬ ‫و‬ ‫ها‬‫نرم‬‫یک‬ ‫قالب‬ ‫در‬ ‫و‬ ‫افزاری‬
‫می‬ ‫مدیریت‬ ‫دقیق‬ ‫و‬ ‫منظم‬ ،‫پیوسته‬ ‫بصورت‬ ‫اطالعاتی‬ ‫بانک‬‫نماید‬.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫محیط‬IIB:
‫اجرای‬ ‫با‬IIB‫ش‬ ‫به‬ ‫محیطی‬ ‫با‬:‫شویم‬ ‫می‬ ‫روبرو‬ ‫زیر‬ ‫کل‬
Message flows:
A message flow is a sequence of processing steps that run in an integration node when an input message is
received. An integration node is a set of execution processes that host one or more message flows to route,
transform, and enrich in-flight messages. You can configure message flows to use one or both of the supported
communication models, point-to-point and publish/subscribe.
‫از‬ ‫توان‬ ‫مي‬ ،‫فلو‬ ‫مسيج‬ ‫يک‬ ‫براي‬ .‫شود‬ ‫مي‬ ‫اجرا‬ ‫ورودي‬ ‫ديتاي‬ ‫روي‬ ‫بر‬ ‫که‬ ‫است‬ ‫مراحلي‬ ‫از‬ ‫اي‬ ‫سلسله‬ ‫فلو‬ ‫مسيج‬ ‫يک‬‫مدل‬ ‫دو‬
‫ارتباطي‬point-to-point & publish/subscribe.‫کرد‬ ‫استفاده‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
***‫در‬ ‫ها‬ ‫فلو‬ ‫سازي‬ ‫پياده‬ ‫براي‬IIB‫اين‬ ‫پلت‬ ‫ذيل‬ ‫شکل‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫هايي‬ )‫کامپوننت(نود‬ ‫يکسري‬:‫دهد‬ ‫مي‬ ‫نشان‬ ‫را‬ ‫نودها‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫با‬ ‫کار‬ ‫شروع‬IIB:
‫بار‬ ‫اولین‬ ‫برای‬ ‫که‬ ‫وقتی‬IIB‫کنیم‬ ‫می‬ ‫اجرا‬ ‫را‬،‫صف‬ ‫با‬. ‫شویم‬ ‫می‬ ‫روبرو‬ ‫زیر‬ ‫شکل‬ ‫به‬ ‫ای‬ ‫حه‬
1)‫روی‬ ‫بر‬ ‫را‬ ‫تنظیماتی‬ ‫باید‬ ‫ابتدا‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫برای‬IIB‫اجرای‬ ‫از‬ ‫بعد‬ .‫دهیم‬ ‫انجام‬Integration Toolkit‫صفحه‬ ‫اگر‬
welcome‫صفحه‬ ‫توانیم‬ ‫می‬ ،‫نشد‬ ‫ظاهر‬ ‫باال‬welcome‫منوی‬ ‫از‬ ‫را‬Help‫سپس‬ .‫کنیم‬ ‫انتخاب‬‫ص‬ ‫در‬‫فحه‬‫زیر‬‫گزینه‬Get
Started:‫شود‬ ‫می‬ ‫ظاهر‬ ‫زیر‬ ‫صفحه‬ ، ‫کنیم‬ ‫می‬ ‫انتخاب‬ ‫را‬
2)‫در‬‫این‬‫گزینه‬ ‫صفحه‬Create default configuration‫از‬ ‫صفحه‬ ‫یک‬ ،‫کنیم‬ ‫می‬ ‫انتخاب‬ ‫را‬Help‫شم‬ ‫به‬ ‫که‬ ‫شود‬ ‫می‬ ‫باز‬‫ا‬
‫ویزارد‬ ‫قسمت‬ ‫از‬ ‫توانید‬ ‫می‬ ‫که‬ ‫گوید‬ ‫می‬:‫دهید‬ ‫انجام‬ ‫را‬ ‫فرض‬ ‫پیش‬ ‫تنظیمات‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
3)‫صفحه‬ ‫این‬ ‫در‬‫گزینه‬ion wizardStart the Default Configurat‫کنی‬ ‫می‬ ‫انتخاب‬ ‫را‬‫م‬.
‫گزینه‬Default Configuration: ‫باشد‬ ‫می‬ ‫زیر‬ ‫کامپوننت‬ ‫دو‬ ‫شامل‬
 integration node to process application messages.
 queue manager to host the integration node.
4)‫با‬‫شود‬ ‫می‬ ‫آغاز‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫کامپوننت‬ ‫دو‬ ‫این‬ ‫نصب‬ ‫باال‬ ‫گزینه‬ ‫انتخاب‬.‫دکمه‬ ‫فشردن‬ ‫باز‬Next‫تنظیمات‬ ‫کار‬Queue
Manger‫و‬integration Node‫شود‬ ‫می‬ ‫انجام‬ ‫دو‬ ‫این‬ ‫بین‬ ‫اتصال‬ ‫برقراری‬ ‫و‬،‫ا‬ ‫از‬ ‫بعد‬‫ن‬‫فرض‬ ‫پيش‬ ‫تنظيمات‬ ‫موفق‬ ‫جام‬،
‫به‬ ‫متصل‬ ‫نود‬MQ‫شکل‬ ‫به‬‫زیر‬‫است‬ ‫شده‬ ‫ایجاد‬:
All actions are applied under account:
LocalSystem
Queue manager name: IB9QMGR
Queue manager port: 2414
Default integration node details
Integration node name: IB9NODE
Queue manager name: IB9QMGR
‫به‬ ‫اگر‬websphere MQ‫نگاه‬ ‫نيز‬
‫سمت‬ ‫در‬ ‫نود‬ ‫همين‬ ‫که‬ ‫بينيم‬ ‫مي‬ ، ‫کنيم‬
MQ: ‫است‬ ‫شده‬ ‫ایجاد‬ ‫نيز‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Applications:
An application is a container for all the resources that are required to create a solution. An application can
contain IBM® Integration Bus resources, such as flows, message definitions, libraries, and JAR files.
You use applications to group all the resources that are required to deliver an integration solution, enabling easier
development and management.
If you are developing resources for multiple integration solutions in the IBM Integration Toolkit, then consider grouping
your resources into applications. The use of a shared or static library helps organization by grouping reusable resources
together. A shared library can also be used by other applications, services, shared libraries, or integration projects.
‫نياز‬ ‫مورد‬ ‫منابع‬ ‫همه‬ ‫نگهداري‬ ‫براي‬ ‫ظرف‬ ‫يک‬ ‫اپليکيشن‬‫اپليکيشن‬ ‫يک‬ .‫است‬ ‫مساله‬ ‫يک‬ ‫حل‬ ‫در‬IIB‫شامل‬ ‫تواند‬ ‫مي‬‫منابعي‬
‫مانند‬flows, libraries‫و‬jar file‫مسا‬ ‫يک‬ ‫در‬ ‫نياز‬ ‫مورد‬ ‫منابع‬ ‫همه‬ ‫کردن‬ ‫مجتمع‬ ‫براي‬ ‫اپليکيشن‬ ‫از‬ .‫باشد‬ ‫ها‬‫مي‬ ‫استفاده‬ ‫له‬
.‫است‬ ‫آسانتر‬ ‫توليد‬ ‫و‬ ‫مديريت‬ ‫کار‬ ‫اين‬ ‫حسن‬ .‫شود‬
Integration projects:
An integration project is a specialized container in which you create and maintain all the resources associated with one
or more message flows.
You can create an integration project to contain a single message flow and its resources, or you can group together related
message flows and resources in a single integration project to provide an organizational structure to your message flow
resources.
‫است‬ ‫مخصوصي‬ ‫ظرف‬ ‫يک‬ ‫پروژه‬(‫اپليکيشن‬ ‫از‬ ‫کوچکتر‬ ‫ظرفي‬)‫شم‬ ‫که‬‫ا‬‫است‬ ‫مورد‬ ‫منابع‬ ‫تمامي‬ ‫نگهداري‬ ‫و‬ ‫ايجاد‬ ‫براي‬‫فاده‬
.‫کنيد‬ ‫مي‬ ‫ايجاد‬ ‫را‬ ‫آن‬ ‫فلوهايتان‬ ‫در‬‫ايجاد‬ ‫آن‬ ‫منابع‬ ‫و‬ ‫فلو‬ ‫مسيج‬ ‫يک‬ ‫نگهداري‬ ‫براي‬ ‫پروژه‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫مي‬ ‫يا‬ ‫کنيد‬
‫ه‬ ‫با‬ ‫مرتبط‬ ‫هاي‬ ‫فلو‬ ‫مسيج‬ ‫از‬ ‫اي‬ ‫مجموعه‬ ‫توانيد‬.‫نماييد‬ ‫نگهداري‬ ‫پروژه‬ ‫يک‬ ‫در‬ ‫را‬ ‫م‬‫پروژه‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫به‬ ‫تبديل‬ ‫را‬
.‫نماييد‬ ‫اپليکيشن‬.‫نماييد‬ ‫اضافه‬ ‫اپليکشن‬ ‫يک‬ ‫به‬ ‫را‬ ‫پروژه‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫همچنين‬
: ‫باشد‬ ‫ذيل‬ ‫منابع‬ ‫شامل‬ ‫تواند‬ ‫مي‬ ‫پروژه‬ ‫يک‬
An integration project can contain the following resources:
 Message flows
 Subflows
 Message maps
 ESQL files
 Database definitions
 BAR files
 Test Clients
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Creating Application:
‫يک‬ ‫ايجاد‬ ‫براي‬‫اپليکشن‬‫مراحل‬‫زير‬‫نماييد‬ ‫طي‬ ‫را‬:
1. Open the New Integration Project wizard by clicking File > New > Application.
2. Enter a name for the application. Click Next.
3. Select any existing static libraries to which you want to refer, then click Finish.
Creating integration project:
: ‫نماييد‬ ‫طي‬ ‫را‬ ‫ذيل‬ ‫مراحل‬ ‫پروژه‬ ‫يک‬ ‫ايجاد‬ ‫براي‬
4. Open the New Integration Project wizard by clicking File > New > Integration Project.
5. Enter a name for the project and select any existing projects to which you want to refer. Click Next.
6. Select any existing static libraries to which you want to refer, then click Finish.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Note1: The new integration project is created and shown in the Independent Resources folder of the Application
Development view. When you have created an integration project, you might want to create resources to add to the
project.
Note: You cannot create schema files in an integration project; you can create them in an application or library
only.
Note: An integration project can reference a static library but not a shared library.
Note: If you are not ready to create an application or library yet, you can use an integration project to hold resources in
the meantime. When you are ready, you can either create an application or library and move the resources from the
integration project, or you can convert your integration project to an application or library.
Note: To see the project references for your integration project, right-click the integration project and then click:
Properties > Project References. You can also reference resources that exist outside the integration project (such as a
Java™ project or Data Design project) by adding project references. Right-click the integration project, then click
Properties > Project References. Select the projects that you want to reference in your integration project.
You can create resources such as message flows, maps, and ESQL files in an integration project.
To create resources in your integration project, complete the following steps:
1) Click File > New. (Alternatively, expand the Independent Resources folder of the Application Development view,
right-click the integration project, then click New.)
2) Select the resource to create.
The appropriate wizard opens; for example, the New Message Flow wizard.
3) Follow the instructions in the wizard, then click Finish.
The new resource is displayed in the Application Development view, under the integration project.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Message modeling:
‫هاي‬ ‫قابليت‬ ‫از‬ ‫يکي‬ .‫دارند‬ ‫مختلف‬ ‫فرمتهاي‬ ‫با‬ ‫اطالعات‬ ‫به‬ ‫نياز‬ ‫مختلف‬ ‫هاي‬ ‫سيستم‬ ‫که‬ ‫دهد‬ ‫مي‬ ‫نشان‬ ‫زير‬ ‫شکل‬IIB‫ا‬ ‫کردن‬ ‫فرهم‬‫است‬ ‫مکاناتي‬
.‫کرد‬ ‫تبديل‬ ‫مختلف‬ ‫قالبهاي‬ ‫به‬ ‫را‬ ‫ديتاها‬ ‫براحتي‬ ‫بتوان‬ ‫که‬IIB(‫درختي‬ ‫ساختار‬ ‫از‬tree‫بر‬ )‫و‬ ‫ها‬ ‫داده‬ ‫ساختار‬ ‫داشتن‬ ‫نگه‬ ‫اي‬‫خ‬‫مربوط‬ ‫صوصيات‬
.‫کند‬ ‫مي‬ ‫استفاده‬ ‫آنها‬ ‫به‬
 IBM Integration Bus routes and manipulates data after converting it into a logical tree
– Input node of the message flow converts incoming data from a stream of bits into a logical tree
structure through a parsing operation
‫در‬IIB‫بصورت‬ ‫پيغام‬ ‫اين‬ ‫(که‬ ‫ميکنند‬ ‫دريافت‬ ‫کالينت‬ ‫سمت‬ ‫از‬ ‫که‬ ‫را‬ ‫پيغامي‬ ‫وروردي‬ ‫نودهاي‬stream‫طريق‬ ‫از‬ ‫را‬ )‫است‬
‫عمليات‬Paring.‫ميکنند‬ ‫تبديل‬ ‫درختي‬ ‫ساختار‬ ‫يک‬ ‫به‬
– Output node of message flow creates outgoing data (in the bit stream) from the tree structure by
a serialization operation
‫عمليات‬ ‫طريق‬ ‫از‬ ‫را‬ ‫درختي‬ ‫پيغامهاي‬ ‫خروجي‬ ‫هاي‬ ‫نود‬ ‫طور‬ ‫همين‬serialization‫به‬ ‫تبديل‬Stream‫کنند‬ ‫مي‬.
:‫دهد‬ ‫مي‬ ‫توضيح‬ ‫را‬ ‫کار‬ ‫انجام‬ ‫روند‬ ‫زير‬ ‫شکل‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
 A logical message tree contains the original data, plus other information about the runtime
environment, message transport properties, and other “control” information
‫ساختار‬ ‫به‬ ‫شده‬ ‫تبديل‬ ‫پيغام‬ ‫يک‬tree‫انت‬ ‫به‬ ‫مربوط‬ ‫خصوصيات‬ ،‫اجرا‬ ‫محيط‬ ‫درباره‬ ‫ديگري‬ ‫اطالعات‬ ‫بعالوه‬ ‫اصلي‬ ‫هاي‬ ‫داده‬ ‫شامل‬‫ساير‬ ‫و‬ ‫داده‬ ‫قال‬
‫کنت‬ ‫اطالعات‬‫قسمت‬ ‫در‬ ‫اطالعات‬ ‫اين‬ .‫باشد‬ ‫مي‬ ‫رلي‬Header‫ساختار‬tree.‫گيرد‬ ‫مي‬ ‫قرار‬
:‫نکته‬‫شدن‬ ‫راحتتر‬ ‫براي‬ ‫که‬ ‫کنيد‬ ‫توجه‬message transformation‫و‬routing،IIB‫آن‬ ‫منطقي‬ ‫فرمت‬ ‫از‬ ‫را‬ ‫ها‬ ‫داده‬ ‫فيزيکي‬ ‫فرمت‬‫جدا‬
‫آن‬ ‫به‬ ‫که‬ ‫ديتا‬ ‫منطقي‬ ‫فرمت‬ .‫ميکند‬message assembly‫ک‬ ‫است‬ ‫روشي‬ ،‫گويند‬ ‫مي‬‫ه‬IIB،‫پيغام‬ ‫خصوصيات‬ ‫ساختار‬ ‫تا‬ ‫کند‬ ‫مي‬ ‫استفاده‬‫بدنه‬
.‫دهد‬ ‫شرح‬ ‫را‬ ‫آن‬ ‫هدر‬ ‫و‬ ‫پيغام‬‫نام‬ ‫به‬ ‫گره‬ ‫يک‬ ‫با‬ ‫هميشه‬ ‫درختي‬ ‫ساختار‬root‫شود‬ ‫مي‬ ‫شروع‬‫نام‬ ‫با‬ ‫ورودي‬ ‫هاي‬ ‫نود‬ ‫در‬ ‫که‬InputRoot‫در‬ ‫و‬
‫نام‬ ‫با‬ ‫خروجي‬ ‫نودهاي‬OutputRoot‫شود‬ ‫مي‬ ‫شناخته‬‫گره‬ ‫زير‬ ‫ساختار‬ ‫بقيه‬ .root‫شو‬ ‫مي‬ ‫ايجاد‬.‫ند‬
Supported message formats in IIB:
‫ليست‬ ‫زير‬ ‫جدول‬‫مهم‬ ‫انواع‬ ‫از‬ ‫برخي‬‫در‬ ‫که‬ ‫پيغام‬ ‫قالبهاي‬IIB‫شود‬ ‫مي‬ ‫پشتيباني‬‫است‬ ‫شده‬ ‫اورده‬.
Format Message model schema file
SOAP XML XML Schema 1.0 and WSDL 1.0
Other XML XML Schema 1.0
CSV Data Format Description Language 1.0
Industry standard text or binary data Data Format Description Language 1.0
COBOL structure Data Format Description Language 1.0
C structure Data Format Description Language 1.0
CORBA IDL XML Schema 1.0
JSON The JSON parser does not use a model.
MIME The MIME parser does not use a model.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
IIB Built-in Nodes:
‫در‬IIB.‫اند‬ ‫شده‬ ‫بندی‬ ‫دسته‬ ‫مختلفی‬ ‫های‬ ‫دسته‬ ‫در‬ ‫ها‬ ‫نود‬ ‫این‬ .‫شود‬ ‫فلواستفاده‬ ‫مسیج‬ ‫در‬ ‫تا‬ ‫شده‬ ‫تهیه‬ ‫مختلفی‬ ‫های‬ ‫نود‬‫از‬ ‫دست‬ ‫اولین‬
، ‫ها‬ ‫نود‬Websphere MQ.‫دارد‬ ‫نام‬
Websphere MQ Nodes:
‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫با‬ ‫کار‬ ‫برای‬ ‫که‬ ‫است‬ ‫نودهایی‬ ‫شامل‬ ‫بخش‬ ‫این‬
:‫گیرد‬ ‫می‬
1) MQInput node:
Use the MQInput node to receive messages from clients that connect to the broker by using the WebSphere®
MQ Enterprise Transport, and that use the MQI and AMI application programming interfaces.
.‫میگیرد‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫کالینت‬ ‫سمت‬ ‫از‬ ‫پیغام‬ ‫دریافت‬ ‫برای‬ ‫نود‬ ‫این‬ ‫از‬‫روی‬ ‫بر‬ ‫شده‬ ‫داده‬ ‫قرار‬ ‫های‬ ‫پیغام‬ ‫نود‬ ‫این‬MQ‫را‬‫د‬.‫میکند‬ ‫ریافت‬
‫نام‬ ‫به‬ ‫متدی‬ ‫از‬ ‫نود‬ ‫این‬MQGet‫از‬ ‫پیغام‬ ‫دریافت‬ ‫برای‬MQ‫های‬ ‫پیغام‬ ‫است‬ ‫قرار‬ ‫که‬ ‫هایی‬ ‫فلو‬ .‫کند‬ ‫می‬ ‫استفاده‬MQ‫دریاف‬ ‫را‬، ‫کنند‬ ‫ت‬
‫از‬ ‫باید‬.‫کنند‬ ‫استفاده‬ ‫فلو‬ ‫ابتدای‬ ‫در‬ ‫نود‬ ‫این‬
: ‫است‬ ‫روبرو‬ ‫شکل‬ ‫به‬ ‫نود‬ ‫این‬ ‫خروجی‬
Terminal Description
Failure
The output terminal to which the message is routed if an error occurs. Even if the Validation property is set,
messages propagated to this terminal are not validated.
Out
The output terminal to which the message is routed if it is successfully retrieved from the WebSphere
MQ queue.
Catch
The output terminal to which the message is routed if an exception is thrown downstream and caught by
this node.
‫این‬‫نود‬‫خ‬‫ص‬:‫پردازیم‬ ‫می‬ ‫آنها‬ ‫بررسی‬ ‫به‬ ‫ذیل‬ ‫در‬ ‫که‬ ‫دارد‬ ‫وصیاتی‬
Decription Tab:
‫خصوصیات‬ ‫شامل‬ ‫تب‬ ‫این‬Node name،Short
description‫و‬Long description‫باشد‬ ‫می‬
.‫است‬ ‫مشخص‬ ‫نامشان‬ ‫از‬ ‫آنها‬ ‫عملکرد‬ ‫که‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Basic Tab:
‫خصوصیت‬ ‫شامل‬ ‫تب‬ ‫این‬Queue name‫نام‬ ‫باید‬ ‫آن‬ ‫مقدار‬ ‫که‬ ‫است‬Queue.‫است‬ ‫شده‬ ‫تعریف‬ ‫بروکر‬ ‫در‬ ‫که‬ ‫باشد‬
Input Message Parsing Tab:
‫روبرو‬ ‫شکل‬ ‫در‬ ‫شده‬ ‫داده‬ ‫نشان‬ ‫خواص‬ ‫شامل‬ ‫تب‬ ‫این‬
:‫باشد‬ ‫می‬
Property Default Description
Message
domain
BLOB
The domain that is used to parse the message. If the field is blank then the default
is BLOB.
.‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫شود‬ ‫آناالیز‬ ‫آن‬ ‫با‬ ‫مسیج‬ ‫که‬ ‫دامینی‬ ‫فیلد‬ ‫این‬‫تواند‬ ‫می‬ ‫فیلد‬ ‫این‬ ‫که‬ ‫مقادیری‬
: ‫است‬ ‫زیر‬ ‫بصورت‬ ‫بگیرد‬
Message
model
Cleared
The name or location of the message model schema file in which the message is
defined. This list is populated with all available message model schema files for
the Message domain that you have selected.
Message Cleared
The name or location of the message root within your message model schema file. This
list is populated with all available messages that are defined in the Message
model that you have selected.
Physical
format
Cleared
The name of the physical format of the message. If you are using the MRM or IDOC
parser, select the physical format of the incoming message from the list. This list
includes all the physical formats that you have defined for the selected message
model. If you set the Message domain property to DataObject, you can set this
property to XML or SAP ALE IDoc. Set this property to SAP ALE IDoc when you
have to parse a bit stream from an external source and generate a message tree.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Parser Options Tab:
:‫است‬ ‫زیر‬ ‫شکل‬ ‫شرح‬ ‫به‬ ‫دارند‬ ‫قرار‬ ‫تب‬ ‫این‬ ‫در‬ ‫که‬ ‫خصوصیاتی‬
Property Default Description
Parse
timing
On
Demand
This property controls when an input message is parsed. Valid values are On
Demand, Immediate, and Complete.
Parse timing is, by default, set to On Demand, which causes parsing of the
message to be delayed. To cause the message to be parsed immediately, see Parsing
on demand.
Use
MQRFH2C
compact
parser for
MQRFH2
header
Cleared
This property controls whether the MQRFH2C compact parser, instead of the MQRFH2
parser, is used for MQRFH2 headers.
Build tree
using XML
schema
data types
Cleared
This property controls whether the XMLNSC parser creates syntax elements in the message
tree with data types taken from the XML schema. You can select this property only if you set
the Validate property on the Validation tab to Content or Content and Value.
Use
XMLNSC
compact
parser for
XMLNS
domain
Cleared
This property controls whether the XMLNSC compact parser is used for messages in the
XMLNS domain. If you set this property, the message data is displayed under XMLNSC in
nodes that are connected to the output terminal when the input MQRFH2 header or the
Input Message Parsing property Message domain is XMLNS. For more information,
see Manipulating messages in the XMLNSC domain.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Property Default Description
Retain
mixed
content
Cleared
This property controls whether the XMLNSC parser creates elements in the message tree
when it encounters mixed text in an input message. If you select the check box, elements
are created for mixed text. If you clear the check box, mixed text is ignored and no elements
are created.
Retain
comments
Cleared
This property controls whether the XMLNSC parser creates elements in the message tree
when it encounters comments in an input message. If you select the check box, elements
are created for comments. If you clear the check box, comments are ignored and no
elements are created.
Retain
processing
instructions
Cleared
This property controls whether the XMLNSC parser creates elements in the message tree
when it encounters processing instructions in an input message. If you select the check box,
elements are created for processing instructions. If you clear the check box, processing
instructions are ignored and no elements are created.
Opaque
elements
Blank
This property is used to specify a list of elements in the input message that are to be
opaquely parsed by the XMLNSC parser. Opaque parsing is performed only if validation is
not enabled (that is, if Validate is None); entries that are specified in Opaque
Elements are ignored if validation is enabled.
Advanced Tab:
‫تب‬ ‫خصوصیات‬Advanced‫شرح‬ ‫به‬‫شکل‬:‫باشد‬ ‫می‬ ‫ذیل‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
2) MQOutput node:
Basic Tab:
‫تب‬ ‫خصوصیات‬Basic‫روبرو‬ ‫شکل‬ ‫شرح‬ ‫به‬
:‫هستند‬
Property Description
Queue
Manager
Name
Enter the name of the WebSphere MQ queue manager to which this output queue (which is
specified by the Queue Name property) is defined.
The Queue Manager Name property is only needed if the queue specified is defined on
another queue manager or is a cluster queue.
Queue Name
If you set the Destination Mode property to Queue Name, you must specify a value
for the Queue Name property. If you set Destination Mode to another value, this
property is ignored.
Advanced Tab:
‫تب‬ ‫خصوصیات‬Advanced‫روبرو‬ ‫شکل‬ ‫شرح‬ ‫به‬
:‫هستند‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Property Default Description
Destination
Mode
Queue
Name
The queues to which the output message is sent.
 If you select Queue Name (the default), the message is sent to the queue that is
named in the Queue Name property. If you select this option, you must set
the Queue Manager Name and Queue Name properties.
 If you select Reply To Queue, the message is sent to the queue that is named in
the ReplyToQ field in the MQMD.
 If you select Destination List, the message is sent to the list of queues that are
named in the local environment that is associated with the message.
Transaction
Mode
Automatic
This property controls whether the message is put transactionally.
 If you select Automatic (the default), the message transactionality is derived from
the way that it was specified at the input node.
 If you select Yes, the message is put transactionally.
 If you select No, the message is put non-transactionally.
Persistence
Mode
Automatic
This property controls whether the message is put persistently.
 If you select Automatic (the default), the persistence is as specified in the incoming
message.
 If you select Yes, the message is put persistently.
 If you select No, the message is put non-persistently.
 If you select As Defined for Queue, the message persistence is set as defined
for the WebSphere MQ queue.
New Message
ID
Cleared
If you select this check box, WebSphere MQ generates a new message identifier to
replace the contents of the MsgId field in the MQMD. This property maps to the
MQPMO_NEW_MSG_ID option of the MQPMO of the MQI. Clear the check box if you
do not want to generate a new ID. A new message ID is still generated if you select
the Request property on the Request tab.
New
Correlation ID
Cleared
If you select this check box, WebSphere MQ generates a new correlation identifier to
replace the contents of the CorrelId field in the MQMD. This property maps to the
MQPMO_NEW_CORREL_ID option of the MQPMO of the MQI. Clear the check box if
you do not want to generate a new ID.
Segmentation
Allowed
Cleared
If you select this check box, WebSphere MQ breaks the message into segments in the
queue manager.
Message
Context
Pass All
This property controls how origin context is handled.
 Pass All maps to the MQPMO_PASS_ALL_CONTEXT option of the MQPMO of the
MQI.
 Pass Identity maps to the MQPMO_PASS_IDENTITY_CONTEXT option of the
MQPMO of the MQI.
 Set All maps to the MQPMO_SET_ALL_CONTEXT option of the MQPMO of the
MQI.
 Set Identity maps to the MQPMO_SET_IDENTITY_CONTEXT option of the
MQPMO of the MQI.
 Default maps to the MQPMO_DEFAULT_CONTEXT option of the MQPMO of the
MQI.
 None maps to the MQPMO_NO_CONTEXT option of the MQPMO of the MQI.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Property Default Description
Alternate
User
Authority
Cleared
If you select this check box, alternate authority is used when the output message is
put and the MQOO_ALTERNATE_USER_AUTHORITY option is set in the open options
(MQOO) of the MQI. If you select this check box, this option is specified when the
queue is opened for output. The alternative user information is retrieved from the
context information in the message.
Request Tab:
‫تب‬ ‫خصوصیات‬Request‫شکل‬ ‫شرح‬ ‫به‬‫زیر‬:‫هستند‬
Property Default Description
Request Cleared
If you select the check box, each output message in the MQMD is generated as a request
message (MQMT_REQUEST), and the message identifier field is cleared (and set to
MQMI_NONE) so that WebSphere MQ generates a new identifier. Clear the check box to
indicate that each output message is not marked as a request message. If you have
set Destination Mode to Reply To Queue, you cannot select this check box.
A new message identifier is generated even if the New Message ID check box is not
selected on the Advanced tab.
Reply-to Queue
Manager
The name of the WebSphere MQ queue manager to which the output queue, which is
specified in Reply-to Queue, is defined. This name is inserted into the MQMD of each
output message as the reply-to queue manager.
Reply-to Queue
The name of the WebSphere MQ queue to which to put a reply to this request. This name
is inserted into the MQMD of each output message as the reply-to queue.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
HTTP nodes:
HTTP nodes can process SwA messages, you must use the MIME message domain and design your flow to
handle the attachments explicitly, and use custom logic to extract and parse the SOAP.
Cases where it might be better to use HTTP nodes include:
 Message flows in which a single request node handles multiple SOAP request and responses from more
than one WSDL.
 Message flows that interact with Web services that use different standards, such as REST or XML-RPC.
 Message flow that never use WS-Addressing, WS-Security, SwA, or MTOM.
1) HTTPInput node:
https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04565_.htm?cp=SSMKHH_9.0.0&lang=en
Use the HTTPInput node to receive an HTTP message from an HTTP client for processing by a message flow.
If you use the HTTPInput node with the HTTPReply and HTTPRequest nodes, the broker can act as an
intermediary for web services, and web service requests can be transformed and routed in the same way as
other message formats that are supported by IBM® Integration Bus.
‫از‬( ‫سمت‬ ‫کامپوننت‬ ‫این‬provider, Server‫پيام‬ ‫یک‬ ‫دریافت‬ ‫براي‬ ‫سرویس‬ ‫وب‬ )HTTP‫استف‬ ‫کالینت‬ ‫سمت‬ ‫از‬‫مي‬ ‫اده‬
.‫شود‬‫همراه‬ ‫به‬ ‫نود‬ ‫این‬ ‫از‬ ‫که‬ ‫صورتي‬ ‫در‬HTTPReply‫و‬HTTPRequest‫ع‬ ‫به‬ ‫آن‬ ‫از‬ ‫توان‬ ‫مي‬ ، ‫شود‬ ‫استفاده‬‫واسطي‬ ‫نوان‬
.‫نمود‬ ‫استفاده‬ ‫سرویس‬ ‫وب‬ ‫براي‬
Web service requests can be received either in standard HTTP (1.0 or 1.1) format or in HTTP over SSL (HTTPS)
format. For more information about web services, see Processing Web service messages.
The HTTPInput node handles messages in the following message domains:
 MRM
 XMLNSC
 XMLNS
 MIME
 BLOB
 XML (this domain is deprecated; use XMLNSC)
 JSON
 DFDL
HTTP messages are always non-persistent, and have no associated order.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
2) HTTPReply:
https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04585_.htm
Use the HTTPReply node to return a response from the message flow to an HTTP client.
.‫شود‬ ‫می‬ ‫استفاده‬ ‫کالینت‬ ‫به‬ ‫پاسخ‬ ‫برگرداندن‬ ‫برای‬ ‫نود‬ ‫این‬ ‫از‬
Property Default Description
Ignore transport
failures
Selected
Select Ignore transport failures if you want transport-related failures to be ignored (for
example, if the client is disconnected). If you clear the check box, and a transport-
related error occurs, the input message is propagated to the Failure terminal. If you
clear the check box, you must supply a value for Reply send timeout (sec).
‫سمت‬ ‫به‬ ‫دیتا‬ ‫انتقال‬ ‫به‬ ‫مربوط‬ ‫خطاهای‬ ‫که‬ ‫خواهید‬ ‫می‬ ‫اگر‬‫بزنید‬ ‫تیک‬ ‫را‬ ‫گزینه‬ ‫این‬ ‫شود‬ ‫گرفته‬ ‫نادیده‬ ‫کالینت‬.
Reply send
timeout (sec)
120
Set the Reply send timeout (sec) value if you are not ignoring transport failures. This
property specifies the length of time, in seconds, that the node waits for an
acknowledgment that the client has received the reply.
‫ا‬‫ز‬‫ا‬ ، ‫باشد‬ ‫خورده‬ ‫تیک‬ ‫قبلی‬ ‫خاصیت‬ ‫اگر‬ .‫شود‬ ‫می‬ ‫استفاده‬ ‫دیتا‬ ‫ارسال‬ ‫انتظار‬ ‫زمان‬ ‫تعیین‬ ‫برای‬ ‫نود‬ ‫این‬‫خاصیت‬ ‫ین‬
.‫شود‬ ‫نمی‬ ‫بررسی‬
Generate default
HTTP headers from
reply or response
Selected
Select Generate default HTTP headers from reply or response if you want the default
Web service headers to be created using values from the HTTPReplyHeader or the
HTTPResponseHeader. If the appropriate header is not present in the input message,
default values are used.
3) HTTPRequest:
https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04595_.htm?lang=en
Use the HTTPRequest node to interact with a web service.
.‫شود‬ ‫مي‬ ‫استفاده‬ ‫سرويس‬ ‫وب‬ ‫يک‬ ‫فراخواني‬ ‫براي‬ ‫نود‬ ‫اين‬ ‫از‬
You can use this node in a message flow that does or does not contain an HTTPInput or HTTPReply node.
An HTTP request has two parts:
1. The URL of a service.
2. A stream of data that the remote server processes, then sends back a response, which is often a SOAP
or other web service message in XML.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Transformation:
Compute node:
https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04660_.htm?cp=SSMKHH_9.0.0&lang=en
Use the Compute node to construct one or more new output messages. The output messages that you create
in the Compute node might be created by modifying the information that is provided in the input message, or
by using only new information which can be taken from a database or from other sources. Elements of the input
message (for example, headers, header fields, and body data), its associated environment, and its exception list
can be used to create the new output message.
You can configure the Compute node to do any of the following operations:
 Insert,Update,Delete data from a database.
 Update the environment tree.
 Update the local environment tree.
 Create one or more output messages, with none, some, or all the content of the input message, and propagate
these new messages to the next node in the message flow.
Note: To propagate the input LocalEnvironment to the output LocalEnvironment, remember to set the Compute node
property Compute mode to an appropriate value. The Environment is always propagated in the output message.
:‫نکته‬‫خاصيت‬ ‫اگر‬Data source‫کند‬ ‫برقرار‬ ‫ارتباط‬ ‫آن‬ ‫با‬ ‫نتواند‬ ‫اجرا‬ ‫هنگام‬ ‫و‬ ‫کنيم‬ ‫دهي‬ ‫مقدار‬ ‫را‬ ‫کامپوننت‬ ‫اين‬ ‫در‬،‫ابتدا‬ ‫همان‬‫خ‬‫طا‬
‫کد‬ ‫حتي‬ ‫و‬ ‫دهد‬ ‫مي‬esql.‫شود‬ ‫نمي‬ ‫اجرا‬ ‫نيز‬ ‫آن‬ ‫داخل‬
Specify how the new messages are created by coding ESQL in the message flow ESQL resource file.
:‫است‬ ‫ذيل‬ ‫شرح‬ ‫به‬ ‫نود‬ ‫اين‬ ‫استفاده‬ ‫موارد‬
 Build a new message using a set of assignment statements
 Copy messages between parsers
 Convert messages from one code set to another
 Transform messages from one format to another
Data Source Property:
The ODBC data source name for the database that contains the tables to which you refer in the ESQL file that is associated
with this message flow (identified in the ESQL Module property). You can specify only one data source for the node. If
the ESQL that is associated with this node includes a PASSTHRU statement or SELECT function and a database reference,
you must specify a value for the Data Source property.
To configure access to a database from this node:
On the Basic tab, specify in Data Source the name by which the appropriate database is known on the system on which
this message flow is to run. The broker connects to this database with user ID and password information that you
have specified on the mqsicreatebroker, mqsichangebroker, or mqsisetdbparms command.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
You can also automatically configure connectivity to a database by using the Database Service.
Compute Mode property:
The Compute Mode property controls which components are used by default in the output message. Select the property
to specify whether the Message, LocalEnvironment (previously specified as DestinationList), and Exception List
components that are either generated in the node or contained in the incoming message are used.
This default value is used when the transformed message is routed to the Out terminal when processing in the node is
completed. The default value is also used whenever a PROPAGATE statement does not specify the composition of its
output message.
If the Compute Mode property is set to All, you must code the following ESQL to allow the input trees to be propagated
to the output terminal:
SET OutputRoot = InputRoot;
SET OutputLocalEnvironment = InputLocalEnvironment;
SET OutputExceptionList = InputExceptionList;
Throw exception on database error: If you select this check box, database errors cause the broker to throw an
exception.
Terminals and properties
Terminal Description
In The input terminal that accepts a message for processing by the node.
Failure The output terminal to which the input message is routed if an unhandled exception occurs during
the computation.
Out The output terminal to which the transformed message is routed when processing in the node is
completed. The transformed message might also be routed to this terminal by a PROPAGATE
statement.
Out1, Out2,
Out3, Out4
The first, second,third,fourth alternative output terminal to which the transformed message might be
routed by a PROPAGATE statement.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
ESQL (Extended Structured Query Language):
Case sensitivity of ESQL syntax: The case of ESQL statements is:
 Case sensitive in field reference literals
 Not case sensitive in ESQL language words
ESQL data types:
ESQL defines the following categories of data. Each category contains one or more data types.
ESQL‫انوع‬ ‫مورد‬ ‫در‬ ‫را‬ ‫زير‬ ‫های‬ ‫بندی‬ ‫دسته‬.‫باشد‬ ‫مي‬ ‫داده‬ ‫نوع‬ ‫چند‬ ‫يا‬ ‫يک‬ ‫شامل‬ ‫بندی‬ ‫دسته‬ ‫هر‬ ،‫دارد‬ ‫داده‬
 Boolean
 Datetime(DATE,TIME,TIMESTAMP, GMTTIMESTAMP, INTERVAL)
 Null
 Numeric (DECIMAL, FLOAT, INTEGER)
 Reference
 String(BIT, BLOB,CHARACTER)
Numeric data types:
 INTEGER: 64 bit, range between -9223372036854775808 and +9223372036854775807
 DECIMAL: Decimals have precision, scale.
‫دارای‬ ‫دسيمال‬ ‫اعداد‬‫دو‬:‫باشند‬ ‫مي‬ ‫بخش‬
Precision is the total number of digits of a number, the minimum precision is 1 and the
maximum precision is 34.
Precision‫از‬ ‫و‬ ‫باشد‬ ‫مي‬ ‫عدد‬ ‫صحيح‬ ‫قسمت‬1‫تا‬34.‫دهد‬ ‫جای‬ ‫خود‬ ‫در‬ ‫تواند‬ ‫مي‬ ‫رقم‬
Scale is the number of digits to the right of the decimal point:
 The minimum scale (-exponent) is -999,999,999
 The maximum scale (-exponent) is +999,999,999
Scale‫است‬ ‫شده‬ ‫ذکر‬ ‫باال‬ ‫در‬ ‫اعشاری‬ ‫قسمت‬ ‫مقدار‬ ‫بيشترين‬ ‫و‬ ‫کمترين‬ ، ‫باشد‬ ‫مي‬ ‫اعشاری‬ ‫قسمت‬.
Note: You cannot define precision and scale when declaring a DECIMAL, because they are assigned
automatically. It is only possible to specify precision and scale when casting to a DECIMAL.
‫هنگام‬ ‫تنها‬ ،‫نيستند‬ ‫تعيين‬ ‫قابل‬ ‫دسيمال‬ ‫متغير‬ ‫تعريف‬ ‫هنگام‬ ‫اعداد‬ ‫اعشاری‬ ‫و‬ ‫صحيح‬ ‫قسمت‬Cast.‫کرد‬ ‫تعيين‬ ‫را‬ ‫آنها‬ ‫توان‬ ‫مي‬
 Float:
The FLOAT data type holds a 64-bit number with range of values between +-1.7E–308 and
+- 1.7E+308.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
String Data types:
The following data types are collectively known as string data types:
 BIT data type:
The BIT data type holds a variable length string of binary digits. It is commonly used to represent
arbitrary binary data that does not contain an exact number of bytes. A bit string literal consists of the
letter B, followed by a string of binary digits enclosed in single quotation marks.
Example:
B'0100101001'
 BLOB data type:
The BLOB data type holds a variable length string of 8-bit bytes. It is commonly used to represent
arbitrary binary data. A BLOB literal consists of the letter X, followed by a string of hexadecimal digits
enclosed in single quotation marks.
Example:
X'0123456789ABCDEF'
 CHARACTER data type:
The character data type holds a variable length string of Unicode characters. A character string literal
consists of any number of characters in single quotation marks.
Example:
SET X = 'hamid';
Note: If you want to include a single quotation mark within a character string literal, use another single
quotation mark as an escape character.
Example:
SET X='he''was''' puts the value he'was' into X.
https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak05190_.htm
STRING Operators and Functions:
CONCAT STRINGS WITH || Operator : A single string operator, concatenation, is supported in ESQL. The result
is the concatenation of the two operands. You can concatenate string values (CHARACTER, BIT, and BLOB). If
either operand is NULL, the result is NULL.
‫اپراتور‬ ‫از‬ ‫يکديگر‬ ‫به‬ ‫رشته‬ ‫دو‬ ‫اتصال‬ ‫برای‬||‫تابع‬ ‫همانند‬ .‫ميکنيم‬ ‫استفاده‬Concat‫در‬SQL.‫باشد‬ ‫مي‬
LENGTH:
The LENGTH function is used for string manipulation on all string data types (BIT, BLOB, and CHARACTER) and
returns an integer value giving the number of singletons in source_string.
It If the source_string is NULL, the result is the NULL value. The term singleton refers to a single part (BIT, BYTE,
or CHARACTER) within a string of that type.
Example:
LENGTH('Hello World!'); // returns 12.
LENGTH(''); // returns 0.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
CONTAINS: The CONTAINS function searches a text search index using criteria that are specified in a search
argument and returns a result about whether or not a match was found.
The parameter strings for both SourceExpression and SearchExpression can be of the CHARACTER, BLOB, or BIT
data type, but must be of the same data type. If any parameter is NULL, the result is NULL.
.‫شود‬ ‫مي‬ ‫استفاده‬ ‫ديگر‬ ‫رشته‬ ‫يک‬ ‫درون‬ ‫رشته‬ ‫يک‬ ‫کردن‬ ‫پيدا‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬
Examples:
CONTAINS('Hello World!', 'ello'); // returns TRUE.
CONTAINS('Hello World!', 'daisy'); // returns FALSE
POSITION:
POSITION returns an integer giving the position of one string (SearchExpression) in a second string
(SourceExpression). A position of one corresponds to the first character of the source string.
If present, the FROM clause gives a position within the search string at which the search commences. In the
absence of a FROM clause, the source string is searched from the beginning.
If present, the REPEAT clause gives a repeat count, returning the position returned to be that of the nth
occurrence of the search string within the source string. If the repeat count is negative, the source string is
searched from the end.
In the absence of a REPEAT clause, a repeat count of +1 is assumed; that is, the position of the first occurrence,
searching from the beginning is returned. If the search string has a length of zero, the result is one.
If the search string cannot be found, the result is zero: if the FROM clause is present, this applies only to the
section of the source string being searched; if the REPEAT clause is present this applies only if there are
insufficient occurrences of the string.
If any parameter is NULL, the result is NULL.
The search and source strings can be of the CHARACTER, BLOB, or BIT data types but they must be of the same
type.
‫موقعيت‬ ‫کردن‬ ‫پيدا‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬)‫(ايندکس‬‫ر‬ ‫در‬ ‫رشته‬ ‫يک‬‫برگردانده‬ ‫تطابق‬ ‫اولين‬ ‫ايندکس‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫ديگر‬ ‫شته‬
‫کلمه‬ .‫شود‬ ‫مي‬FROM‫مي‬ ‫مشخص‬ ‫را‬ ‫جستجو‬ ‫شروع‬ ‫نقطه‬‫کلمه‬ ‫اگر‬ ‫کند‬FROM‫رشته‬ ‫ابتدای‬ ‫از‬ ،‫باشد‬ ‫نشده‬ ‫استفاده‬
.‫شود‬ ‫مي‬ ‫شروع‬ ‫جستجو‬
‫کلمه‬REPEAT.‫کند‬ ‫مي‬ ‫مشخص‬ ‫را‬ ‫جستجو‬ ‫تکرار‬ ‫دفعات‬ ‫تعداد‬‫مثال‬REPEAT 2‫که‬ ‫است‬ ‫اين‬ ‫معني‬ ‫به‬‫ايندکس‬ ‫اولين‬
.‫برگرداند‬ ‫را‬ ‫دوم‬ ‫شده‬ ‫پيدا‬ ‫ايندکس‬ ‫و‬ ‫کند‬ ‫رد‬ ‫را‬ ‫شده‬ ‫پيدا‬
‫انواع‬ ‫از‬ ‫هريک‬ ‫توانند‬ ‫مي‬ ‫جستجو‬ ‫عبارات‬String( ‫يعني‬CHARACTER, BLOB, or BIT‫دو‬ ‫هرد‬ ‫بايد‬ ‫اما‬ ،‫باشند‬ )
.‫باشد‬ ‫يکي‬ ‫نوعشان‬ ‫قسمت‬
Example:
POSITION('Village' IN 'Hursley Village'); // returns 9
POSITION('Town' IN 'Hursley Village'); // returns 0
POSITION ('B' IN 'ABCABCABCABCABC'); // returns 2
POSITION ('D' IN 'ABCABCABCABCABC'); // returns 0
POSITION ('A' IN 'ABCABCABCABCABC' FROM 4); // returns 4
POSITION ('C' IN 'ABCABCABCABCABC' FROM 2); // returns 3
POSITION ('B' IN 'ABCABCABCABCABC' REPEAT 2); // returns 5
POSITION ('C' IN 'ABCABCABCABCABC' REPEAT 4); // returns 12
POSITION ('A' IN 'ABCABCABCABCABC' FROM 4 REPEAT 2); // returns 7
POSITION ('AB' IN 'ABCABCABCABCABC' FROM 2 REPEAT 3); // returns 10
POSITION ('A' IN 'ABCABCABCABCABC' REPEAT -2); // returns 10
POSITION ('BC' IN 'ABCABCABCABCABC' FROM 2 REPEAT -3); // returns 5
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
OVERLAY:
OVERLAY is a string manipulation function that manipulates all string data types (BIT, BLOB, and CHARACTER)
and replaces part of a string with a substring.
OVERLAY returns a new string of the same type as the source and is identical to source_string, except that a
given substring in the string, starting from the specified numeric position and of the given length, has been
replaced by source_string2. When the length of the substring is zero, nothing is replaced. If any parameter is
NULL, the result is NULL. If string_length is not specified, it is assumed to be equal to LENGTH(source_string2).
‫چيزی‬ ‫هيچ‬ ، ‫باشد‬ ‫خالي‬ ‫مجموعه‬ ‫زير‬ ‫رشته‬ ‫اگر‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫ديگر‬ ‫رشته‬ ‫يک‬ ‫درون‬ ‫رشته‬ ‫يک‬ ‫دادن‬ ‫قرار‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬
‫پارامترها‬ ‫از‬ ‫هريک‬ ‫اگر‬ .‫شود‬ ‫نمي‬ ‫اضافه‬ ‫اصلي‬ ‫رشته‬ ‫به‬Null‫نيز‬ ‫خروجي‬ ‫باشد‬Null.‫بود‬ ‫خواهد‬
Example:
OVERLAY ('ABCDEFGHIJ' PLACING '1234' FROM 4 FOR 3) // returns the string 'ABC1234GHIJ'
ENDSWITH:
ENDSWITH returns TRUE if SourceExpression ends with SearchExpression, otherwise it returns FALSE.
The parameter strings for both SearchExpression and SourceExpression can be of the CHARACTER, BLOB, or BIT
data type, but must be of the same data type.
If any parameter is NULL, the result is NULL.
‫تابع‬ ‫برگشتي‬ ‫مقدار‬ ،‫برسد‬ ‫پايان‬ ‫به‬ ‫جستجو‬ ‫مورد‬ ‫رشته‬ ‫با‬ ‫نظر‬ ‫مورد‬ ‫رشته‬ ‫اگر‬ ‫تابع‬ ‫اين‬ ‫در‬true‫اي‬ ‫غير‬ ‫در‬ ‫و‬ ‫بود‬ ‫خواهد‬‫نصورت‬
‫مقدار‬false.‫شود‬ ‫مي‬ ‫برگردانده‬
Examples:
ENDSWITH('Hello World!', 'World!'); // returns TRUE.
ENDSWITH('Hello World!', 'World'); // returns FALSE.
STARTSWITH:
STARTSWITH is a string manipulation function that manipulates all string data types (BIT, BLOB, and
CHARACTER), and returns a Boolean value to indicate whether one string begins with another. STARTSWITH
returns TRUE if SourceExpression begins with SearchExpression, otherwise it returns FALSE.
The parameter strings for both SearchExpression and SourceExpression can be of the CHARACTER, BLOB, or BIT
data type, but must be of the same data type.
If any parameter is NULL, the result is NULL.
Examples:
STARTSWITH('Hello World!', 'Hello'); // returns TRUE.
STARTSWITH('Hello World!', 'World'); // returns FALSE.
REPLICATE:
REPLICATE is a string manipulation function that manipulates all data types (BIT, BLOB, and CHARACTER) and
returns a string made up of multiple copies of a supplied string. If the count is negative or zero, a zero length
string is returned. If either parameter is NULL, the result is NULL.
‫ک‬ ‫کپي‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬‫اس‬ ‫رشته‬ ‫از‬ ‫مقداری‬ ‫يک‬ ‫چندباره‬ ‫ردن‬‫ش‬ ‫مي‬ ‫تفاده‬‫و‬.‫د‬
Examples:
REPLICATE('0', 4) // returns '0000'
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
SUBSTRING:
Extracts characters from a string to create another string and manipulates all string data types (BIT, BLOB, and
CHARACTER)
Syntax:
SUBSTRING(<SourceExpression> FROM <StartPosition> BEFORE <BeforeExpression> AFTER <AfterExpression>
FOR <StringLength>);
‫کلمه‬ ‫با‬ ‫همراه‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫شده‬ ‫داده‬ ‫رشته‬ ‫از‬ ‫مجموعه‬ ‫زير‬ ‫يک‬ ‫گرفتن‬ ‫برا‬ ‫تابع‬ ‫اين‬ ‫از‬FROM‫شروع‬ ‫ايندکس‬‫زير‬ ‫رشته‬
‫کلمات‬ ‫با‬ ‫همراه‬ ‫و‬ ‫شود‬ ‫مي‬ ‫مشخص‬ ‫مجموعه‬BEFORE‫و‬AFTER‫خواهد‬ ‫گرفته‬ ‫کمک‬ ‫آن‬ ‫از‬ ‫شروع‬ ‫نقطه‬ ‫برای‬ ‫که‬ ‫عبارتي‬
‫کلمه‬ .‫آيد‬ ‫مي‬ ‫شد‬FOR‫نيز‬‫برای‬‫بکا‬ ‫شوند‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫خروجي‬ ‫برای‬ ‫بايد‬ ‫که‬ ‫کاراکترهايي‬ ‫تعداد‬ ‫کردن‬ ‫مشخص‬.‫رود‬ ‫مي‬ ‫ر‬
Examples:
SUBSTRING('Hello World!' FROM 7 FOR 4) // returns 'Worl'.
SUBSTRING('Hello World!' BEFORE 'World'); // returns 'Hello '.
SUBSTRING('Hello World!' BEFORE 'World' FOR 3); // returns 'lo '.
SUBSTRING('Hello World!' BEFORE 'e'); // returns 'H'.
SUBSTRING('Hello World!' AFTER 'World'); // returns '!'.
SUBSTRING('Hello World!' AFTER 'W' FOR 2); // returns 'or'.
SUBSTRING('Hello World!' AFTER 'P'); // returns ''.
LOWER and LCASE:
The LOWER and LCASE functions are equivalent, and manipulate CHARACTER string data; they both return a new
character string, which is identical to source_string, except that all uppercase letters are replaced with the
corresponding lowercase letters.
.‫دارند‬ ‫يکساني‬ ‫عملکذد‬ ‫آنها‬ ‫دوی‬ ‫هر‬ .‫کرد‬ ‫استفاده‬ ‫تابع‬ ‫دو‬ ‫اين‬ ‫از‬ ‫توان‬ ‫مي‬ ‫کوچ‬ ‫حروف‬ ‫به‬ ‫رشته‬ ‫يک‬ ‫کاراکترهای‬ ‫تبديل‬ ‫برای‬
Example:
LOWER('Mr Smith') // returns 'mr smith'.
LOWER('22 Railway Cuttings') // returns '22 railway cuttings'.
LCASE('ABCD') // returns 'abcd'.
UPPER and UCASE:
UPPER and UCASE are equivalent string manipulation functions that manipulate CHARACTER string data and
convert lowercase characters in a string to uppercase. UPPER and UCASE both return a new character string,
which is identical to source_string, except that all lowercase letters are replaced with the corresponding
uppercase letters.
Example:
UPPER('ABCD') // returns 'ABCD'.
UCASE('abc123') // returns 'ABC123'.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
LEFT:
LEFT is a string manipulation function that returns a string consisting of the source string truncated to the LEFT
given by the length expression.The source string can be of the CHARACTER, BLOB or BIT data type and the length
must be of type INTEGER. The truncation discards the final characters of the source_string
The result is of the same type as the source string. If the length is negative or zero, a zero length string is
returned. If either parameter is NULL, the result is NULL
.‫کند‬ ‫مي‬ ‫چاپ‬ ‫خروجي‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫برداشته‬ ‫شده‬ ‫اعالن‬ ‫تعداد‬ ‫به‬ ‫رشته‬ ‫چپ‬ ‫سمت‬ ‫از‬ ‫تابع‬ ‫اين‬
Example:
LEFT('ABCD',3); // returns 'ABC'.
RIGHT:
RIGHT returns a string consisting of the source string truncated to the length given by the length expression. The
truncation discards the initial characters of the source string.
The source string can be of the CHARACTER, BLOB, or BIT data type and the length must be of type INTEGER.
If the length is negative or zero, a zero length string is returned. If either parameter is NULL, the result is NULL
‫سمت‬ ‫از‬ ‫تابع‬ ‫اين‬‫راست‬.‫کند‬ ‫مي‬ ‫چاپ‬ ‫خروجي‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫برداشته‬ ‫شده‬ ‫اعالن‬ ‫تعداد‬ ‫به‬ ‫رشته‬
Example:
RIGHT('w3resource',6); // returns 'source'.
SPACE:
SPACE returns a character string that consists of the number of blank spaces that are given by
NumericExpression. The parameter must be of type INTEGER; the result is of type CHARACTER.
Example:
SPACE(10);
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
REPLACE:
REPLACE returns a string consisting of the source string, with each occurrence of the search string replaced by
the replace string. The parameter strings can be of the CHARACTER, BLOB, or BIT data types, but all three must
be of the same type. If any parameter is NULL, the result is NULL. If you do not specify the replace string
expression, the replace string uses the default value of an empty string, and the behavior of the function is to
delete all occurrences of the search string from the result.
‫در‬ ‫ديگر‬ ‫ای‬ ‫رشته‬ ‫با‬ ‫را‬ ‫رشته‬ ‫يک‬ ‫تابع‬ ‫اين‬‫شده‬ ‫داده‬ ‫عبارت‬.‫کند‬ ‫مي‬ ‫جايگزين‬ ‫اصلي‬
Example:
REPLACE('ABCDABCDABCDA', 'A', 'AA') // returns 'AABCDAABCDAABCDAA'
TRIM:
TRIM returns a new string of the same type as source_string, in which the leading, trailing, or both
leading and trailing singletons have been removed. The term singleton refers to a single part (BIT,
BYTE, or CHARACTER) within a string of that type.
Example:
TRIM(' a ') // returns 'a'.
TRIM(LEADING FROM ' a ') // returns 'a '.
TRIM(TRAILING FROM ' a ') // returns ' a'.
LTRIM:
LTRIM is a string manipulation function, used for manipulating all data types (BIT, BLOB, and
CHARACTER), that returns a character string value of the same data type and content as source_string,
but with any leading default singletons removed.
‫فض‬ ‫حذف‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬‫ا‬‫سمت‬ ‫بعد‬ ‫خالي‬ ‫ی‬‫چپ‬.‫کنيم‬ ‫مي‬ ‫استفاده‬ ‫رشته‬ ‫يک‬
Example:
LTRIM(' a ') // returns 'a '.
NOTE: The LTRIM function is equivalent to TRIM(LEADING FROM source_string).
RTRIM:
RTRIM returns a string value of the same data type and content as source_string but with any trailing
default singletons removed. The term singleton refers to a single part (BIT, BLOB, or CHARACTER)
within a string of that type.
‫برا‬ ‫تابع‬ ‫اين‬ ‫از‬‫فض‬ ‫حذف‬ ‫ی‬‫ا‬.‫کنيم‬ ‫مي‬ ‫استفاده‬ ‫رشته‬ ‫يک‬ ‫راست‬ ‫سمت‬ ‫بعد‬ ‫خالي‬ ‫ی‬
Example:
RTRIM(' a ') // returns ' a'.
NOTE: The RTRIM function is equivalent to TRIM(TRAILING FROM source_string).
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Transforming from one data type to another:
You can use the CAST function to transform the data type of one value to match the data type of the
other. For example, you can use the CAST function when you process generic XML messages. All
fields in an XML message have character values, so if you want to perform arithmetic calculations or
datetime comparisons, for example, you must convert the string value of the field into a value of the
appropriate type using CAST.
Example:
1) IF CAST(Body.Invoice.InvoiceDate AS DATE) = CURRENT_DATE THEN
DO SOMETHING;
‫مقدار‬ ‫باال‬ ‫دستور‬InvoiceDate‫نوع‬ ‫به‬ ‫را‬DATE.‫ميکند‬ ‫تبديل‬
2) DECLARE I INTEGER 1;
DECLARE C CHARACTER;
-- The following statement generates an error
SET C = I;
‫دستور‬C = I‫متغيرهای‬ ‫اينکه‬ ‫علت‬ ‫به‬I‫و‬C،‫هستند‬ ‫متفاوتي‬ ‫انواع‬ ‫از‬‫نوشتن‬ ‫صحيح‬ ‫روش‬ ،‫ميکند‬ ‫توليد‬ ‫خطا‬‫باال‬ ‫دستور‬
:‫باشد‬ ‫مي‬ ‫زير‬ ‫بصورت‬
-- The following statement is valid
SET C = CAST(I AS CHARACTER);
‫خروجي‬ ‫به‬ ‫دادن‬ ‫فرمت‬ ‫برای‬CAST:‫کنيم‬ ‫مي‬ ‫عمل‬ ‫زير‬ ‫بصورت‬
3) DECLARE now CHARACTER;
SET now = CAST(CURRENT_TIMESTAMP AS CHARACTER FORMAT 'yyyyMMdd-HHmmss');
4) DECLARE source CHARACTER '16:18:30';
DECLARE target TIME;
DECLARE pattern CHARACTER 'hh:mm:ss';
SET target = CAST(source AS TIME FORMAT pattern);
‫اعمال‬ ‫برای‬CodedCharSetId(CCSID)‫دستور‬ ‫به‬CAST:‫ميکنيم‬ ‫عمل‬ ‫زير‬ ‫صورت‬ ‫به‬
5) SET target = CAST(source AS TIME FORMAT pattern CCSID 1256);
‫نود‬ ‫اگر‬‫ف‬ ‫خروجي‬‫ل‬‫و‬MQ،‫باشد‬ ‫مي‬‫تغيير‬ ‫برای‬encoding‫و‬CCSID:‫کنيم‬ ‫مي‬ ‫عمل‬ ‫زير‬ ‫بصورت‬ ‫آن‬
6) SET OutputRoot.MQMD.CodedCharSetId = 500;
SET OutputRoot.MQMD.Encoding = 785;
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
DateTime Data types:
 DATE data type:
The DATE data type holds a Gregorian calendar date (year, month, and day). The format of
a DATE literal is the word DATE followed by a space, followed by a date in single quotation marks in the
form 'yyyy-MM-dd'.
Example:
DECLARE MyDate DATE;
SET MyDate = DATE '2000-02-29';
 TIME data type
The TIME data type holds a time of day in hours, minutes, seconds, and fractions of a second.
The format of a TIME literal is the word TIME followed by a space, followed by a time in single quotation
marks in the form 'hh:mm:ss.ffffff'.
Example:
DECLARE MyTime TIME;
SET MyTime = TIME '11:49:23.656';
Each of the hour, minute, and second fields in a TIME literal must always be two digits; the optional
fractional seconds field can be up to 6 digits in length.
 TIMESTAMP data type
The TIMESTAMP data type holds a DATE and a TIME in years, months, days, hours, minutes, seconds,
and fractions of a second.
The format of a TIMESTAMP literal is the word TIMESTAMP followed by a space, followed by a time
stamp in single quotation marks in the form 'yyyy-MM-dd HH:mm:ss.SSSSSS'.
Example:
DECLARE MyTimeStamp TIMESTAMP;
SET MyTimeStamp = TIMESTAMP '1999-12-31 23:59:59';
The year field must always be four digits in length. The month, day, hour, and minute fields must always
be two digits. (Do not omit leading zeros.) The optional fractional seconds field can be 0 - 6 digits long.
NULL Data types:
All ESQL data types (except REFERENCE) support the concept of the null value. A value of null means that
the value is unknown, undefined, or uninitialized. Null values can arise when you refer to message fields that do
not exist, access database columns for which no data has been supplied, or use the keyword NULL, which
supplies a null literal value.
Example:
SET OutputRoot.XMLNS.Msg.Data.Name = NULL; -- this deletes the field
‫مقدار‬ ‫صحيح‬ ‫روش‬Null:‫متغير‬ ‫يک‬ ‫به‬ ‫دادن‬
SET OutputRoot.XMLNS.Msg.Data.Name VALUE = NULL;
-- this assigns a NULL value to a field without deleting it
REFERENCE data type:
The REFERENCE data type holds the location of a field in a message. It cannot hold the location
of a constant, a database table, a database column, or another reference.
Note:
If you use a REFERENCE, you are able to modify any element, even if the element is part
of an input tree.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Variables: The names of ESQL variables are case sensitive.The simplest way to guarantee that you are using the
correct case is always to define variables using uppercase names. You can assign an initial value to the variable on the
DECLARE statement. If an initial value is not specified, scalar variables are initialized with the special value NULL, and ROW
variables are initialized to an empty state. Subsequently, you can change the variable's value using the SET statement.
Variable's scope: In the broker environment, the scope of variables is typically limited to the individual node.
‫محيط‬ ‫در‬IIB‫متغير‬ ‫يک‬ ‫محدوده‬‫نودی‬ ‫همان‬ ‫به‬ ‫محدود‬‫شده‬ ‫تعريف‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬.
Variable's lifetime: is a measure of the time for which it retains its value. In the broker environment, the lifetime
of a variable varies but is typically restricted to the life of a thread within a node.
‫محيط‬ ‫در‬IIB‫عمر‬ ‫طول‬‫م‬‫تغير‬‫کلي‬ ‫حالت‬ ‫در‬ ‫اما‬ ،‫است‬ ‫مختلف‬‫به‬ ‫محدود‬‫شده‬ ‫تعريف‬ ‫متغير‬ ‫نود‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬ ‫نودی‬ ‫ترد‬.
Types of variables:
‫در‬IIB:‫داريم‬ ‫متغير‬ ‫نوع‬ ‫سه‬
1) Normal 2) External 3) Shared
 Normal variables:
Normal variables variables have a lifetime of just one message passing through a node. They are visible to that
message only. To define a normal variables, omit both the EXTERNAL and SHARED keywords.
‫باشد‬ ‫مي‬ ‫نود‬ ‫آن‬ ‫از‬ ‫پيغام‬ ‫يک‬ ‫عبور‬ ‫اندازه‬ ‫به‬ ‫فقط‬ ‫نرمال‬ ‫متغيرهای‬ ‫عمر‬ ‫طول‬‫استفاده‬ ‫قابل‬ ‫نود‬ ‫همان‬ ‫محدوده‬ ‫در‬ ‫فقط‬ ‫نرمال‬ ‫متغيرهای‬ .
‫تعري‬ ‫برای‬ ‫و‬ ‫هستند‬‫ح‬ ‫به‬ ‫را‬ ‫متغير‬ ‫يک‬ ‫است‬ ‫کافي‬ ‫آنها‬ ‫ف‬‫کنيم‬ ‫تعريف‬ ‫معمولي‬ ‫الت‬:
Example:
1) DECLARE var1 INTEGER 42;
2) DECLARE var2 INTEGER;
SET var2 = 38;
3) DECLARE mycolor CHARACTER 'blue';
 External variables:
External variables (defined with the EXTERNAL keyword) are also known as user-defined properties. They exist
for the entire lifetime of a message flow and are visible to all messages passing through the flow. You can
define external variables only at the module and schema level. You can modify their initial values (optionally set
by the DECLARE statement) at design time, using the Message Flow editor, or at deployment time, using the
Broker Archive editor.
1. The SHARED keyword is not valid within a function or procedure.
2. You cannot specify SHARED with a DataType of REFERENCE TO. To store a message tree in a shared
variable, use the ROW data type.
3. EXTERNAL variables are implicitly constant.
4. When you use the NAMESPACE and NAME clauses, their values are implicitly constant and of type
CHARACTER.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫عنوان‬ ‫به‬ ‫که‬ ‫خارجي‬ ‫متغيرهای‬user-defined properties‫برای‬ ‫و‬ ‫دارند‬ ‫وجود‬ ‫فلو‬ ‫عمر‬ ‫طول‬ ‫کل‬ ‫برای‬ ،‫شوند‬ ‫مي‬ ‫شناخته‬ ‫نيز‬
.‫هستند‬ ‫استفاده‬ ‫قابل‬ ‫پيامها‬ ‫همه‬.‫شوند‬ ‫مي‬ ‫تعريف‬ ‫اسکيما‬ ‫يا‬ ‫ماژول‬ ‫سطح‬ ‫در‬ ‫خارجي‬ ‫متغيرهای‬‫آنها‬ ‫به‬ ‫دادن‬ ‫اوليه‬ ‫مقدار‬ ‫برای‬
‫دستور‬ ‫از‬DECLARE‫متغير‬‫در‬‫زمان‬design‫زمان‬ ‫در‬ ‫يا‬ ‫فلو‬Deploy‫اديتور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫برنامه‬broker Archive
‫را‬ ‫اوليه‬ ‫مقدار‬‫مي‬.‫دهيم‬‫های‬ ‫متغير‬External‫همانند‬ ‫حقيقت‬ ‫در‬Constant‫ها‬.‫هستند‬
Example 1:
DECLARE mycolor EXTERNAL CHARACTER 'blue';
Example 2:
DECLARE TODAYSCOLOR EXTERNAL CHARACTER;
SET COLOR = TODAYSCOLOR;
 Shared variables:
Shared variables can be used to implement an in-memory cache in the message flow. Shared variables have a
long lifetime and are visible to multiple messages passing through a flow. Use SHARED to define a shared
variable. Shared variables are private to the flow (if declared within a schema) or node (if declared within a
module), but are shared between instances of the flow (threads). No type of variable is visible beyond the flow
level; for example, you cannot share variables across integration servers. Shared variables are initialized when the
first message passes through the flow or node after each broker startup.
‫عنوان‬ ‫به‬ ‫استفاده‬ ‫برای‬ ‫اشتراکي‬ ‫متغيرهای‬Cache‫م‬ ‫در‬‫اولين‬ ، ‫برنامه‬ ‫استارت‬ ‫از‬ ‫بعد‬ ‫که‬ ‫هنگامي‬ ‫آنها‬ .‫دارند‬ ‫کاربرد‬ ‫فلو‬ ‫سيج‬
‫کند‬ ‫مي‬ ‫عبور‬ ‫فلو‬ ‫از‬ ‫مسيج‬،.‫شوند‬ ‫مي‬ ‫دهي‬ ‫مقدار‬‫سطح‬ ‫در‬ ‫اشتراکي‬ ‫متغير‬ ‫يک‬ ‫اگر‬schema،‫شود‬ ‫تعريف‬‫آ‬‫برای‬ ‫نگاه‬‫يک‬ ‫فلو‬
‫متغير‬private‫سطح‬ ‫در‬ ‫اگر‬ ‫و‬ ‫ايد‬ ‫مي‬ ‫حساب‬ ‫به‬module‫شودف‬ ‫تعريف‬‫آن‬‫برای‬ ‫گاه‬Node‫متغير‬ ‫يک‬private‫مي‬ ‫حساب‬ ‫به‬
‫بين‬ ‫اما‬ ،‫آيد‬instance(‫فلو‬ ‫يک‬ ‫های‬‫ها‬ ‫ترد‬ ‫يعني‬).‫هستند‬ ‫مشترک‬
Example 1:
DECLARE RequestCounter SHARED DECIMAL 0;
Example 2:
‫متغير‬ ‫زير‬ ‫مثال‬ ‫در‬CacheQueueTable‫ب‬ ‫در‬ ‫که‬‫يرون‬‫شده‬ ‫تعريف‬ ‫ماژول‬،،‫شوند‬ ‫مي‬ ‫تعريف‬ ‫که‬ ‫فلو‬ ‫از‬ ‫هايي‬ ‫نمونه‬ ‫بوسيله‬
.‫است‬ ‫استفاده‬ ‫قابل‬
-- a shared variable that can be used by instances of a flow
DECLARE CacheQueueTable SHARED ROW;
CREATE COMPUTE MODULE Routing_using_database_and_memory_cache_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
…….
END;
END MODULE;
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Accessing elements With ESQL:
Input Messages:
If you are referring to the input message tree to interrogate its content in a Compute node, use correlation name
InputRoot followed by the path to the element to which you are referring.
‫داريد‬ ‫قصد‬ ‫اگر‬‫در‬ComputeNode‫نام‬ ‫از‬ ‫کنيد‬ ‫پيدا‬ ‫دسترسي‬ ‫ورودی‬ ‫های‬ ‫داده‬ ‫به‬InputRoot‫ديتا‬ ‫درخت‬ ‫به‬ ‫دسترسي‬ ‫برای‬
‫استفاده‬.‫کنيد‬:‫است‬ ‫شده‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫زير‬ ‫ساختار‬ ‫با‬ ‫ورودی‬ ‫ديتای‬ ‫که‬ ‫است‬ ‫اين‬ ‫بر‬ ‫فرض‬ ‫زير‬ ‫مثالهای‬ ‫در‬
Example:
1) InputRoot.XMLNS.Data.Invoice
‫فيلد‬ ‫به‬ ‫فوق‬ ‫دستور‬Invoice‫شاخه‬ ‫زير‬ ‫از‬Data‫شاخه‬ ‫زير‬ ‫در‬ ‫که‬XMLNS‫شاخه‬ ‫در‬ ‫نيز‬ ‫آن‬ ‫و‬InputRoot.‫کند‬ ‫مي‬ ‫اشاره‬ ‫دارد‬ ‫قرار‬
2) InputRoot.XMLNS."Customer Data".Invoice
‫شاخه‬ ‫سر‬ ‫چون‬ ‫فوق‬ ‫دستور‬ ‫در‬Invoice‫فيلد‬Customer Data‫عبارت‬ ‫و‬ ‫شده‬ ‫فرض‬Customer Data‫به‬ ‫اشاره‬ ‫برای‬ ،‫باشد‬ ‫مي‬ ‫فاصله‬ ‫دارای‬‫آن‬
‫از‬ ‫بايد‬".‫کرد‬ ‫استفاده‬
3) InputRoot.XMLNS.*.Invoice.Value
‫اي‬ ‫در‬‫ش‬ ‫سر‬ ‫که‬ ‫است‬ ‫اين‬ ‫معني‬ ‫به‬ * ‫مثال‬ ‫ن‬‫اخه‬invoice‫ديگر‬ ‫عبارت‬ ‫به‬ .‫نيست‬ ‫مهم‬Invoice‫از‬ ‫ای‬ ‫شاخه‬ ‫زير‬ ‫هر‬ ‫در‬XMLNS،‫باشد‬ ‫که‬‫شده‬ ‫پيدا‬
.‫شود‬ ‫مي‬ ‫برگردانده‬ ‫و‬
4) InputRoot.XMLNS."Customer Data".{'Customer-' || CurrentCustomer}.Invoice
‫فوق‬ ‫مثال‬ ‫در‬Invoice‫های‬ ‫شاخه‬ ‫سر‬ ‫از‬ ‫کردام‬ ‫هر‬ ‫در‬Customer‫يا‬CurrentCustomer‫باشد‬ ‫که‬.‫شود‬ ‫مي‬ ‫برگردانده‬
5) InputRoot.XMLNS.Data.Invoice[1]
InputRoot.XMLNS.Data.Invoice
‫فيلد‬ ‫فرضا‬ ‫اگر‬ ‫مثال‬ ‫اين‬ ‫در‬Invoice‫فيلد‬ ‫يعني‬ ،‫باشد‬ ‫مورد‬ ‫يک‬ ‫از‬ ‫بيش‬Data‫فيلد‬ ‫يک‬ ‫از‬ ‫بيش‬Invoice‫داشته‬ ‫خود‬ ‫مجموعه‬ ‫زير‬ ‫در‬‫مي‬ ‫باشد‬
‫بصورت‬ ‫آرايه‬ ‫همانند‬ ‫توان‬Index.‫کرد‬ ‫اشاره‬ ‫آن‬ ‫به‬‫د‬‫ايندکس‬ ‫به‬ ‫اگر‬ ‫حالت‬ ‫اين‬ ‫ر‬invoice‫اول‬ ‫خانه‬ ‫همان‬ ‫به‬ ‫باز‬ ‫هم‬ ‫نکنيم‬ ‫اشاره‬،‫شود‬ ‫مي‬ ‫اشاره‬
.‫است‬ ‫اول‬ ‫دستور‬ ‫مثل‬ ‫هم‬ ‫دوم‬ ‫دستور‬ ‫خروجي‬ ‫يعني‬
:‫نکته‬‫های‬ ‫عالمت‬ ‫از‬ ‫استفاده‬ ‫با‬>)‫شود‬ ‫محاسبه‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫گذاری‬ ‫ايندکس‬ ‫(يعني‬‫و‬<)‫آخر‬ ‫به‬ ‫اول‬ ‫از‬ ‫گذاری‬ ‫(ايندکس‬‫ت‬ ‫مي‬‫وان‬‫به‬‫فيلد‬‫مو‬‫رد‬
‫نظر‬‫کرد‬ ‫اشاره‬ ‫زير‬ ‫شکل‬ ‫به‬‫کنيد‬ ‫فرض‬ ‫زير‬ ‫مثالهای‬ ‫در‬ ،4‫تا‬invoice‫داريم‬:
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
6) InputRoot.*[]
‫فوق‬ ‫مثال‬‫شاخه‬ ‫زير‬ ‫در‬ ‫موجود‬ ‫فرزندان‬ ‫تمام‬ ‫به‬InputRoot.‫کند‬ ‫مي‬ ‫اشاره‬
7) InputRoot.*[<]
‫فرزند‬ ‫آخرين‬ ‫به‬ ‫دستور‬ ‫اين‬InputRoot‫اينجا‬ ‫در‬ ‫که‬ ‫ميکند‬ ‫اشاره‬‫همان‬‫م‬ ‫ورودی‬ ‫پيام‬ ‫بدنه‬.‫شود‬ ‫ي‬
8) WHILE count < 32 DO
SET TOTAL = TOTAL + InputRoot.XMLNS.Data.Invoice[count].Amount;
SET COUNT = COUNT + 1
END WHILE;
‫حلقه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫مثال‬ ‫اين‬ ‫در‬While‫آيتم‬ ‫روی‬ ‫بر‬Invoice.‫ايم‬ ‫کرده‬ ‫ايجاد‬ ‫حلقه‬
Example:
DECLARE InputValue CHARACTER '';
SET InputValue = CAST (InputRoot.BLOB.BLOB AS CHARACTER CCSID 1256);
‫بصورت‬ ‫ورودی‬ ‫ديتای‬ ‫است‬ ‫اين‬ ‫بر‬ ‫فرض‬ ‫فوق‬ ‫مثال‬ ‫در‬BLOB‫دستور‬ ‫با‬ ‫و‬ ‫دريافت‬ ‫را‬ ‫آن‬ ‫فوق‬ ‫دستور‬ ‫که‬ ‫باشد‬ ‫مي‬CAST‫نوع‬ ‫به‬
STRING‫متغير‬ ‫در‬ ‫و‬ ‫تبديل‬InputValue‫قرا‬.‫شود‬ ‫مي‬ ‫داده‬ ‫ر‬
Output Messages:
If you are referring to the output message tree to set or modify its content in the Compute node, use correlation name
OutputRoot followed by the parser name
‫خروجي‬ ‫روی‬ ‫بر‬ ‫را‬ ‫ديتايي‬ ‫داريد‬ ‫قصد‬ ‫اگر‬ ‫همچنين‬ComputeNode‫ده‬ ‫قرار‬‫نام‬ ‫از‬ ،‫يد‬OutputRoot.‫کنيد‬ ‫استفاده‬
Example:
SET OutputRoot.BLOB.BLOB = CAST( 'Hi IIB Developer' AS BLOB CCSID 1256 );
‫عبارت‬ ‫دستور‬ ‫اين‬'Hi IIB Developer'‫نوع‬ ‫به‬ ‫تبديل‬ ‫را‬BLOB.‫دهد‬ ‫مي‬ ‫قرار‬ ‫خروجي‬ ‫در‬ ‫و‬ ‫نموده‬
‫درختي‬ ‫بصورت‬ ‫ديتا‬ ‫ساختار‬ ‫اينکه‬ ‫بر‬ ‫فرض‬ ‫با‬ : ‫مثال‬‫شکل‬ ‫به‬: ‫باشد‬ ‫مي‬ ‫زير‬
IF InputRoot.XMLNS.Invoice.InvoiceNo IS NULL THEN
DO;
-- more ESQL --
END IF;
SET OutputRoot.XMLNS.Invoice.Customer.FirstName = UPPER(InputRoot.Invoice.Customer.FirstName);
SET OutputRoot.XMLNS.Invoice.InvoiceNo = InputRoot.Invoice.InvoiceNo + 1000;
SET OutputRoot.MRM.Invoice.TillNumber = 26;
SET OutputRoot.MRM.BooleanElement1 = true;
‫باال‬ ‫مثال‬ ‫در‬‫اگ‬:‫داد‬ ‫انجام‬ ‫را‬ ‫کار‬ ‫اين‬ ‫توان‬ ‫مي‬ ‫زير‬ ‫دستورات‬ ‫با‬ ‫دهيم‬ ‫تغيير‬ ‫را‬ ‫خروجي‬ ‫مقدار‬ ‫بخواهيم‬ ‫ر‬
0) SET FullName = UPPER(FirstName) || ' ' || UPPER(LastName);
1) SET OutputRoot = InputRoot;
2) SET OutputRoot.XMLNSC.Invoice.Customer.FullName = FullName;
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Accessing the environment tree:
The environment tree has its own correlation name, Environment, and you must use this name in all ESQL statements
that refer to, or set, the content of this tree. The environment tree is always created when the logical tree is created for
an input message. However, the message flow neither populates it, nor uses its contents. You can use this tree for your
own purposes, for example, to pass information from one node to another. You can use the whole tree as a scratchpad
or working area.
Only one environment tree is present for the duration of the message flow. Any data updates, or additions, that you make
in one node are retained, and all of the nodes in the message flow have access to the latest copy of this tree. Even if the
message flows back through the message flow (for example, if an exception is thrown, or if the message is processed
through the second terminal of the FlowOrder node), the latest state is retained. (In contrast to the local environment
tree, which reverts to its previous state if the message flows back through the message flow.)
‫درخت‬Environment‫ايجاد‬ ‫هنگام‬( ‫ورودی‬ ‫منطقي‬ ‫درخت‬Input message‫ايجاد‬ )‫را‬ ‫خورد‬ ‫نظر‬ ‫مورد‬ ‫ديتای‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫و‬ ‫شود‬ ‫مي‬
‫طول‬ ‫در‬ ‫و‬ ‫دهيد‬ ‫قرار‬ ‫ان‬ ‫روی‬ ‫بر‬Flow.‫نماييد‬ ‫استفاده‬ ‫و‬ ‫کرده‬ ‫منتقل‬ ‫ديگر‬ ‫نود‬ ‫به‬ ‫نود‬ ‫يک‬ ‫از‬‫طوب‬ ‫در‬‫مس‬ ‫يک‬‫ي‬‫در‬ ‫يک‬ ‫فقط‬ ‫فلو‬ ‫ج‬‫خت‬
‫منطقي‬Enviroment‫اس‬ ‫و‬ ‫دسترسي‬ ‫قابل‬ ‫فول‬ ‫مسيج‬ ‫نودهای‬ ‫همه‬ ‫در‬ ‫دهيد‬ ‫انجام‬ ‫آن‬ ‫های‬ ‫داده‬ ‫در‬ ‫شما‬ ‫که‬ ‫تغييری‬ ‫هر‬ .‫شود‬ ‫مي‬ ‫ايجاد‬‫تفاده‬
‫مانند‬ ‫داليلي‬ ‫به‬ ‫فلو‬ ‫مسيج‬ ‫اگر‬ ‫حتي‬ ،‫باشد‬ ‫مي‬Exception‫آخرين‬ ،‫برگردد‬ ‫عقب‬ ‫به‬State‫منط‬ ‫درخت‬ ‫اما‬ .‫شود‬ ‫مي‬ ‫نگهداشته‬ ‫آن‬‫د‬ ‫قي‬‫يگری‬
‫نام‬ ‫به‬local environment.‫گردد‬ ‫مي‬ ‫بر‬ ‫قبلي‬ ‫مرحله‬ ‫به‬ ‫نيز‬ ‫آن‬ ‫وضعيت‬ ‫عقب‬ ‫به‬ ‫برگشت‬ ‫هنگام‬ ‫که‬ ‫دارد‬ ‫وجود‬
Example:
SET Environment.Variables.testVariable = 1;
SET Environment.Variables = ROW('granary' AS bread, 'reisling' AS wine, 'stilton' AS cheese);
SET Environment.Variables.Colors[] = LIST{'yellow', 'green', 'blue', 'red', 'black'};
SET Environment.Variables.Country[] = LIST{ROW('UK' AS name, 'pound' AS currency),
ROW('USA' AS name, 'dollar' AS currency)};
Accessing the local environment tree:
The local environment tree has its own correlation name, LocalEnvironment, and you must use this name in all ESQL
statements that refer to or set the content of this tree. The local environment tree is used by the broker, and you can
refer to and modify this information. You can also extend the tree to contain information that you create yourself. You
can create subtrees of this tree that you can use as a scratchpad or working area. The message flow sets up information
in two subtrees, Destination and WrittenDestination, below the LocalEnvironment root. You can refer to the content of
both of these subtrees, and you can write to the Destination tree to influence the way in which the message flow processes
your message. However, if you write to the Destination tree, follow the defined structure to ensure that the tree remains
valid.
‫درخت‬LocalEnvironment‫نما‬ ‫اصالح‬ ‫يا‬ ‫استفاده‬ ‫را‬ ‫درخت‬ ‫اين‬ ‫در‬ ‫موجود‬ ‫اطالعات‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫و‬ ‫شود‬ ‫مي‬ ‫استفاده‬ ‫برورکر‬ ‫توسط‬.‫ييد‬
‫ن‬ ‫را‬ ‫خودتان‬ ‫شده‬ ‫توليد‬ ‫اطالعات‬ ‫توانيد‬ ‫مي‬ ‫همچنين‬‫درخت‬ ‫زير‬ ‫در‬ .‫نماييد‬ ‫نگهداری‬ ‫آن‬ ‫در‬ ‫يز‬LocalEnvironment‫درخت‬ ‫زير‬ ‫دو‬‫ب‬‫ا‬
‫نامهای‬Destination‫و‬WrittenDestination.‫گيرند‬ ‫مي‬ ‫قرار‬‫اطالعا‬ ‫فقط‬ ‫و‬ ‫بخوانيد‬ ‫را‬ ‫درخت‬ ‫زير‬ ‫دو‬ ‫هر‬ ‫اطالعات‬ ‫توانيد‬ ‫ممي‬ ‫شما‬‫زير‬ ‫ت‬
‫درخت‬Destination.‫دهيد‬ ‫تغيير‬ ‫را‬‫درخت‬ ‫که‬ ‫خواهيد‬ ‫مي‬ ‫شما‬ ‫اگر‬LocalEnvironment‫نود‬ ‫خروجي‬ ‫در‬Compute‫شما‬ ،‫گيرد‬ ‫قرار‬
‫بايد‬‫خاصيت‬ ‫مقدار‬Compute mode‫شامل‬ ‫که‬ ‫دهيد‬ ‫تغيير‬ ‫مقداری‬ ‫به‬ ‫را‬ ‫ان‬LocalEnvironment‫مقدار‬ ‫مثال‬ .‫باشد‬ALL.
Example:
SET OutputLocalEnvironment.Destination.HTTP.RequestURL = newUrl;
SET OutputLocalEnvironment.Destination.SOAP.Request.Transport.HTTP.WebServiceURL = newUrl;
SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName = newQueue;
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Generating multiple output messages:
You can use the PROPAGATE statement to generate multiple output messages in the Compute node. The output messages
that you generate can have the same or different content. You can also direct output messages to any of the four alternate
output terminals of the Compute node, or to a Label node. by default the node clears the output message buffer and reclaims
the memory when the PROPAGATE statement completes, So you need to set Output again, after using propagate command or
use DELETE NONE.
‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬PROPAGATE‫مانند‬ ‫هايي‬ ‫نود‬ ‫برای‬ ‫توان‬ ‫مي‬Compute‫ا‬ ‫بيش‬ ‫که‬‫های‬ ‫خروجي‬ ‫برای‬ ،‫دارند‬ ‫خروجي‬ ‫يک‬ ‫ز‬
‫ارس‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫ديتای‬ ‫مختلف‬‫ا‬:‫کرد‬ ‫ل‬
Example:
SET OutputRoot = InputRoot;
PROPAGATE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1';
SET OutputRoot = InputRoot;
PROPAGATE TO LABEL 'ThirdCopy';
SELECT FROM Input Messages:
‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫ورودی‬ ‫درخت‬ ‫روی‬ ‫بر‬ ‫توان‬ ‫مي‬SELECT)‫(حلقه‬ ‫لوپ‬‫کرد‬ ‫استخراج‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫ديتای‬ ‫و‬ ‫زد‬:
Example:
DECLARE CurrentCustomer CHAR 'Smith';
SET OutputRoot.XMLNS.Invoice[] = ( SELECT X FROM InputRoot.XMLNS.Invoice[] AS X
WHERE X.Customer.LastName = CurrentCustomer );
‫برابر‬ ‫آنها‬ ‫خانوادگي‬ ‫نام‬ ‫که‬ ‫رکوردهايي‬ ‫همه‬ ‫باال‬ ‫مثال‬smith‫خرو‬ ‫در‬ ‫را‬ ‫باشد‬.‫نويسد‬ ‫مي‬ ‫جي‬
CARDINALITY function
The CARDINALITY function returns the number of elements in a list. A common use of this function is to
determine the number of fields in a list before iterating over them.
‫ليست‬ ‫يک‬ ‫در‬ ‫وجود‬ ‫عناصر‬ ‫تعداد‬ ‫آوردن‬ ‫بدست‬ ‫برای‬‫ا‬‫اي‬ ‫ز‬.‫شود‬ ‫مي‬ ‫استفاده‬ ‫تابع‬ ‫ن‬
Examples:
1) DECLARE CountF1 INT CARDINALITY(OutputRoot.XMLNS.Data.Source.F1[]);
‫مثال‬1)‫در‬ ‫موجود‬ ‫عناصر‬ ‫تعداد‬F1.‫دهد‬ ‫مي‬ ‫را‬
2) DECLARE CountF1F12 INT
CARDINALITY(SELECT F.* FROM OutputRoot.XMLNS.Data.Source.F1[] AS F
where F = 'F12');
‫مثال‬2‫از‬ ‫عناصری‬ ‫تعداد‬ )F1‫بابر‬ ‫آن‬ ‫مقدار‬ ‫که‬'F12'.‫دهد‬ ‫مي‬ ‫را‬ ‫باشد‬ ‫مي‬
3) Body.Invoice.Item[CARDINALITY(Body.Invoice.Item[]) - 2].Quantity
‫مثال‬3)‫کند‬ ‫مي‬ ‫اشاره‬ ‫آخر‬ ‫به‬ ‫مانده‬ ‫تا‬ ‫سه‬ ‫عنصر‬ ‫به‬.‫در‬ ‫ها‬ ‫ارايه‬ESQL.‫شوند‬ ‫مي‬ ‫شروع‬ ‫يک‬ ‫شمراه‬ ‫از‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Interaction with databases using ESQL:
Use ESQL statements and functions to read from, write to, and modify databases from your message flows. You can access
databases from Compute, Database, DatabaseInput, and Filter nodes. The same ESQL functions and procedures are
supported in all these nodes. Select Throw exception on database error and Treat warnings as errors, and
set Transaction to Automatic on each node that access a database, to provide maximum flexibility.
‫شما‬‫دستورات‬ ‫از‬ ‫استفاده‬ ‫با‬ESQL‫توانيد‬ ‫مي‬‫خو‬ ‫ديتابيس‬ ‫روی‬ ‫بر‬ ‫را‬ ‫اطالعات‬ ‫اصالح‬ ‫و‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫مانند‬ ‫عملياتي‬‫انجام‬ ‫د‬‫د‬.‫هيد‬‫شما‬
‫نودهای‬ ‫از‬ ‫توانيد‬ ‫مي‬Compute, Database, DatabaseInput, Filter.‫نماييد‬ ‫استفاده‬ ‫ديتابيس‬ ‫با‬ ‫کار‬ ‫برای‬‫ا‬ ‫برای‬‫ن‬‫در‬ ‫بيشتر‬ ‫عطاف‬‫با‬ ‫کار‬
‫گزينه‬ ‫توانيد‬ ‫مي‬ ‫ديتابيس‬Throw exception on database error‫يک‬ ‫خطا‬ ‫هر‬ ‫برای‬ ‫تا‬ ‫کنيد‬ ‫انتخاب‬ ‫را‬Exception‫همچنين‬ ،‫کند‬ ‫توليد‬
‫گزينه‬ ‫انتخاب‬ ‫با‬ ‫توانيد‬ ‫مي‬Treat warnings as errors،‫نود‬ ‫آن‬ ‫که‬ ‫کنيد‬ ‫کاری‬‫با‬warning‫بر‬ ‫خطا‬ ‫مثل‬ ‫شما‬ ‫برای‬ ‫نيز‬ ‫ها‬.‫کند‬ ‫خورد‬‫د‬‫ستورات‬
‫گيرد‬ ‫مي‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫ديتابيس‬ ‫با‬ ‫کار‬ ‫برای‬ ‫زير‬،:
 The “SELECT function” retrieves data from a table.
‫دستور‬SELECT‫برای‬‫رکورد‬ ‫يکسری‬ ‫انتخاب‬.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬
 The “UPDATE statement” changes one or more values stored in zero or more rows.
‫دستور‬UPDATE‫برای‬‫بروزرساني‬.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬ ‫اطالعات‬
 The “DELETE FROM statement” removes rows from a database table.
‫دستور‬DELETE FROM.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬ ‫اطالعات‬ ‫حذف‬ ‫برای‬
 The “INSERT statement” adds a row to a database table.
‫دستور‬INSERT.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬ ‫اطالعات‬ ‫حذف‬ ‫برای‬
 The “CALL statement” invokes a stored procedure.
‫دستور‬CALL‫فراخواني‬ ‫برای‬Stored Procedures.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬
 The “PASSTHRU function” can be used to make complex selections not currently supported by the broker, those
containing GROUP BY or HAVING clauses.
‫دستور‬PASSTHRU‫برای‬‫انجام‬SELECT‫که‬ ‫مواردی‬ ‫مانند‬ ‫نيست‬ ‫بروکر‬ ‫طريق‬ ‫از‬ ‫اجرا‬ ‫قابل‬ ‫عادی‬ ‫حالت‬ ‫در‬ ‫که‬ ‫پيچيده‬ ‫های‬GROUP
BY‫يا‬HAVING.‫شود‬ ‫مي‬ ‫استفاده‬ ‫دارند‬‫دستورات‬ ‫ايجاد‬ ‫برای‬ ‫دستور‬ ‫اين‬ ‫از‬ ‫همچنين‬Administration‫مان‬ ‫ديتابيسي‬‫ج‬ ‫ايجاد‬ ‫ند‬‫و‬ ‫دول‬
.‫شود‬ ‫مي‬ ‫استفاده‬ ‫نيز‬ ...
Committing database updates:
‫گزي‬ ‫از‬ ‫استفاده‬ ‫با‬‫نه‬Transaction‫در‬Node‫ها‬‫فرض‬ ‫پيش‬ ‫مقدار‬ .‫کرد‬ ‫مشخص‬ ‫را‬ ‫کاميت‬ ‫زمان‬ ‫توان‬ ‫مي‬Automatic‫روی‬ ‫را‬ ‫آن‬ ‫اگر‬ .‫است‬
Commit‫روی‬ ‫بر‬ ‫آن‬ ‫دادن‬ ‫قرار‬ ‫البته‬ .‫است‬ ‫خودمان‬ ‫بدست‬ ‫کاميت‬ ‫کنترل‬ ،‫دهيم‬ ‫قرار‬Commit‫روی‬ ‫بر‬ ‫که‬ ‫چرا‬ ‫است‬ ‫زيادی‬ ‫دقت‬ ‫نيازمند‬‫ر‬‫فتار‬
‫مانند‬ ‫المانها‬ ‫بعضي‬PROPAGATE‫تاث‬.‫گذارد‬ ‫مي‬ ‫ير‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
SELECT function
The SELECT function is the usual and most efficient way of transforming messages. You can use SELECT to:
 Comprehensively reformat messages
 Access database tables
 Make an output array that is a subset of an input array
 Make an output array that contains only the values of an input array
 Count the number of entries in an array
 Select the minimum or maximum value from a number of entries in an array
 Sum the values in an array
‫دستور‬SELECT‫در‬ESQL‫کاربر‬‫برای‬ ‫آن‬ ‫از‬ ،‫دارد‬ ‫متفاوتي‬ ‫دهای‬SELECT‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫ديتابيس‬ ‫از‬‫همچنين‬ ،‫ب‬ ‫توان‬ ‫مي‬ ‫آن‬ ‫از‬‫بر‬ ‫کار‬ ‫رای‬‫ر‬‫وی‬
‫آن‬ ‫از‬ ‫توان‬ ‫مي‬ ‫و‬ ‫ميکند‬ ‫برخورد‬ ‫ديتابيس‬ ‫يک‬ ‫مثل‬ ‫ورودی‬ ‫ديتای‬ ‫با‬ ‫يعني‬ ،‫کرد‬ ‫استفاده‬ ‫ورودی‬ ‫های‬ ‫داده‬Select‫سپس‬ ‫و‬ ‫کرد‬‫ديتای‬Select‫را‬ ‫شده‬
‫خروج‬ ‫در‬ ‫و‬ ‫کرد‬ ‫پردازش‬.‫داد‬ ‫قرار‬ ‫ي‬
:‫نکته‬‫برای‬‫دستورات‬ ‫بتوانيم‬ ‫اينکه‬ESQL‫کنيم‬ ‫اجرا‬ ‫ديتابيس‬ ‫روی‬ ‫بر‬ ‫را‬،‫کلمه‬ ‫از‬ ‫بعد‬ ‫را‬ ‫جدول‬ ‫نام‬Database‫و‬ ‫داده‬ ‫قرار‬‫س‬‫نام‬ ‫به‬ ‫پس‬‫جدول‬
‫مانند‬ ‫اگر‬ .‫کنيم‬ ‫مي‬ ‫اشاره‬DB2‫به‬ ‫اشاره‬ ‫به‬ ‫نياز‬SCHEMA‫را‬ ‫آن‬ ، ‫باشد‬ ‫داشته‬.‫آوريم‬ ‫مي‬ ‫جدول‬ ‫از‬ ‫قبل‬ ‫نيز‬
SELECT ... FROM Database.TABLE1
WHERE ...
Or
SELECT ... FROM Database.SCHEMA.TABLE1
WHERE ...
:‫نکته‬‫يک‬ ‫به‬ ‫بخواهيم‬ ‫اگر‬Database‫برای‬ ‫که‬ ‫ديتاسورسي‬ ‫از‬ ‫خارج‬ ‫در‬‫نود‬‫ب‬ ‫زير‬ ‫بصورت‬ ‫را‬ ‫کد‬ ‫بايد‬ ‫بايم‬ ‫داشته‬ ‫دسترسي‬ ‫شده‬ ‫ست‬.‫نويسيم‬
SELECT ... FROM Database.DataSource.SCHEMA.TABLE1
WHERE ...
Example1:
‫دستور‬SELECT‫زبان‬ ‫به‬ ‫که‬ ‫را‬ ‫زير‬SQL:‫بگيريد‬ ‫نظر‬ ‫در‬ ‫شده‬ ‫نوشته‬
SQL SELECT column1, column2 FROM table1
‫بخواهيم‬ ‫اگر‬SELECT‫باال‬ ‫در‬ ‫شده‬ ‫اشاره‬‫زبان‬ ‫به‬ ‫را‬ESQL‫صورت‬ ‫به‬ ،‫بنويسيم‬‫های‬:‫شود‬ ‫نوشته‬ ‫تواند‬ ‫مي‬ ‫زير‬
ESQL SELECT T.column1, T.column2
FROM Database.table1 AS T
ESQL SELECT table1.column1, table1.column2
FROM Database.table1
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
ESQL SELECT T.column1, T.column2
FROM Database.table1 AS T
WHERE T.column3 = Body.Field2
ESQL SELECT T.*
FROM Database.Table1 AS T
‫همانند‬SQL‫کلمه‬ ‫از‬ ‫معمولي‬AS‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫نيز‬ ‫ستونها‬ ‫نام‬ ‫تغيير‬ ‫برای‬:
SELECT T.column1 AS price, T.column2 AS item
FROM Database.table1 AS T WHERE...
Example2:
‫دستور‬ ‫خروجي‬ ،‫داريم‬ ‫را‬ ‫ذيل‬ ‫های‬ ‫داده‬ ‫با‬ ‫جدولي‬ ‫کنيد‬ ‫فرض‬ESQL:‫باشد‬ ‫مي‬ ‫زير‬ ‫صورت‬ ‫به‬ ‫شده‬ ‫داده‬
USERTABLE
Column1 Column2
1 value1 Value2
2 Value3 Value4
ESQL : SET OutputRoot.XML.Test.Result[] = (SELECT T.Column1, T.Column2
FROM Database.USERTABLE AS T);
،‫شود‬ ‫مي‬ ‫برگردانده‬ ‫جدول‬ ‫رکورد‬ ‫دو‬ ‫هر‬ ‫پس‬ ‫ندارد‬ ‫شرط‬ ‫باال‬ ‫دستور‬‫خروجي‬XML‫است‬ ‫زير‬ ‫بصورت‬ ‫فوق‬ ‫دستور‬:
<Test>
<Result>
<Column1>value1</Column1>
<Column2>value2</Column2>
</Result>
<Result>
<Column1>value3</Column1>
<Column2>value4</Column2>
</Result>
</Test>
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Example3:
‫جدو‬ ‫همان‬‫برای‬ ‫است‬ ‫مثالي‬ ‫زير‬ ‫دستور‬ ،‫بگيريد‬ ‫نظر‬ ‫در‬ ‫را‬ ‫باال‬ ‫ل‬JOIN:‫جداول‬
SET OutputRoot.XML.Test.Result[] = (SELECT A.Column1 AS FirstColumn,
A.Column2 AS SecondColumn,
B.Column3 AS ThirdColumn,
B.Column4 AS FourthColumn
FROM Database.USERTABLE1 AS A,
Database.USERTABLE2 AS B
WHERE A.Column1 = 'value1'
AND B.Column4 = 'value8');
:‫فوق‬ ‫دستور‬ ‫خروجي‬
<Test>
<Result>
<FirstColumn>value1</FirstColumn>
<SecondColumn>value2</SecondColumn>
<ThirdColumn>value7</ThirdColumn>
<FourthColumn>value8</FourthColumn>
</Result>
</Test>
Example3:
SET OutputRoot.XMLNS.Data.Output[] = (SELECT R.Quantity, R.Author
FROM InputRoot.XMLNS.Invoice.Purchases.Item[] AS R);
:‫است‬ ‫زير‬ ‫شکل‬ ‫به‬ ‫دستور‬ ‫اين‬ ‫خروجي‬
<Data>
<Output>
<Quantity>2</Quantity>
<Author>Neil Bradley</Author>
</Output>
<Output>
<Quantity>1</Quantity>
<Author>Don Chamberlin</Author>
</Output>
<Output>
<Quantity>1</Quantity>
<Author>Philip Heller, Simon Roberts</Author>
</Output>
</Data>
: ‫نکته‬‫شکل‬ ‫به‬ ‫زير‬ ‫صورت‬ ‫به‬ ‫را‬ ‫باال‬ ‫دستور‬‫حلقه‬‫نوشت‬ ‫توان‬ ‫مي‬ ‫هم‬‫دستور‬ ‫البته‬ ،SELECT‫است‬ ‫سريعتر‬ ‫و‬ ‫مختصر‬ ‫باال‬:
DECLARE i INTEGER 1;
DECLARE count INTEGER CARDINALITY(InputRoot.XMLNS.Invoice.Purchases.Item[]);
WHILE (i <= count)
SET OutputRoot.XMLNS.Data.Output[i].Quantity = InputRoot.XMLNS.Invoice.Purchases.Item[i].Quantity;
SET OutputRoot.XMLNS.Data.Output[i].Author = InputRoot.XMLNS.Invoice.Purchases.Item[i].Author;
SET i = i+1;
END WHILE;
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
PASSTHRU statement:
The PASSTHRU function evaluates an expression and executes the resulting character string as a database statement,
returning a result set.
‫دستور‬ ‫از‬PASSTHRU‫صورت‬ ‫به‬ ‫که‬ ‫ديتابيسي‬ ‫دستورات‬ ‫اجرای‬ ‫برای‬‫و‬ ‫شده‬ ‫تهيه‬ ‫دايناميک‬‫رشته‬ ‫يک‬String،‫است‬‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬.
Example:
SET myVar = 'SELECT * FROM user1.stocktable';
SET OutputRoot.XMLNS.Data[] = PASSTHRU(myVar);
// The following example creates the table Customers in schema Shop in database DSN1:
PASSTHRU 'CREATE TABLE Shop.Customers (
CustomerNumber INTEGER,
FirstName VARCHAR(256),
LastName VARCHAR(256),
Street VARCHAR(256),
City VARCHAR(256),
Country VARCHAR(256)
)' TO Database.DSN1;
// The following example "drops" (that is, deletes) the table Customers from schema Shop in database DSN1:
PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1;
// he following example performs a SELECT on table Table1 in schema Schema1 in database DSN1, passing two
parameters to the WHERE clause and asking for the result set to be ordered in ascending name order. The result
set is assigned to the SelectResult folder:
SET OutputRoot.XML.Data.SelectResult.Row[] =
PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R
WHERE R.Name = ? OR R.Name = ?
ORDER BY Name'
TO Database.DSN1
VALUES ('Name1', 'Name4'));
Note:
PASSTHRU can still be used to call stored procedures if:
 Only input parameters can be used.
 Only single result sets are supported.
If you don't meet these criteria, use the CALL statement because PASSTHRU imposes limitations (you cannot use output
parameters, for example).
‫از‬‫د‬‫ستور‬PASSTHRU‫م‬ ‫دوشرط‬ ‫به‬‫ي‬‫توان‬‫فراخواني‬ ‫برای‬‫خروجي‬ ‫پارامتر‬ ‫و‬ ‫باشد‬ ‫داشته‬ ‫ورودی‬ ‫پارامتر‬ ‫فقط‬ ‫اينکه‬ ‫يکي‬ ،‫کرد‬ ‫استفاده‬ ‫پي‬ ‫اس‬‫ن‬‫داشته‬
‫اينکه‬ ‫دوم‬ ‫و‬ ‫باشد‬‫اگر‬‫کرسر‬‫شما‬ ‫پي‬ ‫اس‬ ‫اگر‬ ،‫نباشد‬ ‫يکي‬ ‫از‬ ‫بيش‬ ،‫داشت‬ ‫خروجي‬ ‫عنوان‬ ‫به‬‫دستور‬ ‫از‬ ‫بايد‬ ‫ندارد‬ ‫را‬ ‫شرط‬ ‫دو‬ ‫اين‬CALL‫برای‬‫ف‬‫راخواني‬
.‫نماييد‬ ‫استفاده‬ ‫پي‬ ‫اس‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
CALL statement:
To invoke a procedure that is stored in a database, use the ESQL CALL statement. The stored procedure must be defined
by a CREATE PROCEDURE statement that has a Language clause of DATABASE and an EXTERNAL NAME clause that
identifies the name of the procedure in the database and, optionally, the database schema to which it belongs.
When you invoke a stored procedure with the CALL statement, the broker ensures that the ESQL definition and the
database definition match, This means, the external name of the procedure must match a procedure in the database and
the number,type and direction of parameters must be the same.
The following restrictions apply to the use of stored procedures:
Overloaded procedures are not supported. (An overloaded procedure is one that has the same name as another
procedure in the same database schema with a different number of parameters, or parameters with different types.) If
the broker detects that a procedure is overloaded, it raises an exception.
In an Oracle stored procedure declaration, you are not permitted to constrain CHAR and VARCHAR2 parameters with a
length, and NUMBER parameters with a precision or scale, or both. Use %TYPE when you declare CHAR, VARCHAR, and
NUMBER parameters to provide constraints on a formal parameter.
‫فراخواني‬ ‫برای‬Stored procedure‫دستور‬ ‫از‬ ‫ها‬CALL‫فراخ‬ ‫امکان‬ ‫مثال‬ ،‫دارد‬ ‫وجود‬ ‫نيز‬ ‫محدوديتهايي‬ ‫البته‬ .‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬‫های‬ ‫رويه‬ ‫واني‬
overloaded‫وجود‬ )‫ميکند‬ ‫فرق‬ ‫هم‬ ‫با‬ ‫انها‬ ‫پارامترهای‬ ‫اما‬ ‫دارند‬ ‫يکسان‬ ‫نام‬ ‫که‬ ‫های‬ ‫(رويه‬‫ها‬ ‫رويه‬ ‫مدل‬ ‫اين‬ ‫فراخواني‬ ‫با‬ .‫ندارد‬.‫گردد‬ ‫مي‬ ‫ايجاد‬ ‫خطا‬
‫در‬ ‫ها‬ ‫رويه‬ ‫فراخواني‬ ‫امکان‬mapping node.‫دارد‬ ‫وجود‬ ‫نيز‬
Example:
‫يک‬ ‫کنيد‬ ‫فرض‬SP‫شامل‬ ‫که‬ ‫داريم‬ ‫ديتابيس‬ ‫در‬‫يک‬‫باشد‬ ‫مي‬ ‫خروجي‬ ‫يک‬ ‫و‬ ‫ورودی‬‫کنيم‬ ‫فراخواني‬ ‫را‬ ‫پي‬ ‫اس‬ ‫اين‬ ‫خواهيم‬ ‫مي‬ ‫و‬‫اب‬ ،‫ت‬‫باي‬ ‫دا‬‫د‬‫دستور‬ ‫با‬
CREATE PROCEDURE‫در‬ ‫پس‬ ‫اس‬ ‫يک‬ESQL‫تعريف‬‫ک‬‫فيزيکي‬ ‫نام‬ ‫بوسيله‬ ‫ديتابيس‬ ‫در‬ ‫موجود‬ ‫پي‬ ‫اس‬ ‫به‬ ‫را‬ ‫آن‬ ‫و‬ ‫نيم‬(NAMEEXTERNAL)
‫کنيم‬ ‫مرتبط‬ ‫پس‬ ‫اس‬‫تعداد‬ ،‫ترتيب‬ ،‫باشد‬ ‫ديتابيس‬ ‫سمت‬ ‫در‬ ‫پي‬ ‫اس‬ ‫همانند‬ ‫دقيقا‬ ‫بايد‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫پارامترهای‬ ‫نوع‬ ‫و‬:
CREATE PROCEDURE TestProcedure (IN P1 INT, OUT P2 INT)
LANGUAGE DATABASE
DYNAMIC RESULT SETS 2
EXTERNAL NAME "DBSchema.TestProcedure ";
‫دستور‬ ‫با‬ ‫سپس‬CALL‫پي‬ ‫اس‬‫شده‬ ‫تعريف‬:‫کنيم‬ ‫مي‬ ‫فراخواني‬ ‫را‬
CALL TestProcedure(InVar1, OutVar2, Environment.ResultSet1[], OutputRoot.XMLNS.Test.ResultSet2[]);
‫باال‬ ‫دستور‬ ‫در‬‫پا‬‫را‬‫مترهای‬‫خروجي‬ ‫و‬ ‫ورودی‬ ‫پارامترهای‬ ‫همان‬ ‫که‬ ‫دوم‬ ‫و‬ ‫اول‬‫پي‬ ‫اس‬،‫هستند‬‫پارامترهای‬‫چه‬ ‫و‬ ‫سوم‬‫ارم‬‫برای‬ ‫نيز‬Resultset‫پي‬ ‫اس‬
‫نوع‬ ‫از‬ ‫و‬ ‫اند‬ ‫شده‬ ‫گرفته‬ ‫نظر‬ ‫در‬Refrence Field‫باشند‬ ‫مي‬‫پي‬ ‫اس‬ ‫خروجي‬ ‫و‬‫مستقيما‬‫مي‬ ‫قرار‬ ‫انها‬ ‫در‬‫گيرد‬.
‫توان‬ ‫مي‬‫ب‬ ‫را‬ ‫فوق‬ ‫پي‬ ‫اس‬‫بصورت‬ ‫زير‬ ‫روش‬ ‫ه‬Reference Variable:‫کرد‬ ‫تعريف‬ ‫نيز‬
DECLARE resultCursor REFERENCE TO OutputRoot.XMLNS.Test; // using a reference variable
CALL TestProcedure (InVar1, resultCursor.OutVar2, resultCursor.ResultSet1[],resultCursor.ResultSet2[]);
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Debugging a message flow:
https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ag11186_.htm?lang=en
1) Set a Flow Debug port number:
1_1) The flow debug port is also known as the Java debug port, and the JVM debug port. In the Integration Nodes
view in the IBM Integration Toolkit, right-click the integration server with which you want to work, and click Launch
Debugger. Click Configure, and enter a port number. Click OK to enable debugging on the selected port, and attach
the debugger to the selected integration server.
:‫است‬ ‫شده‬ ‫داده‬ ‫نشان‬ ‫ذيل‬ ‫شکل‬ ‫در‬ ‫که‬ ‫باشد‬ ‫مي‬ ‫ديباگ‬ ‫برای‬ ‫پورت‬ ‫يک‬ ‫کردن‬ ‫ست‬ ‫برنامه‬ ‫کردن‬ ‫ديباگ‬ ‫برای‬ ‫قدم‬ ‫اولين‬
1_2) In the IBM Integration Explorer, right-click the integration server with which you want to work, and click
Properties. Enter a port number in the Flow Debug Port field on the Extended page, and click OK to modify the Flow
Debug port number. You must right-click the integration server and click Flow Debug Port > Enable to enable
debugging on the selected port.
1_3) In order to debug a JavaCompute node, or a user defined node containing Java code, the broker JVM must be
configured with a debug port number. Set the Java™ debug port by running the mqsichangeproperties command
(all on one line) in the Command Console:
‫از‬ ‫خود‬ ‫برنامه‬ ‫در‬ ‫اگر‬Javacompute‫نم‬ ‫ست‬ ‫نيز‬ ‫را‬ ‫آن‬ ‫به‬ ‫مربوط‬ ‫ديباگ‬ ‫پورت‬ ‫برنامه‬ ‫کردن‬ ‫ديباگ‬ ‫برای‬ ‫بايد‬ ‫باشيد‬ ‫کرده‬ ‫استفاده‬‫اييد‬‫کار‬ ‫اين‬ ‫برای‬ ،
‫نماييد‬ ‫استفاده‬ ‫زير‬ ‫دستورات‬ ‫از‬:
mqsichangeproperties broker_name -e integration_server_name
-o ComIbmJVMManager -n jvmDebugPort -v port_number
For example:
mqsichangeproperties TEST -e default
-o ComIbmJVMManager -n jvmDebugPort -v 3920
When this command completes, restart the broker.
Warning: When the jvmDebugPort is enabled, a remote user can connect to the integration node's JVM and
inspect its behavior and data, including potentially sensitive information. A remote user can also exert control
over the integration node's behavior. It is therefore recommended that the jvmDebugPort is disabled on
production systems.
2) If you used the mqsichangeproperties command or the IBM Integration Explorer to configure the Flow Debug
Port, you must use the Integration Nodes view in the IBM Integration Toolkit to attach the flow debugger to the
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
integration server. Right-click the integration server with which you want to work, and click Launch Debugger,
and click OK to attach the debugger to the selected integration server.
3) Open the message flow that you want to debug in the Message Flow editor by double-clicking its name in the
Application Development view.
4) Add a breakpoint to a connection that leads out of the input node to ensure that the message flow does not run
to completion before you can begin to debug it.
‫روی‬ ‫بر‬Flow‫خود‬ ‫برنامه‬ ‫کدهای‬ ‫و‬break point‫برا‬ ،‫دهيد‬ ‫قرار‬‫نظر‬ ‫موزد‬ ‫محل‬ ‫در‬ ‫بايد‬ ‫کار‬ ‫اين‬ ‫ی‬right click‫گ‬ ‫سپس‬ ‫و‬ ‫نماييد‬‫زينه‬Add
breakpoint.‫نماببد‬ ‫انتخاب‬ ‫را‬
5) Switch to the Debug perspective.
.‫نماييد‬ ‫عمل‬ ‫زير‬ ‫شکل‬ ‫طبق‬ ‫بايد‬ ‫ديباگ‬ ‫مود‬ ‫به‬ ‫رفتن‬ ‫بايد‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
6) Right-click the Message Broker Launch Configuration in the Debug view, and click Edit Source Lookup. You can
use Edit Source Lookup Path to tell the debugger where to look for your source files for message flows, and
related resources such as ESQL, message maps and Java during debugging.
7) Click Add, and select the type of source to add to the lookup path. The lookup path can be an Eclipse project
name, an external folder, or a compressed (.zip) file. You can specify multiple locations, but the debugger always
looks first in the message flow project that you specify in the Edit Source Lookup Path dialog. Then select the
resources to include in the lookup path, and click OK.
8) Click Add to include more resources in the lookup path, click Up, or Down to modify the order of the resources.
Then click OK to exit the Edit Source Lookup Path dialog, and save your changes.
9) When the next message comes into your flow and arrives at breakpoint you added after the input node, the
flow pauses, the breakpoint icon is highlighted, and you can start debugging.
10) In the Debug view, double-click the message flow that you want to debug. The message flow opens in the
Message Flow editor. You can now add more breakpoints, start stepping over the flow, and so on.
11) putting a test message on an input queue:
If your message flow includes MQInput and MQOutput nodes, you can test the flow by putting a message on the
input queue of your first MQInput node. You can use the command line interfaces or WebSphere® MQ Explorer to put a
message to a queue. You can also use the Test Client as a repeatable alternative.
1. Switch to the Integration Development perspective.
2. Open your message flow in the Message Flow editor.
3. Right-click the input node of the message flow and click Test. The message flow is deployed and the Test
Client editor opens and displays the Events window.
4. On the toolbar of the Test Client editor, under Message Flow Test Events, click the Enqueue icon .
5. Under Detailed Properties, enter the names of the queue manager and the queue for the input node for this
flow. Queue manager names are case-sensitive; make sure that you enter the name correctly.
6. If you are putting a message onto an input queue that is on a remote computer, ensure that the queue
manager of the associated integration node has a server-connection channel called SYSTEM.BKR.CONFIG.
7. If you are putting a message onto a remote queue, enter values to identify the host and port of the computer
that is hosting the queue.
8. Optional: If you want to save the Test Client file, complete the following steps:
9. Click File > Save and select the project where you want to save the file.
10. Enter a name for the file and click Finish.
11. The Test Client file is saved in the Flow Tests folder in the project.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
3_2) JavaCompute node:
https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac20805_.htm?cp=SSMKHH_9.0.0&lang=en
‫يک‬ ‫در‬ ‫عمليات‬ ‫پردازش‬ ‫برای‬ ‫جاوا‬ ‫زبان‬ ‫به‬ ‫نويسي‬ ‫کد‬ ‫برای‬‫مسيج‬‫ا‬ ‫فلو‬‫ز‬.‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫نود‬ ‫اين‬
Use the JavaCompute node to work with messages by using the Java™ language. By using this node, you can
complete the following tasks:
 Use Java to examine an incoming message and, depending on its content, propagate it unchanged to
one of the two output terminals of the node. The node behaves in a similar way to a Filter node, but
uses Java instead of ESQL to determine which output terminal to use.
 Use Java to change part of an incoming message and propagate the changed message to one of the
output terminals.
 Use Java to create and build a new output message that is independent of the input message.
 Use Java to create a map in a global cache, and to add and retrieve data from that map. By storing
data in the global cache, that data is available to other JavaCompute nodes or message flows.
Note: The Java code that is used by the node is stored in an Eclipse Java project.
Note: The Java code that you use to access and manipulate the message data can be coded using any of the
following programming styles:
 Java plugin API
 Java Architecture for XML Binding (JAXB)
 Document Object Model (DOM)
Java accessor from MbMessageAssembly ESQL field type constant
getMessage().getRootElement() InputRoot
getMessage().getRootElement().getLastChild() InputBody
getLocalEnvironment().getRootElement() InputLocalEnvironment
getGlobalEnvironment().getRootElement() Environment
getExceptionList().getRootElement() InputExceptionList
Use the following methods to traverse a message tree from an element of type MbElement:
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
 From the Root part of the tree, calling getFirstChild() navigates to Properties. Also from Root, calling
getLastChild() returns XML.
 From Properties, calling getParent() returns Root, and calling getNextSibling() returns MQMD.
 From MQMD, calling getPreviousSibling() returns Properties, calling getParent() returns Root, and
calling getNextSibling() returns XML.
 From XML, calling getPreviousSibling() returns MQMD, calling getParent() returns Root, calling
getFirstChild() returns document, and calling getLastChild() also returns document.
 From document, calling getParent() returns XML, calling getFirstChild() returns chapter, and calling
getLastChild() also returns chapter.
 From chapter, calling getParent() returns document, calling getFirstChild() returns title, and calling
getLastChild() returns the child that contains the message data "Some text.".
MBMessage provides the following methods:
getDOMDocument()
obtains a W3C org.w3c.dom.Document object for the message body.
createDOMDocument()
obtains a W3C org.w3c.dom.Document object for the message body.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
MbElement provides the following method:
getDOMNode()
obtains a W3C org.w3c.dom.Node object for the message element.
Accessing information about an element:
Use the following methods to return information about the referenced element:
getName()
returns the element name as a java.lang.String
getValue()
returns the element value
getType()
returns the generic type, which is one of the following types:
 NAME: an element of this type has a name, but no value.
 VALUE: an element of this type has a value, but no name.
 NAME/VALUE: an element of this type has both a value and a name.
getSpecificType()
returns the parser-specific type of the element
getNamespace()
returns the namespace URI of this element
Creating a new message by using a JavaCompute node:
MbMessage outMessage = new MbMessage();
MbElement outRoot = outMessage.getRootElement();
MbElement outBody = outRoot.createElementAsLastChild(MbXMLNSC.PARSER_NAME);
Note: To propagate the message assembly to the Out terminal use the following method:
out.propagate(assembly);
To propagate the message assembly to the Alternate terminal, use the following method:
alt.propagate(assembly);
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Connections to databases:
http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ah14440_.htm
You can configure both ODBC and Java™ Database Connectivity (JDBC) connections for access to databases.
Configure an ODBC data source on Windows:
http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ah14442_.htm
1. Click Start > Control Panel > Administrative Tools > Data Sources (ODBC).
If you are using 32-bit DFEs on Windows 64-bit systems, complete the following steps:
a. Make a copy of Data Sources (ODBC).
b. Right-click the Data Sources (ODBC) shortcut and select properties.
c. In the 64-bit ODBC dialog, by default the target points to
%SystemRoot%system32odbcad32.exe. Copy the shortcut, modify the target to point to
%SystemRoot%SysWoW64Odbcad32.exe, and use the revised copy of the shortcut instead.
2. Click the System DSN tab and click Add.
3. Complete the steps in the following sections for the databases that you are working with.
DB2® UDB
Define a data source for DB2 UDB:
1. Select the driver IBM DB2 ODBC DRIVER.
2. Enter the data source name (DSN) and description.
3. Select the correct database alias from the list.
4. Click Finish to save your definition.
5. Click OK to close the ODBC Data Source Administrator.
6. If you need to use Global Coordination with your database from IBM Integration Bus on Windows
systems, the next task is to set up the 32-bit environment that is needed by WebSphere® MQ, see
Setting your environment to support 32-bit access to databases.
You must register the data source as a system data source.
If you prefer, you can use the Configuration Assistant instead of the ODBC Data Source Administrator:
1. Open the DB2 Configuration Assistant.
2. Right-click the database and select Change Database.
3. Select Data Source.
4. Select Register this database for ODBC. Select the system data source option.
5. Click Finish.
6. The Test Connection dialog opens automatically and you can test the various connections.
Sample IIB ODBC configuration files:
https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/bk58070_.htm
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Mqsisetdbparms command:
Use the mqsisetdbparms command to set security credentials for a specific user ID and password for database
connections (or user ID and SSH identity file for SFTP) for the following resources. You can run the mqsisetdbparms
command while the broker is running. However, you must stop and start each integration server that uses a particular
ResourceName, before that information is read and used by that integration server.
‫ي‬ ‫نمودن‬ ‫وارد‬ ‫برای‬‫سورس‬ ‫ديتا‬ ‫به‬ ‫مربوط‬ ‫پسورد‬ ‫وزر‬ODBC‫دستور‬ ‫از‬mqsisetdbparms:‫کنيم‬ ‫مي‬ ‫استفاده‬ ‫ذيل‬ ‫بصورت‬
ODBC Data source names examples:
The following example shows the use of the command to associate a userid and password for a specific ODBC data
source name (no Universal Record Identifier (URI) prefix is required):
mqsisetdbparms IB9NODE -n USERDB1 -u myuserid1 -p mypassword1
The following examples show the use of the optional prefix odbc::. Use this option to set the user ID and password for an
ODBC data source at either the broker level, or at the integration server level:
mqsisetdbparms IB9NODE -n odbc::USERDB2 -u myuserid2 -p mypassword2
mqsisetdbparms IB9NODE -n odbc::USERDB2::myIntegrationServer -u myuserid3 -p mypassword3
The following example shows how to set up a default user ID and password for the broker to use for all ODBC data source
names where no explicit Resource Names were set:
mqsisetdbparms IB9NODE -n dsn::DSN -u myuserid4 -p mypassword4
The following examples delete all the values that are defined for specific resource names from the broker registry:
mqsisetdbparms IB9NODE -n USERDB1 -d
mqsisetdbparms IB9NODE -n odbc::USERDB2 -d
mqsisetdbparms IB9NODE -n odbc::USERDB2::myIntegrationServer -d
mqsicvp command:
After configuring the ODBC connection parameters, you can run the mqsicvp command to verify that the broker can
connect to the data source, and to provide useful information about the data source and its interface. On Linux and UNIX
systems, this command also checks that the ODBC environment is set up correctly.
mqsicvp <IIB Node Name> -n <DataSource Name>
example:
mqsicvp IB9NODE -n MYSQL_ODBC
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
SOAP Nodes:
‫سرويس‬ ‫وب‬ ‫نوع‬ ‫از‬ ‫تعامالت‬ ‫براي‬Soap.‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫نود‬ ‫گروه‬ ‫اين‬ ‫از‬
SOAP is an XML message format used in Web service interactions. SOAP messages are typically sent over
HTTP or JMS, but other transport protocols can be used. The use of SOAP in a specific Web service is described
by a WSDL definition. WSDL validation in IBM Integration Bus refers to the WS-I Basic Profile. Use SOAP nodes
when working with SOAP-based Web services.
1_1) SOAPInput node:
https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac56170_.htm?cp=SSMKHH_9.0.0&lang=en
‫پيغام‬ ‫يک‬ ‫دريافت‬ ‫براي‬Soap.‫شود‬ ‫مي‬ ‫استفاده‬ ‫نود‬ ‫اين‬ ‫از‬
The SOAPInput node can be used in a message flow that accepts and processes SOAP messages. The node is configured
using deployable WSDL. The SOAPInput node is typically used with the SOAPReply node. The SOAPInput node
receives incoming SOAP messages and, if the messages are valid, passes them down the message flow.
You cannot use an HTTPReply node to respond to a Web service request that is received by a SOAPInput node;
the broker raises an exception when the reply is attempted.
‫هاي‬ ‫نود‬ ‫با‬ ‫را‬ ‫نود‬ ‫اين‬ ‫توانيد‬ ‫نمي‬ ‫شما‬HTTP.‫کنيد‬ ‫استفاده‬ ‫و‬ ‫کرده‬ ‫وصل‬ ‫هم‬ ‫به‬
Generate WSDL:
You can create a Web service in IBM Integration Bus by importing a WSDL or by defining a new interface, using
the New Integration Service wizard. You can generate a WSDL document for a message model that resides in a
message set:
File  new  others  web services  WSDL
Alternatively, you can configure SOAP nodes by dragging a WSDL from your workspace onto the node, or by
specifying the WSDL using the WSDL file name property on the node.
WSDL operations are grouped into a logical interface or portType, and are then associated with a binding which
defines the physical format of the messages. You can select only one of the following bindings when you
generate WSDL:
 SOAP (over JMS)
 SOAP (over HTTP)
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
You can change the operation mode of the SOAP nodes so that they act in gateway mode. In gateway mode, a
WSDL is not required to configure the nodes because they handle generic request/response and one-way SOAP
messages that are not tied to a specific WSDL.
1_2) SOAPReply node:
http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac56180_.htm
Use the SOAPReply node to send SOAP messages from the broker to the originating client in response to a
message received by a SOAPInput node.
‫توسط‬ ‫که‬ ‫پيغامي‬ ‫به‬ ‫دادن‬ ‫پاسخ‬ ‫براي‬ ‫نود‬ ‫اين‬ ‫از‬SOAPInput‫پردازش‬ ‫و‬ ‫گرفته‬.‫شود‬ ‫مي‬ ‫استفاده‬ ، ‫شده‬
Property Default Description
Transaction
mode
Automatic
This property controls whether the message is sent under a JMS transaction. Valid values
are Yes, No, and Automatic.
Select No to send the message using a non-transactional JMS session. Select Yes to output
the message using a transactional JMS session.
Select Automatic if you want the message transactionality to be inherited from
the Transaction mode setting on the Input node at the start of the flow.
Validate
Inherit This property controls whether validation takes place. Valid values are None, Content and
Value, Content, andInherit.
Failure
action
User trace
This property controls what happens if validation fails. You can set this property only if you
set Validate to Content orContent and Value. Valid values are User trace, Local error
log, Exception, and Exception list.
Events None
Events that you have defined for the node are displayed on this tab. By default, no
monitoring events are defined on any node in a message flow. Use Add, Edit,
and Delete to create, change or delete monitoring events for the node; see Configuring
monitoring event sources using monitoring properties for details.
You can enable and disable events that are shown here by selecting or clearing
the Enabled check box.
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫مثال‬1‫نمونه‬ ‫يک‬ :Flow‫سريس‬ ‫وب‬ ‫فراخوانی‬ ‫برای‬Rest
‫نود‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫زير‬ ‫فلوی‬ ‫در‬http request‫نوع‬ ‫از‬ ‫سرويس‬ ‫وب‬ ‫يک‬rest‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کرد‬ ‫فراخواني‬ ‫توان‬ ‫مي‬ ‫را‬‫های‬ ‫نود‬http input‫و‬http
reply‫بصورت‬ ‫را‬ ‫شده‬ ‫فراخوانده‬ ‫سرويس‬ ‫وب‬ ‫نتيجه‬Json‫يا‬XML‫د‬‫کننده‬ ‫فراخواني‬ ‫سيستم‬ ‫راختيار‬IIB.‫قرارداد‬
‫مثال‬2‫نمونه‬ ‫يک‬ :Flow
‫نود‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫زير‬ ‫فلوی‬ ‫در‬Soap request‫نوع‬ ‫از‬ ‫سرويس‬ ‫وب‬ ‫يک‬Soap‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کرد‬ ‫فراخواني‬ ‫توان‬ ‫مي‬ ‫را‬‫های‬ ‫نود‬soap input‫و‬
soap reply‫سيست‬ ‫دراختيار‬ ‫را‬ ‫شده‬ ‫فراخوانده‬ ‫سرويس‬ ‫وب‬ ‫نتيجه‬‫کننده‬ ‫فراخواني‬ ‫م‬IIB.‫قرارداد‬
‫مثال‬3‫نمونه‬ ‫يک‬ :Flow
‫نود‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫زير‬ ‫فلوی‬ ‫در‬Soap request‫نوع‬ ‫از‬ ‫سرويس‬ ‫وب‬ ‫يک‬Soap‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کرد‬ ‫فراخواني‬ ‫توان‬ ‫مي‬ ‫را‬‫های‬ ‫نود‬http input‫و‬
http reply‫بصورت‬ ‫را‬ ‫شده‬ ‫فراخوانده‬ ‫سرويس‬ ‫وب‬ ‫نتيجه‬Json‫يا‬XML‫دراختيا‬‫کننده‬ ‫فراخواني‬ ‫سيستم‬ ‫ر‬IIB.‫قرارداد‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ap03981_.htm
IIB Security:
:‫تعاريف‬
authentication‫دارد‬ ‫را‬ ‫ای‬ ‫سامانه‬ ‫به‬ ‫ورود‬ ‫قصد‬ ‫که‬ ‫کاربری‬ ‫هويت‬ ‫احراز‬ :
authorization)‫خير‬ ‫يا‬ ‫دارد‬ ‫را‬ ‫درخواستي‬ ‫سرويس‬ ‫از‬ ‫استفاده‬ ‫مجوز‬ ‫(اينکه‬ ‫کرده‬ ‫الگين‬ ‫سامانه‬ ‫به‬ ‫که‬ ‫کاربری‬ ‫دسترسي‬ ‫سطح‬ ‫بررسي‬ :
identity:‫در‬IIB‫کنن‬ ‫مشخص‬ ‫که‬ ‫است‬ ‫امنيتي‬ ‫توکن‬ ‫يک‬ ‫آيدنتيتي‬ ‫يک‬ ،‫که‬ ‫دارد‬ ‫مي‬ ‫نگه‬ ‫خود‬ ‫در‬ ‫را‬ ‫صفاتي‬ ‫يکسری‬ ‫فرد‬ ‫آن‬ ‫از‬ ‫و‬ ‫است‬ ‫فرد‬ ‫يک‬ ‫ده‬
‫کرد‬ ‫هويت‬ ‫اهراز‬ ‫را‬ ‫فرد‬ ‫توان‬ ‫مي‬ ‫آنها‬ ‫بوسيله‬.
identity propagation.‫مختلف‬ ‫های‬ ‫سيستم‬ ‫زير‬ ‫به‬ ‫شده‬ ‫هويت‬ ‫احراز‬ ‫کاربر‬ ‫انتشار‬ :
Identity mapping:.‫باشد‬ ‫مي‬ ‫ديگر‬ ‫فرمت‬ ‫به‬ ‫فرمت‬ ‫يک‬ ‫از‬ ‫توکن‬ ‫تبديل‬
‫يک‬ ‫شما‬ ‫وقتي‬‫برنامه‬IIB‫نماييد‬ ‫توجه‬ ،‫هستند‬ ‫نياز‬ ‫مورد‬ ‫اطالعات‬ ‫از‬ ‫حفاظت‬ ‫برای‬ ‫که‬ ‫امنيتي‬ ‫معيارهای‬ ‫به‬ ‫که‬ ‫است‬ ‫مهم‬ ،‫کنيد‬ ‫مي‬ ‫طراحي‬.‫اينکه‬ ‫برای‬
IIB‫تنظيمات‬ ‫اعمال‬ : ‫مثال‬ ‫بعنوان‬ ،‫باشد‬ ‫مي‬ ‫نياز‬ ‫مورد‬ ‫امنيتي‬ ‫تنظيمات‬ ‫يکسری‬ ، ‫کند‬ ‫امن‬ ‫را‬ ‫سيستم‬ ‫درون‬ ‫اطالعات‬ ‫بتواند‬SSL Connections،
‫اع‬‫مال‬WS-Security‫به‬ ‫دسترسي‬ ‫کردن‬ ‫امن‬ ، ‫سرويسها‬ ‫وب‬ ‫به‬Message flow‫به‬ ‫دسترسي‬ ‫کردن‬ ‫محدود‬ ‫و‬ ‫ها‬Queue.‫ها‬
‫تس‬ ‫بتواند‬ ‫که‬ ‫دارند‬ ‫نياز‬ ‫هايي‬ ‫دسترسي‬ ‫يکسری‬ ‫به‬ ‫ها‬ ‫ادمين‬ ‫بعالوه‬‫کنن‬ ‫اعمال‬ ‫سيستم‬ ‫روی‬ ‫بر‬ ‫را‬ ‫تنظيماتي‬ ‫مثال‬ ،‫دهند‬ ‫انجام‬ ‫را‬ ‫کهايشان‬‫رفع‬ ‫برای‬ ‫و‬ ‫د‬
‫را‬ ‫تصميماتي‬ ‫مشکالت‬‫منابع‬ ‫به‬ ‫دسترسي‬ ‫برای‬ ‫آنها‬ .‫نمايند‬ ‫اجرا‬IIB‫يکسری‬ ‫يا‬ ‫وب‬ ‫صفحه‬ ‫طريق‬ ‫از‬ ‫تواند‬ ‫مي‬Rest API.‫نمايند‬ ‫اقدام‬
‫به‬ ‫کاربران‬ ‫دسترسي‬ ‫توانند‬ ‫مي‬ ‫سيستمي‬ ‫های‬ ‫ادمين‬IIB‫عضو‬ ‫توانند‬ ‫مي‬ ‫کاربران‬ ،‫نمايند‬ ‫کنترل‬ ‫را‬rule‫ها‬‫ي‬‫مجوزهای‬ ‫دارای‬ ‫که‬ ‫باشند‬ ‫ي‬‫ا‬‫منيتي‬
.‫هستند‬ ‫مشخصي‬
‫اين‬ ‫از‬ ‫قبل‬‫برای‬ ‫بخواهيد‬ ‫شما‬ ‫که‬IIB:‫باشيد‬ ‫آشنا‬ ‫زير‬ ‫مفاهيم‬ ‫با‬ ‫بايد‬ ‫نماييد‬ ‫تهيه‬ ‫امنيتي‬ ‫پلن‬ ‫يک‬ ‫خود‬
 Planning for security
 Administration security overview
 Message flow security overview
 Role-based security
 WS-Security
 Authorization for configuration tasks
 Security exits
 Public key cryptography
 Digital certificates
 Digital signatures
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Planning for security:
‫نصب‬ ‫هنگام‬ ‫امنيتي‬ ‫مشکالت‬ ‫و‬ ‫موارد‬ ‫از‬ ‫آگاهي‬IIB‫نصب‬ ‫از‬ ‫قبل‬ .‫باشد‬ ‫مي‬ ‫مهم‬ ‫بسيار‬IIB‫شما‬ ‫يونيکسي‬ ‫و‬ ‫لينوکسي‬ ‫عاملهای‬ ‫سيتم‬ ‫روی‬ ‫بر‬‫ب‬‫پچ‬ ‫ايد‬
‫ا‬ ‫هنگام‬ ،‫نصب‬ ‫از‬ ‫بعد‬ .‫باشيد‬ ‫کرده‬ ‫نصب‬ ‫را‬ ‫آنها‬ ‫امنيتي‬ ‫های‬‫ب‬ .‫باشيد‬ ‫کرده‬ ‫رعايت‬ ‫را‬ ‫يوزر‬ ‫ايجاد‬ ‫در‬ ‫امنيتي‬ ‫موارد‬ ‫بايد‬ ‫شما‬ ‫يوزر‬ ‫يجاد‬‫ابتدا‬ ‫بايد‬ ‫منظور‬ ‫دين‬
‫در‬ ‫نياز‬ ‫مورد‬ ‫رولهای‬IIB‫تا‬ ‫تواند‬ ‫مي‬ ‫ويندوز‬ ‫عمل‬ ‫سيستم‬ ‫روی‬ ‫بر‬ ‫کاربری‬ ‫های‬ ‫نام‬ .‫نماييد‬ ‫ايجاد‬ ‫را‬ ‫مربوطه‬ ‫کاربران‬ ‫سپس‬ ‫و‬ ‫ايجاد‬ ‫را‬12‫و‬ ‫باشد‬ ‫کاراکتر‬
‫حت‬ ‫لينوکس‬ ‫عاملهای‬ ‫سيتم‬ ‫در‬‫بايد‬ ‫ما‬8‫حروف‬ ‫بودن‬ ‫کوچک‬ ‫و‬ ‫بزرگ‬ ‫ويندوز‬ ‫در‬ ،‫نماييد‬ ‫دقت‬ ‫حروف‬ ‫بودن‬ ‫کوچک‬ ‫و‬ ‫بزرگ‬ ‫به‬ ‫نسبت‬ .‫باشد‬ ‫کاراکتر‬‫مهم‬
‫کاربری‬ ‫نام‬ ‫مثال‬ ‫عنوان‬ ‫به‬ .‫است‬ ‫مهم‬ ‫لينوکس‬ ‫در‬ ‫اما‬ ‫نيست‬TESTER‫و‬tester.‫هستند‬ ‫متفاوت‬ ‫کاربری‬ ‫نام‬ ‫دو‬ ‫لينوکس‬ ‫در‬
-‫دستورات‬ ‫اجرای‬ ‫مجوز‬ ‫که‬ ‫کاربراني‬ ‫برای‬mqsi*‫ر‬‫کاربری‬ ‫گروه‬ ‫عضو‬ ‫کاربران‬ ‫اين‬ ‫که‬ ‫شويد‬ ‫مطمئن‬ ‫دارند‬ ‫ا‬mqbrkrs.‫باشند‬
‫شما‬ ‫اگر‬broker administration security‫خواهند‬ ‫خاصي‬ ‫مجوزهای‬ ‫به‬ ‫نياز‬ ‫دستور‬ ‫هر‬ ‫اجرای‬ ‫برای‬ ‫شما‬ ‫يوزرهای‬ ، ‫ايد‬ ‫کرده‬ ‫فعال‬ ‫را‬
:‫ميدهد‬ ‫نشان‬ ‫را‬ ‫مجوزها‬ ‫اين‬ ‫زير‬ ‫جدول‬ .‫داشت‬
Command Authorization Queue
mqsichangeresourcestats Read SYSTEM.BROKER.AUTH
Execute SYSTEM.BROKER.AUTH.EG1
mqsicreateexecutiongroup
Read and write SYSTEM.BROKER.AUTH
mqsideleteexecutiongroup
Read and write SYSTEM.BROKER.AUTH
mqsideploy
Read SYSTEM.BROKER.AUTH
Write SYSTEM.BROKER.AUTH.EG
mqsilist
Read SYSTEM.BROKER.AUTH
Read SYSTEM.BROKER.AUTH.**2
mqsimode
Read (to display) or read and write (to
change)
SYSTEM.BROKER.AUTH
mqsireloadsecurity
Read SYSTEM.BROKER.AUTH
Write SYSTEM.BROKER.AUTH.**3
mqsireportresourcestats
Read SYSTEM.BROKER.AUTH
Read SYSTEM.BROKER.AUTH.EG4
mqsistartmsgflow5
Read SYSTEM.BROKER.AUTH
Execute SYSTEM.BROKER.AUTH.EG
mqsistopmsgflow5
Read SYSTEM.BROKER.AUTH
Execute SYSTEM.BROKER.AUTH.EG
mqsiwebuseradmin
Write SYSTEM.BROKER.AUTH
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Administration security overview:
Broker administration security‫اختياری‬ ‫گزينه‬ ‫يک‬ ، ‫گزينه‬ ‫اين‬ .‫ميکند‬ ‫کنترل‬ ‫منابع‬ ‫به‬ ‫دسترسي‬ ‫و‬ ‫دستورات‬ ‫اجرای‬ ‫در‬ ‫را‬ ‫کاربران‬ ‫حقوق‬‫ب‬‫رای‬
IIB‫نص‬ ‫هنگام‬ ‫تری‬ ‫اضافه‬ ‫پارامترهای‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫توانيد‬ ‫مي‬ ‫شما‬ .‫است‬ ‫فعال‬ ‫غير‬ ‫فرض‬ ‫پيش‬ ‫بصورت‬ ‫نصب‬ ‫هنگام‬ ‫و‬ ‫است‬‫ف‬ ‫را‬ ‫گزينه‬ ‫اين‬ ‫ب‬.‫نماييد‬ ‫عال‬
‫اعطای‬ ‫بايد‬ ‫شما‬ ، ‫کنيد‬ ‫فعال‬ ‫را‬ ‫گزينه‬ ‫اين‬ ‫شما‬ ‫که‬ ‫صورتي‬ ‫در‬ .‫دهيد‬ ‫تغيير‬ ‫را‬ ‫گزينه‬ ‫اين‬ ‫وضعيت‬ ‫نيز‬ ‫نصب‬ ‫از‬ ‫بعد‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫همچنين‬‫دسترسي‬
WebSphere® MQ‫در‬ ‫دسترسي‬ ‫های‬ ‫مجوز‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫صف‬ ‫در‬ ‫ها‬ ‫مجوز‬ ‫اين‬ .‫نماييد‬ ‫اعطا‬ ‫مشخصي‬ ‫يوزرهای‬ ‫به‬ ‫را‬broker queue manager
:‫شوند‬ ‫مي‬ ‫ذخيره‬
-SYSTEM.BROKER. AUTH:( ‫داخلي‬ ‫صف‬ ‫عنوان‬ ‫به‬ ‫صفه‬ ‫اين‬local queue‫هر‬ ‫در‬ )IIB‫فقط‬.‫گردد‬ ‫مي‬ ‫تعريف‬ ‫يکبار‬
-SYSTEM.BROKER.AUTH.EG.‫گردد‬ ‫مي‬ ‫تعريف‬ ‫يکي‬ ‫سرور‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫صفه‬ ‫اين‬ ‫از‬ :
‫تا‬ ‫قبلي‬ ‫مجوز‬ ،‫کند‬ ‫تغيير‬ ‫کاربر‬ ‫يک‬ ‫دستور‬ ‫اجرای‬ ‫مجوز‬ ‫اگر‬: ‫رود‬ ‫نمي‬ ‫بين‬ ‫از‬ ‫دهد‬ ‫رخ‬ ‫زير‬ ‫حالت‬ ‫دو‬ ‫از‬ ‫يکي‬ ‫که‬ ‫زمانيکه‬
-‫کاربر‬ ‫زمانيکه‬ ‫تا‬IBM Integration Explorer.‫ببند‬ ‫را‬ ‫خود‬
-‫با‬ ‫اپليکيشن‬ ‫ارتباط‬ ‫زمانيکه‬ ‫تا‬BrokerProxy.‫شود‬ ‫قطع‬
‫بين‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫بيشتر‬ ‫امنيت‬ ‫برای‬MQ‫و‬IIB‫نوع‬ ‫از‬ ‫ارتباط‬ ‫نيز‬SSL‫مي‬ ‫همچنين‬ .‫نماييد‬ ‫برقرار‬‫با‬ ‫که‬ ‫يوزرهايي‬ ‫توانيد‬MQ‫و‬ ‫سر‬‫ک‬‫را‬ ‫دارند‬ ‫ار‬
‫به‬ ‫مشخصي‬ ‫سرور‬ ‫از‬ ‫که‬ ‫نماييد‬ ‫محدود‬ ‫را‬ ‫آنها‬ ‫و‬ ‫کنيد‬ ‫مشخص‬MQ.‫شوند‬ ‫متصل‬
Message flow security overview:
IIB‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫سازد‬ ‫مي‬ ‫قادر‬ ‫را‬ ‫شما‬message identity‫يک‬ ‫در‬ ‫را‬ ‫ها‬ ‫پيام‬ ‫به‬ ‫دسترسي‬Message Flow.‫نماييد‬ ‫کنترل‬‫ب‬‫يک‬ ‫ايجاد‬ ‫ا‬‫ي‬‫چند‬ ‫ا‬
security profile‫امنيتي‬ ‫لحظ‬ ‫به‬ ‫را‬ ‫ها‬ ‫پيام‬ ،‫آن‬ ‫انتقال‬ ‫روش‬ ‫و‬ ‫پيام‬ ‫فرمت‬ ‫از‬ ‫فارق‬ ‫که‬ ‫کنيد‬ ‫ايجاد‬ ‫را‬ ‫امنيتي‬ ‫تنظيمات‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫ک‬.‫نمايد‬ ‫نترل‬
security profile‫در‬ ‫تنظيماتي‬IIB‫ارتباط‬ ‫امکان‬ ‫آن‬ ‫بوسيله‬ ‫شما‬ ‫که‬ ‫است‬IIB‫برقرار‬ ‫را‬ ‫امنيتي‬ ‫ابزارهای‬ ‫با‬.‫ميکنيد‬‫در‬IIB‫ار‬ ‫امکان‬‫با‬ ‫تباط‬‫محصوالت‬
‫زير‬ ‫امنيتي‬‫دارد‬ ‫وجود‬:
 WS-Trust V1.3 compliant security token servers (including TFIM V6.2) for authentication, mapping,
and authorization
 Tivoli® Federated Identity Manager (TFIM) V6.1 for authentication, mapping, and authorization
 Lightweight Directory Access Protocol (LDAP) for authentication and authorization
 Windows Domain Controllers for authentication
 Kerberos KDCs for authentication
‫شما‬ ‫اگر‬message flow security‫در‬ ‫امنيتي‬ ‫امکانات‬ ‫آنگاه‬ ،‫نکنيد‬ ‫فعال‬ ‫را‬IIB‫انتقال‬ ‫برای‬ ‫که‬ ‫بود‬ ‫خواهد‬ ‫امنيتي‬ ‫مکانيزمهای‬ ‫به‬ ‫منوط‬‫نظر‬ ‫در‬ ‫ديتا‬
.‫شده‬ ‫گرفته‬
‫با‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫و‬ ‫باال‬ ‫در‬ ‫شده‬ ‫ذکر‬ ‫امنيتي‬ ‫ابزارهای‬ ‫به‬ ‫اتصال‬‫ورودی‬ ‫نود‬ ‫در‬ ‫امنيتي‬ ‫تنظيمات‬ ‫اعمال‬Message Flow‫تان‬‫يا‬‫استفا‬ ‫با‬‫از‬ ‫ده‬‫نود‬
SecurityPEP‫از‬ ‫بخشي‬ ‫هر‬ ‫در‬Message Flow‫خودتان‬‫بين‬ ‫ما‬‫های‬ ‫چک‬ ، ‫خروجي‬ ‫نود‬ ‫و‬ ‫ورودی‬ ‫نود‬‫را‬ ‫نياز‬ ‫مورد‬ ‫امنيتي‬‫اعمال‬.‫نماييد‬‫های‬ ‫نود‬
‫که‬ ‫ورودی‬‫دارد‬ ‫وجود‬ ‫آنها‬ ‫برای‬ ‫امنيتي‬ ‫تنظيمات‬ ‫اعمال‬ ‫امکان‬: ‫از‬ ‫عبارتند‬
 MQInput
 HTTPInput
 SCAInput, SCAAsyncResponse
 SOAPInput
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ap04140_.htm
security profile :
( ‫امنيتي‬ ‫پروفايل‬ ‫يک‬ ‫بايد‬ ‫نماييد‬ ‫اعمال‬ ‫فلو‬ ‫يا‬ ‫نود‬ ‫روی‬ ‫را‬ ‫امنيت‬ ‫اينکه‬ ‫از‬ ‫قبل‬security profile‫پروف‬ ‫توانيد‬ ‫مي‬ ‫شما‬ .‫باشيد‬ ‫ساخته‬ )‫ايل‬‫های‬‫امنيتيتان‬
‫امنيتي‬ ‫ابزارهای‬ ‫به‬ ‫اتصال‬ ‫برای‬ ‫را‬LDAP, WS-Trust V1.3, Tivoli® Federated Identity Manager (TFIM) V6.2‫ايجاد‬ ‫برای‬ .‫کنيد‬ ‫ايجاد‬
‫دستور‬ ‫طريق‬ ‫از‬ ‫توانيد‬ ‫مي‬ ‫پروفايل‬mqsicreateconfigurableservice‫طري‬ ‫از‬ ‫يا‬‫داخل‬ ‫در‬ ‫اديتور‬ ‫يک‬ ‫ق‬IIB Explorer‫عمل‬.‫نماييد‬‫ا‬ ‫از‬ ‫بعد‬‫يجاد‬
‫از‬ ‫استفاده‬ ‫با‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫پروفايل‬Broker Archive editor‫يا‬ ‫مشخص‬ ‫ورودی‬ ‫نود‬ ‫يک‬ ‫به‬ ‫را‬ ‫شده‬ ‫ايجاد‬ ‫پروفايل‬‫اعمال‬ ‫فلو‬ ‫مسيج‬ ‫تمام‬ ‫سطح‬ ‫در‬
.‫نماييد‬‫آنگاه‬ ، ‫نماييد‬ ‫اعمال‬ ‫فلو‬ ‫مسيج‬ ‫کل‬ ‫سطح‬ ‫در‬ ‫را‬ ‫پروفايل‬ ‫شما‬ ‫اگر‬‫همچن‬ ‫و‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫های‬ ‫نود‬ ‫تمام‬ ‫سطح‬ ‫در‬ ‫امنيتي‬ ‫تنظيمات‬‫نود‬ ‫ين‬
SecurityPEP‫نسبت‬ ‫باشد‬ ‫شده‬ ‫اعمال‬ ‫مشخص‬ ‫نود‬ ‫يک‬ ‫به‬ ‫که‬ ‫امنيتي‬ ‫پروفايل‬ ‫که‬ ‫بگيريد‬ ‫نظر‬ ‫در‬ ‫را‬ ‫نکته‬ ‫اين‬ .‫شد‬ ‫خواهد‬ ‫اعمال‬ ‫وجود‬ ‫صورت‬ ‫در‬‫ب‬‫ه‬
‫داش‬ ‫خواهد‬ ‫الويت‬ ‫باشد‬ ‫شده‬ ‫اعمال‬ ‫فلو‬ ‫مسيج‬ ‫سطح‬ ‫در‬ ‫که‬ ‫امنيتي‬ ‫پروفايل‬ ‫يک‬.‫ت‬
‫امنيتي‬ ‫توابع‬ ‫برای‬ ‫توانيد‬ ‫مي‬ ‫شما‬ .‫نماييد‬ ‫ايجاد‬ ‫خارجي‬ ‫امنيتي‬ ‫ابزارهای‬ ‫از‬ ‫استفاده‬ ‫برای‬ ‫امنيتي‬ ‫پروفايل‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫همچنين‬‫از‬ ‫مختلف‬
‫از‬ ‫مثال‬ ،‫نماييد‬ ‫استفاده‬ ‫مختلفي‬ ‫ابزارهای‬LDAP( ‫هويت‬ ‫احراز‬ ‫برای‬authentication‫از‬ ‫و‬ )WS-Trust V1.3 STS‫برای‬‫دست‬ ‫سطح‬ ‫بررسي‬‫رسي‬
(authorization.‫نماييد‬ ‫استفاده‬ )
( ‫کاربر‬ ‫انتشار‬ ‫قصد‬ ‫فقط‬ ‫شما‬ ‫اگر‬identity propagation‫نوع‬ ‫از‬ ‫را‬ ‫خود‬ ‫امنيتي‬ ‫پروفايل‬ ‫توانيد‬ ‫مي‬ ،‫داريد‬ ‫امنيتي‬ ‫توابع‬ ‫اعمال‬ ‫بدون‬ )Default
Propagation‫فقط‬ ‫پروفايل‬ ‫اين‬ .‫نماييد‬ ‫ايجاد‬identity propagation‫درخواست‬ ‫را‬.‫کند‬ ‫مي‬
‫در‬‫با‬ ‫ارتباط‬ ‫نحوه‬ ‫کلي‬ ‫بررسي‬ ‫به‬ ‫ادامه‬LDAP: ‫پردازيم‬ ‫مي‬
https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ap04141_.htm?view=embed
Creating a security profile for LDAP:
‫ابزارهای‬ ‫از‬ ‫يکي‬ ‫بايد‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫از‬ ‫قبل‬LDAP:‫باشيد‬ ‫کرده‬ ‫اندازی‬ ‫راه‬ ‫و‬ ‫نصب‬ ‫سرور‬ ‫يک‬ ‫روی‬ ‫بر‬ ‫را‬ ‫شده‬ ‫اشاره‬ ‫آن‬ ‫به‬ ‫ذيل‬ ‫در‬ ‫که‬
 IBM Tivoli® Directory Server
 Microsoft Active Directory
 OpenLDAP.
IIB‫ج‬ ‫برای‬‫در‬ ‫ستجو‬LDAP.‫باشد‬ ‫شده‬ ‫داده‬ ‫آن‬ ‫به‬ ‫جستجو‬ ‫مجوز‬ ‫که‬ ‫دارد‬ ‫يوزر‬ ‫يک‬ ‫به‬ ‫نياز‬‫د‬ ‫سپس‬ .‫شويد‬ ‫مطمئن‬ ‫يوزر‬ ‫اين‬ ‫شدن‬ ‫ايجاد‬ ‫از‬ ‫لذا‬‫زير‬ ‫ستور‬
‫پروفايل‬ ‫تا‬ ‫دهيد‬ ‫انجام‬ ‫را‬LDAP: ‫نماييد‬ ‫ايجاد‬ ‫را‬
-‫پنجره‬ ‫يک‬Command window،‫نماييد‬ ‫اجرا‬ ‫پنجره‬ ‫آن‬ ‫در‬ ‫زير‬ ‫شکل‬ ‫به‬ ‫را‬ ‫دستور‬ ‫و‬ ‫نماييد‬ ‫ايجاد‬‫اين‬ ‫مورد‬ ‫در‬ ‫بيشتر‬ ‫جزييات‬ ‫برای‬‫د‬‫ستور‬
‫راهنمای‬ ‫به‬IIB:‫نماييد‬ ‫مراجعه‬
- mqsicreateconfigurableservice WBRK_BROKER -c SecurityProfiles -o LDAP
- -n
authentication,authenticationConfig,authorization,authorizationConfig,propagation,r
ejectBlankpassword
- -v "LDAP,"ldap://ldap.acme.com:389/ou=sales,o=acme.com",LDAP,
- "ldap://ldap.acme.com:389/cn=All Sales,ou=acmegroups,o=acme.com",TRUE,TRUE
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
:‫ادیتور‬ ‫طریق‬ ‫از‬ ‫پروفایل‬ ‫ایجاد‬
‫اديتور‬ ‫طريق‬ ‫از‬ ‫پروفايل‬ ‫ايجاد‬ ‫برای‬IIB‫در‬ ‫نظر‬ ‫مورد‬ ‫بروکر‬ ‫روی‬ ‫بر‬ ‫ابتدا‬ ‫که‬ ‫کرد‬ ‫عمل‬ ‫صورت‬ ‫بدين‬ ‫بايد‬MQ Explorer‫گزين‬ ‫سپس‬ ‫و‬ ‫کرده‬ ‫راست‬ ‫کليلک‬‫ه‬Properties
‫تب‬ ‫در‬ ‫و‬ ‫کرده‬ ‫انتخاب‬ ‫را‬Security and policies‫گزينه‬security profile:‫کنيم‬ ‫مي‬ ‫انتخاب‬ ‫را‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Enabling security of input nodes:
‫در‬IIB‫دا‬ ‫وجود‬ ‫آنها‬ ‫برای‬ ‫امنيتي‬ ‫تنظيمات‬ ‫اعمال‬ ‫امکان‬ ‫که‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫های‬ ‫نود‬‫تب‬ ‫يک‬ ‫دارای‬ ،‫رد‬Security‫قسمت‬ ‫در‬Properties‫خود‬‫مي‬
.‫باشند‬‫تب‬ ‫پارامترهای‬ ‫زير‬ ‫شکل‬Security: ‫دهد‬ ‫مي‬ ‫نشان‬ ‫را‬
‫نمونه‬ ‫يک‬ ‫زير‬ ‫شکل‬ ‫در‬Http Input Node‫مي‬ ‫مشاهده‬ ‫را‬‫تب‬ ‫که‬ ‫کنيد‬Security: ‫شده‬ ‫دهي‬ ‫مقدار‬ ‫پيام‬ ‫امنيتي‬ ‫چک‬ ‫برای‬ ‫آن‬
‫اي‬ ‫برای‬ ‫پيام‬ ‫نمونه‬ ‫يک‬ ‫هم‬ ‫ذيل‬ ‫در‬: ‫شود‬ ‫استفاده‬ ‫تواند‬ ‫مي‬ ‫نود‬ ‫اين‬ ‫به‬ ‫ارسال‬ ‫برای‬ ‫که‬ ‫کنيد‬ ‫مي‬ ‫مشاهده‬ ‫نود‬ ‫ن‬
<?xml version="1.0" encoding="UTF-8"?>
<Envelope>
<Body>
<MessageIdentity>
<Username>broker01</Username>
<Password>passw0rd01</Password>
<IssuedBy>Issuer1</IssuedBy>
<DemonstrateTokenType>SAML</DemonstrateTokenType>
</MessageIdentity>
</Body>
</Envelope>
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫نمونه‬ ‫يک‬ ‫زير‬ ‫شکل‬Message Flow‫دهد‬ ‫مي‬ ‫نشان‬ ‫را‬‫امنيتي‬ ‫اتفاقات‬ ‫ترتيب‬ ‫آن‬ ‫در‬ ‫که‬‫نشان‬ ‫را‬ ‫شود‬ ‫پردازش‬ ‫ورودی‬ ‫مسيج‬ ‫يک‬ ‫تا‬ ‫دهد‬ ‫مي‬ ‫رخ‬ ‫که‬
:‫دهد‬ ‫مي‬
‫رسد‬ ‫مي‬ ‫فلو‬ ‫مسيج‬ ‫ورودی‬ ‫نود‬ ‫به‬ ‫مسيج‬ ‫يک‬ ‫که‬ ‫هنگامي‬ ، ‫است‬ ‫مشخص‬ ‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫طور‬ ‫همان‬(MQ, HTTP, SCA, or SOAP)‫يک‬ ‫وجود‬ ‫ابتدا‬ ،
security profile.‫شود‬ ‫مي‬ ‫بررسي‬ ‫نود‬ ‫آن‬ ‫برای‬‫نود‬ ‫که‬ ‫کنيد‬ ‫توجه‬ ‫البته‬Soap‫از‬ ‫استفاده‬ ‫بدون‬ ‫و‬ ‫مستقال‬ ‫تواند‬ ‫مي‬ ‫خودش‬broker's security
manager‫خودش‬WS-Security‫وجود‬ ‫صورت‬ ‫در‬ .‫باشد‬ ‫داشته‬ ‫را‬ ‫خودش‬ ‫به‬ ‫مربوط‬security profile،security manager‫مرب‬‫به‬ ‫وط‬IIB‫فراخواني‬
‫امنيتي‬ ‫پروفايل‬ ‫اين‬ ‫که‬ ‫بخواند‬ ‫را‬ ‫امنيتي‬ ‫پروفايل‬ ‫تا‬ ‫شود‬ ‫مي‬identity‫و‬ ‫استخراج‬ ‫را‬ ‫مسيج‬‫حالتهای‬ ‫از‬ ‫ترکيبي‬propagation, authentication,
authorization,‫و‬mapping‫روی‬ ‫بر‬ ‫که‬ ‫باشد‬ ‫مي‬identity‫مي‬ ‫اعمال‬ ‫مسيج‬ ‫به‬ ‫مربوط‬‫است‬ ‫موفقيت‬ ‫با‬ ‫عمل‬ ‫اين‬ ‫که‬ ‫صورتي‬ ‫در‬ ،‫کند‬‫نشود‬ ‫خراج‬
Exception.‫دهد‬ ‫مي‬ ‫رخ‬‫و‬ ‫شود‬ ‫مي‬ ‫برگردانده‬ ‫نود‬ ‫به‬ ‫کنترل‬ ،‫دهد‬ ‫رخ‬ ‫خطا‬ ‫فرايند‬ ‫اجرای‬ ‫در‬ ‫يا‬ ‫شود‬ ‫اجرا‬ ‫کامل‬ ‫بطور‬ ‫امنيتي‬ ‫فرايند‬ ‫اگر‬‫ا‬‫ب‬ ‫آنجا‬ ‫ز‬‫بعد‬ ‫ه‬
.‫دهد‬ ‫مي‬ ‫را‬ ‫کار‬ ‫ادامه‬ ‫ورودی‬ ‫نود‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
SecurityPEP Node:
‫از‬ ‫ديگری‬ ‫بخشهای‬ ‫در‬ ‫بخواهيد‬ ‫اگر‬‫فلو‬ ‫مسيج‬‫توانيد‬ ‫مي‬ ،‫نماييد‬ ‫اجرا‬ ‫را‬ ‫امنيتي‬ ‫های‬ ‫چک‬ ) ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫قسمت‬ ‫(بجز‬‫نود‬ ‫از‬SecurityPEP‫برای‬
‫اين‬ ‫اعمال‬.‫نماييد‬ ‫استفاده‬ ‫امنيتي‬ ‫های‬ ‫کنترل‬‫نود‬SecurityPEP‫را‬ ‫شما‬‫که‬ ‫سازد‬ ‫مي‬ ‫قادر‬message flow security manager‫از‬ ‫جايي‬ ‫هر‬ ‫در‬ ‫را‬
Message flow.‫نماييد‬ ‫فراخواني‬:‫نماييد‬ ‫مي‬ ‫مشاهده‬ ‫را‬ ‫نود‬ ‫اين‬ ‫عملکرد‬ ‫نحوه‬ ‫ذيل‬ ‫شکل‬ ‫در‬
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
‫زير‬ ‫شکل‬property: ‫ميدهد‬ ‫نشان‬ ‫را‬ ‫نود‬ ‫اين‬ ‫های‬
‫تب‬Basic:‫باشد‬ ‫مي‬ ‫ذيل‬ ‫های‬ ‫صفت‬ ‫شامل‬ ‫نود‬ ‫اين‬
Property M C Default Description
Identity
token type
No No None
This property specifies the type of identity token present in the incoming message.
Valid values are:
 Current token
 Username
 Username and password
 X.509 Certificate
 SAML assertion
 Kerberos GSS v5 AP_REQ
 LTPA v2 token
 Universal WSSE token
If this property is set to Current token, the identity in the Properties folder is
used.
You can also specify the Username and password value to validate a
RACF® PassTicket using a WS-Trust V1.3 STS such as TFIM V6.2.
Identity
token
location
No No None
This property specifies where, in the message, the identity or security token can be
found. The location is specified as an ESQL field reference, an XPath expression, or a
string literal. If you use a string literal, it must be enclosed in single quotes and must
not contain a period (.),
Identity
password
location
No No None
This property specifies where, in the message, the password can be found. The
location is specified as an ESQL field reference, an XPath expression, or a string
literal. If you use a string literal, it must be enclosed in single quotes and must not
contain a period (.),
This property can be set only if Identity token type is set
to Username and password.
Identity
IssuedBy
location
No No None
This property specifies an XPath expression or ESQL path that describes the issuer of
the identity or security token. The location is specified as an ESQL field reference,
an XPath expression, or a string literal. If you use a string literal, it must be enclosed
in single quotes and must not contain a period (.),
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Property M C Default Description
This option is used when the associated security profile specifies a WS-Trust
V1.3 STS provider (for example, TFIM V6.2) for authentication, mapping or
authorization. In this case, when this field is left blank, no WS-Trust Issuer.
Address element is sent.
**،‫شود‬ ‫مي‬ ‫تنظيم‬ ‫امنيتي‬ ‫پروفايل‬ ‫با‬ ‫نود‬ ‫يا‬ ‫ورودی‬ ‫نود‬ ‫يک‬ ‫که‬ ‫وقتي‬Identity‫بصورت‬ ،‫شود‬ ‫مي‬ ‫استخراج‬ ‫ورودی‬ ‫پيام‬ ‫که‬8property‫درون‬
property folder‫دو‬ ‫شده‬ ‫استخراج‬ ‫صفات‬ ‫اين‬ .‫شود‬ ‫مي‬ ‫ذخيره‬ ‫بروکر‬ ‫در‬Identity،‫ميکنند‬ ‫ايجاد‬ ‫برورکر‬ ‫در‬source and Mapped.
Identity Token Type:
‫توکن‬ ‫نوع‬ ‫خصوصيت‬ ‫اين‬Identity‫مقدار‬ .‫ميکند‬ ‫تعيين‬ ‫باشد‬ ‫مي‬ ‫پيام‬ ‫در‬ ‫که‬ ‫را‬Transport Default‫عنوان‬ ‫به‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫نودهای‬ ‫برای‬‫م‬‫قدار‬
‫مقدار‬ ‫و‬ ‫است‬ ‫فرض‬ ‫پيش‬TokenCurrent‫نود‬ ‫برای‬SecurityPEP:
o Transport Default (on the security enabled input nodes)
o Current token (on the SecurityPEP node)
o Username
o Username and password
o X.509 Certificate
o SAML assertion
o Kerberos GSS v5 AP_REQ (on the SecurityPEP node)
o LTPA v2 token (on the SecurityPEP node)
o Universal WSSE token (on the SecurityPEP node)
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
**‫ورودی‬ ‫نود‬ ‫اگر‬MQInput‫فرض‬ ‫پيش‬ ‫مقدار‬ ، ‫باشد‬DefaultTransport‫يک‬Identity‫نوع‬ ‫از‬sernameU‫نوع‬ ‫از‬ ‫نود‬ ‫اگر‬ .‫ميکند‬ ‫ايجاد‬
HttpInput‫ف‬ ‫پيش‬ ‫مقدار‬ ‫اين‬ ، ‫باشد‬‫يک‬ ‫رض‬Identity‫نوع‬ ‫از‬passwordandUsername.‫ميکند‬ ‫توليد‬
**‫در‬‫نود‬SecurityPEP‫فرض‬ ‫پيش‬ ‫مقدار‬Current Token‫يک‬ ‫ايجاد‬ ‫جای‬ ‫به‬ ‫نود‬ ‫که‬ ‫شود‬ ‫مي‬ ‫باعث‬Identity‫ورو‬ ‫پيام‬ ‫روی‬ ‫از‬ ‫جديد‬، ‫دی‬
‫همان‬Identity‫در‬ ‫موجود‬property folder.‫کند‬ ‫استفاده‬ ‫را‬
cationIdentity Token Lo:
‫مي‬ ‫مشخص‬ ‫را‬ ‫مسيج‬ ‫در‬ ‫توکن‬ ‫موقعيت‬‫بصورت‬ ‫فيلد‬ ‫اين‬ ‫مقدار‬ .‫کند‬ESQL field reference, XPath expression, or string literal,‫تواند‬ ‫مي‬
.‫باشد‬
Identity Password Location:
‫موقعيت‬‫مي‬ ‫مشخص‬ ‫پيام‬ ‫در‬ ‫را‬ ‫عبور‬ ‫رمز‬.‫کند‬
Identity IssuedBy Location:
‫موقعيت‬issuer‫ر‬‫مي‬ ‫مشخص‬ ‫مسيج‬ ‫در‬ ‫ا‬.‫کند‬
**‫فيلدهای‬ ‫مقادير‬ ‫توانيد‬ ‫مي‬ ‫شما‬Identity‫در‬ ‫توانيد‬ ‫نمي‬ ‫را‬ ‫آن‬ ‫اما‬ ‫کنيد‬ ‫ويرايش‬ ‫را‬identity source‫ب‬ ،‫کنيد‬ ‫ذخيره‬‫را‬ ‫ان‬ ‫توانيد‬ ‫مي‬ ‫لکه‬
‫در‬IdentityMapped.‫کنيد‬ ‫ذخيره‬
‫ت‬‫ب‬Advanced‫نود‬SecurityPEP:‫باشد‬ ‫مي‬ ‫ذيل‬ ‫های‬ ‫صفت‬ ‫شامل‬
Property M C Default Description
WS-Trust Applies-
To Address
No Yes Not set
This property sets the Address for
the /wst:RequestSecurityToken/wsp:AppliesTo element
of the WS-Trust message. Use this property to provide the URI of the
service for which the security token is to be validated or issued.
This value can be specified as an ESQL field reference,
an XPath expression, or a string literal. If you use a string literal,
it must be enclosed in single quotes and must not contain a
period (.),
By default, this value is a URI for the fully qualified name of the
message flow, in the form uri:Brokername.Integration Server
Name.Message Flow Name.
WS-Trust Applies-
To Service
No Yes Not set
This property sets the Service Name for
the /wst:RequestSecurityToken/wsp:AppliesToelement
of the WS-Trust message. Use this property to provide the
Service Name of the service for which the security token is to be
validated or issued.
This value can be specified as an ESQL field reference,
an XPath expression, or a string literal. If you use a string literal,
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Property M C Default Description
it must be enclosed in single quotes and must not contain a
period (.),
By default, this value is left blank, which means that the WS-
Trust request does not include this element.
WS-Trust Applies-
To Port Type
No Yes Not set
This property sets the Port Type for
the /wst:RequestSecurityToken/wsp:AppliesTo element
of the WS-Trust message. Use this property to provide the Port Type
of the service for which the security token is to be validated or issued.
This value can be specified as an ESQL field reference,
an XPath expression, or a string literal. If you use a string literal,
it must be enclosed in single quotes and must not contain a
period (.),
By default, this value is left blank, which means that the WS-
Trust request does not include this element.
‫کردن‬ ‫مشخص‬security profile: ‫فلو‬ ‫مسیج‬ ‫برای‬
‫در‬ ،‫کند‬ ‫استفاده‬ ‫پروفايلي‬ ‫چه‬ ‫از‬ ‫فلو‬ ‫مسيج‬ ‫يک‬ ‫اينکه‬ ‫کردن‬ ‫مشخص‬ ‫برای‬IIB‫گزينه‬ ‫و‬ ‫کرده‬ ‫راست‬ ‫کليک‬ ‫نظر‬ ‫مورد‬ ‫بارفايل‬ ‫روی‬ ‫بر‬Open
with > Broker Archive Editor.‫ميکنيم‬ ‫انتخاب‬ ‫را‬‫تب‬ ‫شود‬ ‫مي‬ ‫باز‬ ‫روبرويش‬ ‫که‬ ‫ای‬ ‫صفحه‬ ‫در‬manage‫فلوی‬ ‫روی‬ ‫تب‬ ‫اين‬ ‫در‬ .‫ميکنيم‬ ‫انتخاب‬ ‫را‬
‫قسمت‬ ‫پايين‬ ‫در‬ ‫تا‬ ‫ميکنيم‬ ‫کليک‬ ‫نظر‬ ‫مورد‬properties‫گزينه‬ ،‫گزينه‬ ‫آخرين‬ ‫آن‬ ‫خواص‬ ‫ليست‬ ‫در‬ .‫دهد‬ ‫نشان‬ ‫را‬ ‫فلو‬ ‫آن‬ ‫به‬ ‫مربوط‬ ‫خواص‬security
profile name‫کنيم‬ ‫انتخاب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مورد‬ ‫پروفايل‬ ‫توانيم‬ ‫مي‬ ‫حال‬ ،‫باشد‬ ‫مي‬.‫کنيم‬ ‫مي‬ ‫ذخيره‬ ‫را‬ ‫تغييرات‬ ‫نهايت‬ ‫در‬ ،
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
**‫دستور‬ ‫با‬ ‫را‬ ‫نود‬ ‫يا‬ ‫فلو‬ ‫مسيج‬ ‫روی‬ ‫بر‬ ‫پروفايل‬ ‫کردن‬ ‫ست‬ ‫عمل‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫همچنين‬mqsiapplybaroverride: ‫مثال‬ .‫دهيد‬ ‫انجام‬
mqsiapplybaroverride -b barFileName -k applicationName -m
flowName#nodeName.securityProfileName=securityProfileName
Configuring authorization with LDAP:
‫که‬ ‫وقتي‬ .‫ايد‬ ‫کرده‬ ‫ايجاد‬ ‫را‬ ‫نياز‬ ‫مورد‬ ‫امنيتي‬ ‫پروفايل‬ ‫که‬ ‫شويد‬ ‫مطمئن‬ ‫بايد‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫از‬ ‫قبل‬LDAP‫کارب‬ ‫دسترسي‬ ‫سطح‬ ‫بررسي‬ ‫برای‬‫استفاده‬ ‫ر‬
.‫خير‬ ‫يا‬ ‫باشد‬ ‫مي‬ ‫شده‬ ‫اعالن‬ ‫گروه‬ ‫به‬ ‫متعلق‬ ‫ورودی‬ ‫کاربری‬ ‫آيا‬ ‫که‬ ‫کند‬ ‫گيری‬ ‫تصميم‬ ‫بايد‬ ‫بروکر‬ ،‫شود‬ ‫مي‬‫اگر‬LDAP‫که‬ ‫شده‬ ‫تنظيم‬ ‫طوری‬‫ب‬‫الگين‬ ‫دون‬
، ‫دهد‬ ‫نمي‬ ‫شما‬ ‫به‬ ‫را‬ ‫گروهها‬ ‫ليست‬ ‫در‬ ‫جستجو‬ ‫اجازه‬ ‫کردن‬‫با‬‫اجرای‬‫زير‬ ‫دستور‬‫در‬IIB‫شدن‬ ‫الگين‬ ‫امکان‬IIB‫به‬LDAP‫فرا‬ ‫را‬‫هم‬‫کني‬‫د‬:
mqsisetdbparms <BrokerName> -n ldap::LDAP -u username -p password
or
mqsisetdbparms <BrokerName> -n ldap::<servername> -u username -p password
‫به‬ ‫بصورت‬ ‫بروکر‬ ‫که‬ ‫بخواهيد‬ ‫اگر‬LDAP:‫ببريد‬ ‫بکار‬ ‫را‬ ‫زير‬ ‫دستور‬ ،‫شود‬ ‫متصل‬
mqsisetdbparms <BrokerName> -n ldap::<servername> -u anonymous -p password
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
Role-based security:
‫منابع‬ ‫مديريت‬ ‫برای‬IIB‫در‬ ‫وب‬ ‫تحت‬ ‫کاربری‬ ‫واسط‬ ‫يک‬ ‫از‬ ‫توانيد‬ ‫مي‬ ‫شما‬IIB‫بر‬ ‫عالوه‬ ‫جايگزين‬ ‫روش‬ ‫يک‬ ،‫روش‬ ‫اين‬ ،‫نماييد‬ ‫استفاده‬IBM
Integration Explorer‫منابع‬ ‫مديريت‬ ‫برای‬IIB.‫باشد‬ ‫مي‬‫توانيد‬ ‫مي‬ ‫شما‬‫به‬ ‫دسترسي‬IIB( ‫نقشهای‬ ‫تخصيص‬ ‫با‬ ‫را‬Role‫کاربرا‬ ‫به‬ ‫مشخصي‬ )‫ن‬
،‫وب‬ ‫تحت‬ ‫کاربری‬ ‫واسط‬.‫نماييد‬ ‫کنترل‬‫هر‬Role‫کاربر‬ ‫هر‬ ‫و‬ ‫است‬ ‫شده‬ ‫داده‬ ‫تخصيص‬ ‫آن‬ ‫به‬ ‫امنيتي‬ ‫مجوزهای‬ ‫يکسری‬ ‫که‬ ‫است‬ ‫سيستمي‬ ‫کاربر‬ ‫يک‬
‫يک‬ ‫با‬ ‫وب‬ ‫تحت‬Role‫ها‬ ‫مجوز‬ .‫شود‬ ‫مي‬ ‫ترکيب‬‫ی‬Role‫شدن‬ ‫مشخص‬ ‫برای‬‫کا‬ ‫دسترسي‬ ‫سطح‬‫که‬ ‫شود‬ ‫مشخص‬ ‫تا‬ ‫شوند‬ ‫مي‬ ‫بررسي‬ ‫وب‬ ‫تحت‬ ‫ربر‬
.‫خير‬ ‫يا‬ ‫دارد‬ ‫را‬ ‫مربوطه‬ ‫تسک‬ ‫اجرای‬ ‫مجوز‬ ‫کاربر‬‫وب‬ ‫تحت‬ ‫بخش‬ ‫يوزرهای‬ ‫مشخصي‬ ‫رولهای‬ ‫تعريف‬ ‫با‬IIB‫ها‬ ‫اپليکيشن‬ ‫يا‬ ‫ها‬ ‫سرور‬ ‫توانند‬ ‫مي‬‫فلوها‬ ‫يا‬
‫را‬Stop & start. ‫کنند‬
‫ادمين‬ ‫عنوان‬ ‫به‬IIB‫مناب‬ ‫به‬ ‫کاربر‬ ‫دسترسي‬ ‫ميزان‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫ع‬IIB‫را‬‫يک‬ ‫تخصيص‬ ‫طريق‬ ‫از‬Role‫کاربر‬ ‫يک‬ ‫به‬.‫نماييد‬ ‫تعيين‬‫عن‬ ‫به‬‫شما‬ ‫مثال‬ ‫وان‬
‫يک‬ ‫طريق‬ ‫از‬ ‫توانيد‬ ‫مي‬Role‫منابع‬ ‫ديدن‬ ‫اجازه‬ ‫کاربر‬ ‫به‬IIB‫مي‬ ‫شما‬ .‫بدهيد‬ ‫را‬ ‫آنها‬ ‫ويرايش‬ ‫اجازه‬ ‫ديگر‬ ‫رول‬ ‫يک‬ ‫طريق‬ ‫از‬ ‫و‬ ‫بدهيد‬ ‫را‬‫رول‬ ‫يک‬ ‫توانيد‬
‫کا‬ ‫هر‬ ‫اما‬ ‫بدهيد‬ ‫تخصيص‬ ‫مختلفي‬ ‫کاربرهای‬ ‫به‬ ‫را‬.‫باشد‬ ‫داشته‬ ‫رول‬ ‫يک‬ ‫تواند‬ ‫مي‬ ‫فقط‬ ‫ربر‬
‫ادمين‬IIB‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫تواند‬ ‫مي‬mqsiwebuseradmin‫اي‬ ‫وبي‬ ‫جديد‬ ‫کاربر‬ ‫يک‬‫ج‬‫را‬ ‫کاربر‬ ‫يک‬ ‫عبور‬ ‫رمز‬ ، ‫کند‬ ‫اد‬‫يک‬ ،‫دهد‬ ‫تغيير‬ ‫يا‬ ‫تعيين‬
‫را‬ ‫وب‬ ‫تحت‬ ‫يوزر‬‫يک‬ ‫يا‬ ‫و‬ ‫کند‬ ‫حذف‬Role.‫دهد‬ ‫تخصيص‬ ‫يوزر‬ ‫يک‬ ‫به‬ ‫را‬
‫خواهيد‬ ‫مي‬ ‫اگر‬administration security‫در‬ ‫را‬IIB:‫کنيد‬ ‫عمل‬ ‫ذيل‬ ‫روش‬ ‫به‬ ‫نماييد‬ ‫فعال‬
1)‫هر‬ ‫ازای‬ ‫به‬Role‫عام‬ ‫سيستم‬ ‫روی‬ ‫بر‬ ‫سيستمي‬ ‫يوزر‬ ‫ايجاد‬ ‫برای‬ ‫نماييد‬ ‫ايجاد‬ ‫سيستمي‬ ‫يوزر‬ ‫يک‬ ‫کنيد‬ ‫ايجاد‬ ‫خواهيد‬ ‫مي‬ ‫که‬‫يک‬ ‫خود‬ ‫ل‬‫ي‬‫وزر‬
‫دس‬ ‫دو‬ ‫به‬ ‫را‬ ‫خود‬ ‫يوزرهای‬ ‫که‬ ‫باشيد‬ ‫گرفته‬ ‫تصميم‬ ‫ممکن‬ ‫مثال‬ ‫عنوان‬ ‫به‬ ،‫نماييد‬ ‫ايجاد‬‫يک‬ ‫و‬ ‫وب‬ ‫يوزر‬ ‫دسته‬ ‫يک‬ ،‫نماييد‬ ‫تقسيم‬ ‫ته‬‫د‬‫يوزر‬ ‫سته‬
‫سيستمي‬ ‫يوزر‬ ‫دو‬ ‫کار‬ ‫اين‬ ‫برای‬ ،‫ادمين‬Ibmuser‫و‬Ibmadmin‫طبق‬ ‫بر‬ ‫يوزر‬ ‫دو‬ ‫اين‬ .‫نماييد‬ ‫ايجاد‬Role‫مي‬ ‫داده‬ ‫آنها‬ ‫به‬ ‫که‬ ‫هايي‬‫شود‬
.‫داشت‬ ‫خواهند‬ ‫مختلفي‬ ‫های‬ ‫تسک‬ ‫اجرای‬ ‫مجوز‬
2)‫مجوز‬ ‫خود‬ ‫شده‬ ‫ايجاد‬ ‫يوزرهای‬ ‫به‬authorization queues‫مجوز‬ .‫نماييد‬ ‫اعطا‬ ‫را‬authorization queues‫شامل‬
SYSTEM.BROKER.AUTH, SYSTEM.BROKER.AUTH.integrationServerName, SYSTEM.BROKER.DC.AUTH.‫باشد‬ ‫مي‬
:‫باشد‬ ‫مي‬ ‫ادمين‬ ‫يوزر‬ ‫يک‬ ‫برای‬ ‫استفاده‬ ‫مورد‬ ‫های‬ ‫مجوز‬ ‫ليست‬ ‫شامل‬ ‫زير‬ ‫جدول‬
Object Name Permissions
Queue manager
The queue manager associated with the
broker; for example, IB9QMGR Connect
Inquire
Queue SYSTEM.BROKER.DEPLOY.QUEUE Put
Queue SYSTEM.BROKER.DEPLOY.REPLY Get
Put
Queue SYSTEM.BROKER.AUTH
Inquire
Put
Set
Queue SYSTEM.BROKER.AUTH.EG
Inquire
Put
Set
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
3)‫ح‬‫توانيد‬ ‫مي‬ ‫ال‬administration security:‫نماييد‬ ‫فعال‬ ‫زير‬ ‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬
‫دستور‬ ‫از‬ ،‫ايد‬ ‫کرده‬ ‫ايجاد‬ ‫قبال‬ ‫را‬ ‫خود‬ ‫بروکر‬ ‫که‬ ‫حالتي‬ ‫در‬ )‫الف‬mqsicreatebroker:‫نماييد‬ ‫استفاده‬ ‫زير‬ ‫روش‬ ‫به‬
mqsichangebroker brokerName -s active
‫ه‬ ‫بروکر‬ ‫ايجاد‬ ‫حال‬ ‫در‬ ‫اگر‬ )‫ب‬:‫نماييد‬ ‫استفاده‬ ‫زير‬ ‫دستور‬ ‫از‬ ،‫ستيد‬
mqsicreatebroker brokerName -q brokerQueueManagerName -s active
4)‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬mqsiwebuseradmin‫يوزر‬‫نماييد‬ ‫ايجاد‬ ‫را‬ ‫خود‬ ‫وب‬ ‫های‬:
Syntax
mqsiwebuseradmin brokerSpec
'- -u -username-' '- -a -password-' '- -r -role-'
'- -w --timeoutSecs-' '- -v -- traceFileName -'
brokerSpec‫مقادير‬ ‫از‬ ‫يکي‬ ‫تواند‬ ‫مي‬ :brokerName،-n brokerFileName‫یا‬-i ipAddress, -p port, -q qMgr‫باشد‬.
-‫پارامتر‬i‫معني‬ ‫به‬IpAddress.‫باشد‬ ‫مي‬
-‫پارامتر‬p.‫باشد‬ ‫مي‬ ‫پورت‬ ‫معني‬ ‫به‬
-‫پارامتر‬q‫معني‬ ‫به‬managerqueue.‫باشد‬ ‫مي‬ ‫بروکر‬ ‫به‬ ‫مربوط‬
-‫پارامتر‬u‫معني‬ ‫به‬username.‫باشد‬ ‫مي‬
-‫پارامتر‬a.‫باشد‬ ‫مي‬ ‫پسورد‬ ‫معني‬ ‫به‬
-‫پارامتر‬r‫معني‬ ‫به‬Role.‫باشد‬ ‫مي‬
-‫پارامتر‬w‫زمان‬ ‫کردن‬ ‫مشخص‬ ‫برای‬timeout.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫دستور‬ ‫اجرای‬
-‫پارام‬‫تر‬v.‫کند‬ ‫مي‬ ‫ذخيره‬ ‫گيرد‬ ‫مي‬ ‫قرار‬ ‫پارامتر‬ ‫اين‬ ‫از‬ ‫بعد‬ ‫آن‬ ‫نام‬ ‫که‬ ‫مشخصي‬ ‫فايل‬ ‫يک‬ ‫در‬ ‫را‬ ‫الگ‬ ‫اطالعات‬
‫مثال‬:
Create a web user account and password and specify the associated role (system user account):
mqsiwebuseradmin IB9NODE -c -u webuser1 -r admin -a passw0rd
‫کلمه‬ ‫باال‬ ‫مثال‬ ‫در‬admin.‫است‬ ‫سيستمي‬ ‫يوزر‬ ‫دهنده‬ ‫نشان‬
Change the password for webuser1:
mqsiwebuseradmin IB9NODE -m -u webuser1 -a n3wpass
Delete the web user account for webuser1:
mqsiwebuseradmin IB9NODE -d -u webuser1
‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid
WS-Security:
WS-Security‫سطح‬ ‫در‬ ‫استاندارد‬ ‫يک‬message‫های‬ ‫پيام‬ ‫کردن‬ ‫امن‬ ‫برای‬ ‫که‬ ‫باشد‬ ‫مي‬Soap‫روشهای‬ ‫طريق‬ ‫از‬XML digital signature,
confidentiality through XML encryption, and credential propagation.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫امنيتي‬ ‫های‬ ‫توکن‬ ‫بوسيله‬
WS-Security‫پيام‬ ‫يک‬ ‫انتهای‬ ‫به‬ ‫و‬ ‫کرده‬ ‫کد‬ ‫مختلف‬ ‫های‬ ‫مکانيزم‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫مختلف‬ ‫باينری‬ ‫های‬ ‫توکن‬ ‫توان‬ ‫مي‬ ‫چگونه‬ ‫که‬ ‫دهد‬ ‫مي‬ ‫توضيح‬
Soap‫ا‬ ‫حاضر‬ ‫حال‬ ‫در‬ .‫کرد‬ ‫اضافه‬:‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫زير‬ ‫توکنهای‬ ‫ز‬
 Username tokens
 X.509 certificates
 SAML assertions
 Kerberos tickets
 LTPA binary tokens
Resources:
IBM Integration Bus Version 9.0
http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.msgbroker.helphome.doc/help_home
_msgbroker.htm

More Related Content

What's hot (20)

PPT
Case Study 1: Linux
Munazza-Mah-Jabeen
 
PPTX
Chapter 15
Ali Broumandnia
 
PPTX
Cloud computing virtualization
Ayaz Shahid
 
PPTX
Web Services in Cloud Computing.pptx
ssuser403d87
 
PPT
Software Processes
Usman Bin Saad
 
PPTX
C# Private assembly
Prem Kumar Badri
 
PPTX
Cloud computing
pgayatrinaidu
 
PDF
Ppl for students unit 1,2 and 3
Akshay Nagpurkar
 
PPTX
Apache web server
zrstoppe
 
PPTX
Introduction to cloud computing
Jithin Parakka
 
PPT
System models for distributed and cloud computing
purplesea
 
PPTX
User and groups administrator
Aisha Talat
 
PPT
Base de Datos: introduccion a sistemas de base de datos
Yefri Altamirano
 
PPT
Sistemas de Respaldo de Informacion
maxalonzohuaman
 
PDF
cloud virtualization technology
Ravindra Dastikop
 
PPTX
Disk management
university of Gujrat, pakistan
 
PPT
Intro Ch 08 B
ali00061
 
PPTX
RAID-Tolerancia a Fallos
RaGaZoMe
 
PPTX
Linux Server vs Windows Server
KongChunLeong1
 
Case Study 1: Linux
Munazza-Mah-Jabeen
 
Chapter 15
Ali Broumandnia
 
Cloud computing virtualization
Ayaz Shahid
 
Web Services in Cloud Computing.pptx
ssuser403d87
 
Software Processes
Usman Bin Saad
 
C# Private assembly
Prem Kumar Badri
 
Cloud computing
pgayatrinaidu
 
Ppl for students unit 1,2 and 3
Akshay Nagpurkar
 
Apache web server
zrstoppe
 
Introduction to cloud computing
Jithin Parakka
 
System models for distributed and cloud computing
purplesea
 
User and groups administrator
Aisha Talat
 
Base de Datos: introduccion a sistemas de base de datos
Yefri Altamirano
 
Sistemas de Respaldo de Informacion
maxalonzohuaman
 
cloud virtualization technology
Ravindra Dastikop
 
Intro Ch 08 B
ali00061
 
RAID-Tolerancia a Fallos
RaGaZoMe
 
Linux Server vs Windows Server
KongChunLeong1
 

More from Hamid Ghorbani (16)

PDF
Spring aop
Hamid Ghorbani
 
PDF
Spring boot jpa
Hamid Ghorbani
 
PDF
Spring mvc
Hamid Ghorbani
 
PDF
Payment Tokenization
Hamid Ghorbani
 
PDF
Reactjs Basics
Hamid Ghorbani
 
PDF
Rest web service
Hamid Ghorbani
 
PDF
Java inheritance
Hamid Ghorbani
 
PDF
Java I/o streams
Hamid Ghorbani
 
PDF
Java Threads
Hamid Ghorbani
 
PDF
Java Reflection
Hamid Ghorbani
 
PDF
Java Generics
Hamid Ghorbani
 
PDF
Java collections
Hamid Ghorbani
 
PDF
Java programming basics
Hamid Ghorbani
 
PDF
ESB Overview
Hamid Ghorbani
 
PDF
Spring security configuration
Hamid Ghorbani
 
PDF
SOA & ESB in banking systems(Persian language)
Hamid Ghorbani
 
Spring aop
Hamid Ghorbani
 
Spring boot jpa
Hamid Ghorbani
 
Spring mvc
Hamid Ghorbani
 
Payment Tokenization
Hamid Ghorbani
 
Reactjs Basics
Hamid Ghorbani
 
Rest web service
Hamid Ghorbani
 
Java inheritance
Hamid Ghorbani
 
Java I/o streams
Hamid Ghorbani
 
Java Threads
Hamid Ghorbani
 
Java Reflection
Hamid Ghorbani
 
Java Generics
Hamid Ghorbani
 
Java collections
Hamid Ghorbani
 
Java programming basics
Hamid Ghorbani
 
ESB Overview
Hamid Ghorbani
 
Spring security configuration
Hamid Ghorbani
 
SOA & ESB in banking systems(Persian language)
Hamid Ghorbani
 
Ad

Recently uploaded (20)

PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Ad

IBM Integeration Bus(IIB) Fundamentals

  • 1. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid IBM Integration Bus ‫ند‬‫کن‬‫ه‬‫ی‬‫ته‬:‫ه‬ ‫ی‬‫ن‬‫ا‬‫ب‬‫ر‬‫ق‬‫ید‬‫حم‬ ‫ش‬‫ی‬‫وریا‬2 ‫ال‬‫س‬1396
  • 2. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid point-to-point Architecture: Integrating IT systems has traditionally been a complex and arduous task. If you’ve ever tried to get more than a few IT systems to communicate with each other, you’re familiar with all the problems involved. Obscure, poorly documented point-to-point connections (or interfaces), involving a bewildering collection of formats, protocols, and technologies, make up an infrastructure that only the most courageous dare tamper with. Hub and Spoke Architecture: Some years back, a way of dealing with this problem emerged in the shape of an architectural mode called Hub and Spoke. This architecture was built around the notion of having one central piece of software (the Hub) deal with all the complexities of inter-system communication. A new class of software, called Message Brokers, entered the stage, providing the technology to build those hubs. Enterprise service bus (ESB): An ESB is fundamentally an architecture. It is a set of rules and principles for integrating numerous applications together over a bus-like infrastructure. ESB products enable users to build this type of architecture, but vary in the way that they do it and the capabilities that they offer. The core concept of the ESB architecture is that you integrate different applications by putting a communication bus between them and then enable each application to talk to the bus. This decouples systems from each other, allowing them to communicate without dependency on or knowledge of other systems on the bus.
  • 3. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ESB‫برگرفته‬‫واژه‬ ‫از‬ ‫شده‬‫های‬Enterprise Service Bus‫يک‬ ،‫افزاری‬ ‫نرم‬ ‫معماری‬‫(مجموعه‬‫اهداف‬ ‫و‬ ‫قوانين‬ ‫از‬ ‫ای‬)‫برای‬ ‫سازی‬ ‫يکپارچه‬‫بين‬ ‫آسان‬ ‫و‬ ‫سهل‬ ‫ارتباط‬ ‫امکان‬ ‫ايجاد‬ ‫و‬‫يک‬ ‫حول‬ ‫سازماني‬ ‫افزارهای‬ ‫نرم‬ ‫از‬ ‫ای‬ ‫مجموعه‬‫گذرگاه‬.‫است‬‫نرم‬ ‫اينکه‬ ‫بجای‬ ‫تعامل‬ ‫يکديگر‬ ‫با‬ ‫مستقيما‬ ‫ها‬ ‫افزار‬.)‫باال‬ ‫بود(شکل‬ ‫خواهند‬ ‫تعامل‬ ‫در‬ ‫گذرگاه‬ ‫اين‬ ‫با‬ ، ‫باشند‬ ‫داشته‬ESB‫ابزاری‬‫برای‬‫کردن‬ ‫يکپارچه‬‫و‬ ‫اطالعات‬ ‫جريان‬ ‫مديريت‬‫نرم‬ ‫مابين‬‫سازماني‬ ‫افزارهای‬‫مي‬‫باش‬‫ن‬.‫د‬‫افزار‬ ‫ميان‬ ‫يک‬ESB‫سرويس‬ ‫تمامي‬ ‫مخزن‬ ‫يک‬ ‫مثابه‬ ‫به‬‫ارتباطي‬ ‫های‬ ‫نرم‬‫مي‬ ‫نگهداری‬ ‫خود‬ ‫در‬ ‫را‬ ‫افزارها‬‫نياز‬ ‫هرگاه‬ ‫و‬ ‫کند‬‫باشد‬ ‫اطالعاتي‬ ‫سيستم‬ ‫مختلف‬ ‫اجزای‬ ‫از‬ ‫اطالعاتي‬ ‫به‬،‫در‬ ‫را‬ ‫نياز‬ ‫مورد‬ ‫سرويس‬ ‫مي‬ ‫قرار‬ ‫کننده‬ ‫درخواست‬ ‫اختيار‬‫دهد‬. ESB Core Capabilities:  Rich set of Adapters: (‫ديگر‬ ‫انواع‬ ‫به‬ ‫ها‬ ‫داده‬ ‫تبديل‬ ‫برای‬ ‫مختلف‬ ‫های‬ ‫آداپتور‬ ‫از‬ ‫ای‬ ‫)مجموعه‬  Message Transformation: Transform an incoming message into several outgoing formats and structure for example: XML to Json, XML to Java objects etc. ( ‫پروتکل‬ ‫تبديل‬ ‫و‬ ‫پشتيباني‬‫ي‬ ‫به‬ ‫مختلف‬ ‫های‬‫کديگر‬ )  Reliable Message Delivery: ‫اطمينان‬ ‫قابل‬ ‫رسان‬ ‫پيام‬ ‫يک‬) )  Contetnt-based Routing: route, filter, aggregate, and re-sequence messages according to specific business needs between services (‫بيزينسي‬ ‫نيازهای‬ ‫اساس‬ ‫بر‬ ‫پيامها‬ ‫مسير‬ ‫کردن‬ ‫تعيين‬)  Security: Protect services from unauthorized access. (‫کار‬ ‫مراحل‬ ‫کليه‬ ‫امنيت‬)  Business activity monitoring(BAM): Monitor the activity and state of individual business processes, or the entire system, and key performance indicators (‫بيزينس‬ ‫يک‬ ‫به‬ ‫مربوط‬ ‫مختلف‬ ‫های‬ ‫پروسس‬ ‫کارايي‬ ‫و‬ ‫وضعيت‬ ‫کردن‬ ‫مانيتور‬) ESB products: ‫عنوان‬ ‫به‬ ‫زيادی‬ ‫محصوالت‬ ‫گذشته‬ ‫سالهای‬ ‫طول‬ ‫در‬ESB‫ان‬ ‫شده‬ ‫ارائه‬ ‫بازار‬ ‫به‬‫مختلف‬ ‫امکانات‬ ‫دارای‬ ‫يک‬ ‫هر‬ ‫که‬ ‫د‬‫مي‬ ‫متفاوتي‬ ‫و‬ ‫افزار‬ ‫ميان‬ ‫يک‬ ‫ويژگيهای‬ ‫دقيق‬ ‫تعريف‬ ‫برای‬ ‫استانداردی‬ ‫متاسفانه‬ .‫باشند‬ESB‫قبل‬ ‫رو‬ ‫اين‬ ‫از‬ ‫و‬ ‫ندارد‬ ‫وجود‬‫از‬ ‫هريک‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫از‬ ‫دقيقا‬ ‫که‬ ‫بدانيد‬ ‫بايد‬ ‫محصوالت‬ESB‫انتخ‬ ‫را‬ ‫مربوطه‬ ‫محصول‬ ‫آن‬ ‫با‬ ‫متناسب‬ ‫و‬ ‫داريد‬ ‫انتظاراتي‬ ‫چه‬‫نمايي‬ ‫اب‬‫که‬ ‫محصوالتي‬ ‫معموال‬ .‫د‬ ‫عنوان‬ ‫به‬ESB‫سه‬ ‫در‬ ‫توان‬ ‫مي‬ ‫را‬ ‫شوند‬ ‫مي‬ ‫عرضه‬ ‫باز‬ ‫به‬‫سطح‬‫مختلف‬‫دسته‬‫مي‬ ‫مشاهده‬ ‫را‬ ‫آنها‬ ‫زير‬ ‫شکل‬ ‫در‬ ‫که‬ ‫کرد‬ ‫بندی‬‫نماييد‬:
  • 4. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 1)‫ابزارهاي‬‫یکپارچه‬‫سازي‬)FrameworkIntegration(: ‫اول‬ ‫سطح‬ESB‫ها‬،‫افزارهايي‬ ‫ميان‬‫يکپارچ‬ ‫برای‬ ‫صرفا‬ ‫که‬ ‫هستند‬‫ه‬‫نرم‬ ‫سازی‬‫مي‬ ‫استفاده‬ ‫سازمان‬ ‫افزارهای‬‫آنها‬ ‫به‬ ً‫ا‬‫اصطالح‬ ‫و‬ ‫شوند‬ Integration Framework‫مي‬‫گويند‬.‫که‬ ‫دارد‬ ‫وجود‬ ‫مختلفي‬ ‫استانداردهای‬ ‫سازی‬ ‫يکپارچه‬ ‫برای‬‫از‬Splitter‫و‬Content base routers‫مي‬‫نمونه‬ ‫بعنوان‬ ‫توان‬‫از‬ ‫هايي‬‫اين‬‫يکپارچ‬ ‫استاندارد‬ ‫الگوهای‬‫ه‬.‫برد‬ ‫نام‬ ‫سازی‬Nservice Bus،Apache Camel‫و‬Spring Integration‫نمونه‬‫اين‬ ‫از‬ ‫هايي‬.‫باشند‬ ‫مي‬ ‫ابزارها‬NService Bus‫محيط‬ ‫در‬ ‫استفاده‬ ‫بمنظور‬.Net‫باشد‬ ‫مي‬‫و‬Apache Camel ‫و‬Spring Integration‫محيط‬ ‫در‬ ‫استفاده‬ ‫بمنظور‬Java‫مي‬‫بصورت‬ ‫که‬ ‫دستوراتي‬ .‫باشند‬API‫دارند‬ ‫وجود‬ ‫ابزارها‬ ‫اين‬ ‫در‬‫برنامه‬ ‫به‬ ‫مي‬ ‫اجازه‬ ‫نويسان‬‫نرم‬ ‫فهم‬ ‫قابل‬ ‫و‬ ‫شفاف‬ ‫بصورت‬ ‫بتوانند‬ ‫تا‬ ‫دهد‬‫ي‬ ‫يکديگر‬ ‫با‬ ‫را‬ ‫افزارها‬‫نمايند‬ ‫کپارچه‬.‫اين‬ ‫توسط‬،‫ابزارها‬‫از‬ ‫بسياری‬ ‫فعاليت‬‫پروژه‬ ‫موفقيت‬ ‫ضريب‬ ‫و‬ ‫شده‬ ‫خالصه‬ ‫تيمي‬ ‫های‬‫مي‬ ‫افزايش‬‫يابد‬. 2)‫گذرگاههاي‬‫سرویس‬‫سازماني‬(ESB:)‫ها‬ ‫دوم‬ ‫سطح‬‫سطح‬ ،‫گستر‬‫ده‬‫از‬ ‫تری‬Integration Framework‫آن‬ ‫به‬ ‫که‬ ‫هستند‬ ‫ها‬«‫سا‬ ‫خدمات‬ ‫اتوبوس‬‫زمان‬»‫همان‬ ‫يا‬ESB ‫مي‬ ‫گفته‬‫شود‬.‫برای‬ ‫مناسبي‬ ‫امکانات‬ ‫ابزارها‬ ‫از‬ ‫گروه‬ ‫اين‬Develop( ‫مديريت‬ ‫و‬ ‫مانيتورينگ‬ ‫و‬Administration‫زمان‬ ‫در‬ ) ‫و‬ ‫کنند‬ ‫مي‬ ‫فراهم‬ ‫را‬ ‫اجرا‬‫ب‬ ‫را‬ ‫کارآمدی‬ ‫بسيار‬ ‫بستر‬ ‫آنها‬ ‫گرافيکي‬ ‫محيط‬‫پياده‬ ‫رای‬‫يکپارچه‬ ‫مختلف‬ ‫سناريوهای‬ ‫سازی‬‫فراهم‬ ‫سازی‬ ‫مي‬‫آورد‬. ESB‫بريکپارچه‬ ‫عالوه‬ ‫قدرتمندی‬ ‫ابزارهای‬ ‫ها‬‫انتشار‬ ‫برای‬ ،‫سازی‬(Deployment)‫مديريت‬ ،(Administration)،‫پايش‬ ‫و‬ ‫پياده‬ ‫برای‬ ‫را‬ ‫کارآمدی‬ ‫بسيار‬ ‫بستر‬ ‫آنها‬ ‫گرافيکي‬ ‫محيط‬ .‫دارند‬ ‫اجرا‬ ‫زمان‬ ‫در‬‫مختلف‬ ‫سناريوهای‬ ‫سازی‬‫يکپارچه‬‫فراهم‬ ‫سازی‬ ‫مي‬‫ابزارهای‬ .‫آورد‬ESB‫فوق‬ ‫مزيت‬‫العاده‬‫پيچيدگي‬ ‫رفع‬ ‫و‬ ‫هزينه‬ ‫کاهش‬ ‫درخصوص‬ ‫را‬ ‫ای‬‫يکپارچه‬ ‫های‬‫مي‬ ‫فراهم‬ ‫سازی‬‫آورد‬. 3)‫مجموعه‬‫کامل‬‫یکپارچه‬‫سازي‬)SuiteIntegration(: ‫سوم‬ ‫سطح‬‫ک‬ ‫ابزارها‬‫آن‬ ‫به‬ ‫ه‬Integration Suite‫مي‬‫از‬ ‫ترکيبي‬ ،‫گويند‬ESB‫و‬ ‫ها‬BPMS‫يکپارچه‬ ‫بر‬ ‫عالوه‬ ‫که‬ ‫هستند‬ ‫ها‬‫سازی‬ ‫نرم‬‫نرم‬ ‫با‬ ‫نيز‬ ‫را‬ ‫سازمان‬ ‫فرآيندهای‬ ‫کردن‬ ‫يکپارچه‬ ‫قابليت‬ ،‫سازمان‬ ‫افزارهای‬‫مي‬ ‫فراهم‬ ‫افزارها‬‫يک‬ ‫ميتوان‬ ،‫سازمان‬ ‫در‬ ‫بطوريکه‬ ‫کند‬ ‫نمود‬ ‫ايجاد‬ ‫کامل‬ ‫يکپارچگي‬.‫برنامه‬ ‫و‬ ‫فرآيندها‬ ،‫افراد‬ ‫از‬ ‫سازمان‬ ‫اطالعات‬ ‫فناوری‬ ‫ساختار‬‫تشکي‬ ‫کاربردی‬ ‫های‬‫بنابراين‬ ،‫است‬ ‫شده‬ ‫ل‬ ‫يکپارچه‬ ‫ايجاد‬ ‫برای‬‫برقرار‬ ‫ارتباط‬ ‫مناسبي‬ ‫نحو‬ ‫به‬ ‫يکديگر‬ ‫با‬ ‫شده‬ ‫مطرح‬ ‫عناصر‬ ‫کليه‬ ‫بايد‬ ‫سازمان‬ ‫سطح‬ ‫در‬ ‫کامل‬ ‫سازی‬‫ن‬.‫مايند‬ ‫بخش‬ ‫در‬ ‫که‬ ‫همانگونه‬ESB،‫شد‬ ‫مطرح‬ESB‫برنامه‬ ‫سطح‬ ‫در‬ ‫يکپارچگي‬ ‫قابليت‬ ‫تنها‬ ‫ها‬‫ايجاد‬ ‫برای‬ ‫اما‬ ‫داشتند‬ ‫را‬ ‫کاربردی‬ ‫های‬ ‫بي‬ ‫يکپارچگي‬‫برنامه‬ ‫و‬ ‫فرآيندها‬ ،‫افراد‬ ‫از‬ ‫اعم‬ ‫سازمان‬ ‫در‬ ‫موجود‬ ‫عناصر‬ ‫تمام‬ ‫ن‬‫قابليت‬ ‫از‬ ‫تا‬ ‫ضروريست‬ ‫کاربردی‬ ‫های‬‫سيستم‬ ‫های‬‫های‬ BPM‫کنار‬ ‫در‬ ‫نيز‬ESB‫فعاليت‬ ‫بکارگيری‬ ‫با‬ ‫تا‬ ‫برد‬ ‫بهره‬ ‫ها‬‫سيستم‬ ‫اين‬ ‫های‬‫سازمان‬ ‫سطح‬ ‫در‬ ‫را‬ ‫کامل‬ ‫يکپارچگي‬ ‫يکديگر‬ ‫کنار‬ ‫در‬ ‫ها‬ ‫نمود‬ ‫ايجاد‬. ‫سيستم‬ ،‫گوياتر‬ ‫بعبارت‬‫های‬BPM‫مي‬ ‫متصل‬ ‫يکديگر‬ ‫به‬ ‫را‬ ‫افراد‬ ‫و‬ ‫فرآيندها‬ ،‫برنامه‬ ‫و‬ ‫کند‬‫تنگاتنگ‬ ‫ارتباط‬ ‫طريق‬ ‫از‬ ‫نيز‬ ‫کاربردی‬ ‫های‬ BPM‫و‬ESB‫مي‬ ‫متصل‬ ‫فرآيندها‬ ‫و‬ ‫افراد‬ ‫به‬‫از‬ ‫انکارناپذير‬ ‫نيازهای‬ ‫بدليل‬ ‫که‬ ‫دنيا‬ ‫بزرگ‬ ‫شرکتهای‬ ‫که‬ ‫روست‬ ‫اين‬ ‫از‬ .‫شوند‬ ‫سيستم‬‫مي‬ ‫استفاده‬ ‫متفاوت‬ ‫های‬‫جامع‬ ‫سطح‬ ‫در‬ ،‫نمايند‬‫مي‬ ‫بهره‬ ‫آن‬ ‫مزايای‬ ‫از‬ ‫و‬ ‫هستند‬ ‫يکپارچه‬ ‫ي‬‫برند‬.
  • 5. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ESB Suite Components: An Enterprise Service Bus contains the following components:  ESB Server: The ESB Server is the runtime server which listens on the control topic for updates from the ESB Metadata Server and updates its cache.  ESB Administrative Control: The ESB Admin Control panel will provide a Web-based interface for managing, administering, and monitoring services that you have registered with the ESB Metadata Server.  ESB Metadata Server: The database that holds your ESB metadata such as schemas, transformations, and routing rules. The ESB Metadata Server is the server to which you register the ESB services that you have designed using Developer IDE and configured using ESB Control.  Developer IDE: Usually a graphical and user-friendly way to model, edit, and design the services that comprise an Oracle Enterprise Service Bus system.  Commercial o Talend Enterprise ESB o IBM Integration Bus o IBM WebSphere ESB o Microsoft BizTalk Server o Windows Azure Service Bus o Oracle Enterprise Service Bus (BEA Logic) o Mule ESB (Enterprise Edition)  Open-source o Apache Camel o JBoss ESB o NetKernel o Petals ESB o Spring Integration o Open ESB o WSO2 ESB o Mule ESB (Community Edition) SOA & ESB : ‫معماری‬SOA‫اشاره‬ ‫موضوع‬ ‫اين‬ ‫به‬‫شکل‬ ‫به‬ ‫بايد‬ ‫سازمان‬ ‫يک‬ ‫افزاری‬ ‫نرم‬ ‫محصوالت‬ ‫طراحي‬ ‫که‬ ‫کند‬ ‫مي‬‫م‬ ‫سرويس‬‫حور‬‫نظر‬ ‫در‬ ‫آنکه‬ ‫حال‬ ،‫شود‬ ‫گرفته‬ESB‫به‬‫افزارها‬ ‫نرم‬ ‫اين‬ ‫بين‬ ‫ارتباط‬ ‫برقراری‬ ‫نحوه‬‫روش‬ ‫به‬ ‫که‬ ‫سازمان‬ ‫ی‬SOA‫شده‬ ‫طراحي‬‫ا‬.‫کند‬ ‫مي‬ ‫اشاره‬ ،‫ند‬
  • 6. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid IIB (IBM Integration Bus): IIB (formerly known as WebSphere Message Broker) is IBM's integration broker from the WebSphere product family that allows business information to flow between disparate applications across multiple hardware and software platforms. The product is an Enterprise Service Bus supplying a communication channel between applications and services in a service-oriented architecture. IBM Integration Bus provides capabilities to build solutions needed to support diverse integration requirements through a set of connectors to a range of data sources, including packaged applications, files, mobile devices, messaging systems, and databases. IIB‫نام‬ ‫با‬ ‫گذشته‬ ‫در‬ ‫که‬WebSphere Message Broker‫خانواده‬ ‫محصوالت‬ ‫از‬ ‫یکی‬ ‫شده‬ ‫می‬ ‫شناخته‬WebSphere‫مربوط‬ ‫به‬IBM.‫شود‬ ‫منتقل‬ ‫مختلف‬ ‫افزارهای‬ ‫سخت‬ ‫و‬ ‫ها‬ ‫اپلیکشن‬ ‫بین‬ ‫بزینسی‬ ‫اطاعات‬ ‫که‬ ‫باشد‬ ‫می‬IIB‫مجموعه‬ ‫طریق‬ ‫از‬‫ا‬‫کانکتور‬ ‫از‬ ‫ی‬ ‫با‬ ‫کار‬ ‫برای‬ ‫که‬ ‫امکاناتی‬ ‫و‬ ‫مختلف‬ ‫های‬Data source... ‫و‬ ‫موبایل‬ ‫مختلف‬ ‫دستگاههای‬ ،‫فایلها‬ ،‫ها‬ ‫دیتابیس‬ ،‫ها‬‫توا‬ ‫می‬ ‫دارد‬‫نرم‬ ‫ند‬ .‫کند‬ ‫یکپارچه‬ ‫باهم‬ ‫را‬ ‫سازمان‬ ‫یک‬ ‫مختلف‬ ‫افزارهای‬  Provides endpoints and the ability to connect to other endpoints Off-the-shelf applications, services, web apps, devices, appliances, custom built software…  Protocols and Message Formats Protocols - e.g. MQ, TCP/IP, HTTP, File system, FTP, SMTP, POP3 etc. Message Formats - e.g. Binary (C/COBOL), XML, Industry (SWIFT, EDI, HL7), User-defined  Mediation Patterns Route, Transform, Enrich, Filter, Monitor, Distribute, Decompose, Correlate, Fire and Forget, Request/Reply, Publish/Subscribe, Aggregation, Fan-in, Complex Event Processing…
  • 7. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫های‬ ‫ورژن‬ ‫انواع‬IIB: IIB prerequisites:  IBM MQ –Optional on distributed systems for most applications–Required on z/OS and for the use of some IBM Integration Bus features  Java 7.1 on all platforms Supported software:  Supports access to databases: DB2, Oracle, Sybase, SQL Server, Informix, solid DB Open Driver Manager support enables new ODBC databases to be accessed JDBC Type 4 for popular databases  Supports access to message-oriented middleware: IBM MQ 7.0.1, 7.1, 7.5, and 8.0–JMS 1.2 and 2.0  Includes access to ERP systems: SAP, Siebel, PeopleSoft, and JD Edwards ERP(Enterprise resource planning)‫برنامه‬‫سازمانی‬ ‫منابع‬ ‫ریزی‬،‫فعالیت‬ ‫از‬ ‫وسیعی‬ ‫طیف‬ ‫شامل‬‫که‬ ‫است‬ ‫مختلفی‬ ‫های‬ ‫یک‬ ‫عملکرد‬ ‫بهبود‬ ‫به‬‫سازمان‬‫می‬ ‫منتهی‬‫شود‬‫داده‬ ‫تمام‬ ‫و‬‫سیستم‬ ‫یک‬ ‫در‬ ‫را‬ ‫سازمان‬ ‫یک‬ ‫فرایندهای‬ ‫و‬ ‫ها‬‫نرم‬‫یک‬ ‫قالب‬ ‫در‬ ‫و‬ ‫افزاری‬ ‫می‬ ‫مدیریت‬ ‫دقیق‬ ‫و‬ ‫منظم‬ ،‫پیوسته‬ ‫بصورت‬ ‫اطالعاتی‬ ‫بانک‬‫نماید‬.
  • 8. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫محیط‬IIB: ‫اجرای‬ ‫با‬IIB‫ش‬ ‫به‬ ‫محیطی‬ ‫با‬:‫شویم‬ ‫می‬ ‫روبرو‬ ‫زیر‬ ‫کل‬ Message flows: A message flow is a sequence of processing steps that run in an integration node when an input message is received. An integration node is a set of execution processes that host one or more message flows to route, transform, and enrich in-flight messages. You can configure message flows to use one or both of the supported communication models, point-to-point and publish/subscribe. ‫از‬ ‫توان‬ ‫مي‬ ،‫فلو‬ ‫مسيج‬ ‫يک‬ ‫براي‬ .‫شود‬ ‫مي‬ ‫اجرا‬ ‫ورودي‬ ‫ديتاي‬ ‫روي‬ ‫بر‬ ‫که‬ ‫است‬ ‫مراحلي‬ ‫از‬ ‫اي‬ ‫سلسله‬ ‫فلو‬ ‫مسيج‬ ‫يک‬‫مدل‬ ‫دو‬ ‫ارتباطي‬point-to-point & publish/subscribe.‫کرد‬ ‫استفاده‬
  • 9. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ***‫در‬ ‫ها‬ ‫فلو‬ ‫سازي‬ ‫پياده‬ ‫براي‬IIB‫اين‬ ‫پلت‬ ‫ذيل‬ ‫شکل‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫هايي‬ )‫کامپوننت(نود‬ ‫يکسري‬:‫دهد‬ ‫مي‬ ‫نشان‬ ‫را‬ ‫نودها‬
  • 10. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫با‬ ‫کار‬ ‫شروع‬IIB: ‫بار‬ ‫اولین‬ ‫برای‬ ‫که‬ ‫وقتی‬IIB‫کنیم‬ ‫می‬ ‫اجرا‬ ‫را‬،‫صف‬ ‫با‬. ‫شویم‬ ‫می‬ ‫روبرو‬ ‫زیر‬ ‫شکل‬ ‫به‬ ‫ای‬ ‫حه‬ 1)‫روی‬ ‫بر‬ ‫را‬ ‫تنظیماتی‬ ‫باید‬ ‫ابتدا‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫برای‬IIB‫اجرای‬ ‫از‬ ‫بعد‬ .‫دهیم‬ ‫انجام‬Integration Toolkit‫صفحه‬ ‫اگر‬ welcome‫صفحه‬ ‫توانیم‬ ‫می‬ ،‫نشد‬ ‫ظاهر‬ ‫باال‬welcome‫منوی‬ ‫از‬ ‫را‬Help‫سپس‬ .‫کنیم‬ ‫انتخاب‬‫ص‬ ‫در‬‫فحه‬‫زیر‬‫گزینه‬Get Started:‫شود‬ ‫می‬ ‫ظاهر‬ ‫زیر‬ ‫صفحه‬ ، ‫کنیم‬ ‫می‬ ‫انتخاب‬ ‫را‬ 2)‫در‬‫این‬‫گزینه‬ ‫صفحه‬Create default configuration‫از‬ ‫صفحه‬ ‫یک‬ ،‫کنیم‬ ‫می‬ ‫انتخاب‬ ‫را‬Help‫شم‬ ‫به‬ ‫که‬ ‫شود‬ ‫می‬ ‫باز‬‫ا‬ ‫ویزارد‬ ‫قسمت‬ ‫از‬ ‫توانید‬ ‫می‬ ‫که‬ ‫گوید‬ ‫می‬:‫دهید‬ ‫انجام‬ ‫را‬ ‫فرض‬ ‫پیش‬ ‫تنظیمات‬
  • 11. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 3)‫صفحه‬ ‫این‬ ‫در‬‫گزینه‬ion wizardStart the Default Configurat‫کنی‬ ‫می‬ ‫انتخاب‬ ‫را‬‫م‬. ‫گزینه‬Default Configuration: ‫باشد‬ ‫می‬ ‫زیر‬ ‫کامپوننت‬ ‫دو‬ ‫شامل‬  integration node to process application messages.  queue manager to host the integration node. 4)‫با‬‫شود‬ ‫می‬ ‫آغاز‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫کامپوننت‬ ‫دو‬ ‫این‬ ‫نصب‬ ‫باال‬ ‫گزینه‬ ‫انتخاب‬.‫دکمه‬ ‫فشردن‬ ‫باز‬Next‫تنظیمات‬ ‫کار‬Queue Manger‫و‬integration Node‫شود‬ ‫می‬ ‫انجام‬ ‫دو‬ ‫این‬ ‫بین‬ ‫اتصال‬ ‫برقراری‬ ‫و‬،‫ا‬ ‫از‬ ‫بعد‬‫ن‬‫فرض‬ ‫پيش‬ ‫تنظيمات‬ ‫موفق‬ ‫جام‬، ‫به‬ ‫متصل‬ ‫نود‬MQ‫شکل‬ ‫به‬‫زیر‬‫است‬ ‫شده‬ ‫ایجاد‬: All actions are applied under account: LocalSystem Queue manager name: IB9QMGR Queue manager port: 2414 Default integration node details Integration node name: IB9NODE Queue manager name: IB9QMGR ‫به‬ ‫اگر‬websphere MQ‫نگاه‬ ‫نيز‬ ‫سمت‬ ‫در‬ ‫نود‬ ‫همين‬ ‫که‬ ‫بينيم‬ ‫مي‬ ، ‫کنيم‬ MQ: ‫است‬ ‫شده‬ ‫ایجاد‬ ‫نيز‬
  • 12. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Applications: An application is a container for all the resources that are required to create a solution. An application can contain IBM® Integration Bus resources, such as flows, message definitions, libraries, and JAR files. You use applications to group all the resources that are required to deliver an integration solution, enabling easier development and management. If you are developing resources for multiple integration solutions in the IBM Integration Toolkit, then consider grouping your resources into applications. The use of a shared or static library helps organization by grouping reusable resources together. A shared library can also be used by other applications, services, shared libraries, or integration projects. ‫نياز‬ ‫مورد‬ ‫منابع‬ ‫همه‬ ‫نگهداري‬ ‫براي‬ ‫ظرف‬ ‫يک‬ ‫اپليکيشن‬‫اپليکيشن‬ ‫يک‬ .‫است‬ ‫مساله‬ ‫يک‬ ‫حل‬ ‫در‬IIB‫شامل‬ ‫تواند‬ ‫مي‬‫منابعي‬ ‫مانند‬flows, libraries‫و‬jar file‫مسا‬ ‫يک‬ ‫در‬ ‫نياز‬ ‫مورد‬ ‫منابع‬ ‫همه‬ ‫کردن‬ ‫مجتمع‬ ‫براي‬ ‫اپليکيشن‬ ‫از‬ .‫باشد‬ ‫ها‬‫مي‬ ‫استفاده‬ ‫له‬ .‫است‬ ‫آسانتر‬ ‫توليد‬ ‫و‬ ‫مديريت‬ ‫کار‬ ‫اين‬ ‫حسن‬ .‫شود‬ Integration projects: An integration project is a specialized container in which you create and maintain all the resources associated with one or more message flows. You can create an integration project to contain a single message flow and its resources, or you can group together related message flows and resources in a single integration project to provide an organizational structure to your message flow resources. ‫است‬ ‫مخصوصي‬ ‫ظرف‬ ‫يک‬ ‫پروژه‬(‫اپليکيشن‬ ‫از‬ ‫کوچکتر‬ ‫ظرفي‬)‫شم‬ ‫که‬‫ا‬‫است‬ ‫مورد‬ ‫منابع‬ ‫تمامي‬ ‫نگهداري‬ ‫و‬ ‫ايجاد‬ ‫براي‬‫فاده‬ .‫کنيد‬ ‫مي‬ ‫ايجاد‬ ‫را‬ ‫آن‬ ‫فلوهايتان‬ ‫در‬‫ايجاد‬ ‫آن‬ ‫منابع‬ ‫و‬ ‫فلو‬ ‫مسيج‬ ‫يک‬ ‫نگهداري‬ ‫براي‬ ‫پروژه‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫مي‬ ‫يا‬ ‫کنيد‬ ‫ه‬ ‫با‬ ‫مرتبط‬ ‫هاي‬ ‫فلو‬ ‫مسيج‬ ‫از‬ ‫اي‬ ‫مجموعه‬ ‫توانيد‬.‫نماييد‬ ‫نگهداري‬ ‫پروژه‬ ‫يک‬ ‫در‬ ‫را‬ ‫م‬‫پروژه‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫به‬ ‫تبديل‬ ‫را‬ .‫نماييد‬ ‫اپليکيشن‬.‫نماييد‬ ‫اضافه‬ ‫اپليکشن‬ ‫يک‬ ‫به‬ ‫را‬ ‫پروژه‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫همچنين‬ : ‫باشد‬ ‫ذيل‬ ‫منابع‬ ‫شامل‬ ‫تواند‬ ‫مي‬ ‫پروژه‬ ‫يک‬ An integration project can contain the following resources:  Message flows  Subflows  Message maps  ESQL files  Database definitions  BAR files  Test Clients
  • 13. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Creating Application: ‫يک‬ ‫ايجاد‬ ‫براي‬‫اپليکشن‬‫مراحل‬‫زير‬‫نماييد‬ ‫طي‬ ‫را‬: 1. Open the New Integration Project wizard by clicking File > New > Application. 2. Enter a name for the application. Click Next. 3. Select any existing static libraries to which you want to refer, then click Finish. Creating integration project: : ‫نماييد‬ ‫طي‬ ‫را‬ ‫ذيل‬ ‫مراحل‬ ‫پروژه‬ ‫يک‬ ‫ايجاد‬ ‫براي‬ 4. Open the New Integration Project wizard by clicking File > New > Integration Project. 5. Enter a name for the project and select any existing projects to which you want to refer. Click Next. 6. Select any existing static libraries to which you want to refer, then click Finish.
  • 14. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Note1: The new integration project is created and shown in the Independent Resources folder of the Application Development view. When you have created an integration project, you might want to create resources to add to the project. Note: You cannot create schema files in an integration project; you can create them in an application or library only. Note: An integration project can reference a static library but not a shared library. Note: If you are not ready to create an application or library yet, you can use an integration project to hold resources in the meantime. When you are ready, you can either create an application or library and move the resources from the integration project, or you can convert your integration project to an application or library. Note: To see the project references for your integration project, right-click the integration project and then click: Properties > Project References. You can also reference resources that exist outside the integration project (such as a Java™ project or Data Design project) by adding project references. Right-click the integration project, then click Properties > Project References. Select the projects that you want to reference in your integration project. You can create resources such as message flows, maps, and ESQL files in an integration project. To create resources in your integration project, complete the following steps: 1) Click File > New. (Alternatively, expand the Independent Resources folder of the Application Development view, right-click the integration project, then click New.) 2) Select the resource to create. The appropriate wizard opens; for example, the New Message Flow wizard. 3) Follow the instructions in the wizard, then click Finish. The new resource is displayed in the Application Development view, under the integration project.
  • 15. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Message modeling: ‫هاي‬ ‫قابليت‬ ‫از‬ ‫يکي‬ .‫دارند‬ ‫مختلف‬ ‫فرمتهاي‬ ‫با‬ ‫اطالعات‬ ‫به‬ ‫نياز‬ ‫مختلف‬ ‫هاي‬ ‫سيستم‬ ‫که‬ ‫دهد‬ ‫مي‬ ‫نشان‬ ‫زير‬ ‫شکل‬IIB‫ا‬ ‫کردن‬ ‫فرهم‬‫است‬ ‫مکاناتي‬ .‫کرد‬ ‫تبديل‬ ‫مختلف‬ ‫قالبهاي‬ ‫به‬ ‫را‬ ‫ديتاها‬ ‫براحتي‬ ‫بتوان‬ ‫که‬IIB(‫درختي‬ ‫ساختار‬ ‫از‬tree‫بر‬ )‫و‬ ‫ها‬ ‫داده‬ ‫ساختار‬ ‫داشتن‬ ‫نگه‬ ‫اي‬‫خ‬‫مربوط‬ ‫صوصيات‬ .‫کند‬ ‫مي‬ ‫استفاده‬ ‫آنها‬ ‫به‬  IBM Integration Bus routes and manipulates data after converting it into a logical tree – Input node of the message flow converts incoming data from a stream of bits into a logical tree structure through a parsing operation ‫در‬IIB‫بصورت‬ ‫پيغام‬ ‫اين‬ ‫(که‬ ‫ميکنند‬ ‫دريافت‬ ‫کالينت‬ ‫سمت‬ ‫از‬ ‫که‬ ‫را‬ ‫پيغامي‬ ‫وروردي‬ ‫نودهاي‬stream‫طريق‬ ‫از‬ ‫را‬ )‫است‬ ‫عمليات‬Paring.‫ميکنند‬ ‫تبديل‬ ‫درختي‬ ‫ساختار‬ ‫يک‬ ‫به‬ – Output node of message flow creates outgoing data (in the bit stream) from the tree structure by a serialization operation ‫عمليات‬ ‫طريق‬ ‫از‬ ‫را‬ ‫درختي‬ ‫پيغامهاي‬ ‫خروجي‬ ‫هاي‬ ‫نود‬ ‫طور‬ ‫همين‬serialization‫به‬ ‫تبديل‬Stream‫کنند‬ ‫مي‬. :‫دهد‬ ‫مي‬ ‫توضيح‬ ‫را‬ ‫کار‬ ‫انجام‬ ‫روند‬ ‫زير‬ ‫شکل‬
  • 16. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid  A logical message tree contains the original data, plus other information about the runtime environment, message transport properties, and other “control” information ‫ساختار‬ ‫به‬ ‫شده‬ ‫تبديل‬ ‫پيغام‬ ‫يک‬tree‫انت‬ ‫به‬ ‫مربوط‬ ‫خصوصيات‬ ،‫اجرا‬ ‫محيط‬ ‫درباره‬ ‫ديگري‬ ‫اطالعات‬ ‫بعالوه‬ ‫اصلي‬ ‫هاي‬ ‫داده‬ ‫شامل‬‫ساير‬ ‫و‬ ‫داده‬ ‫قال‬ ‫کنت‬ ‫اطالعات‬‫قسمت‬ ‫در‬ ‫اطالعات‬ ‫اين‬ .‫باشد‬ ‫مي‬ ‫رلي‬Header‫ساختار‬tree.‫گيرد‬ ‫مي‬ ‫قرار‬ :‫نکته‬‫شدن‬ ‫راحتتر‬ ‫براي‬ ‫که‬ ‫کنيد‬ ‫توجه‬message transformation‫و‬routing،IIB‫آن‬ ‫منطقي‬ ‫فرمت‬ ‫از‬ ‫را‬ ‫ها‬ ‫داده‬ ‫فيزيکي‬ ‫فرمت‬‫جدا‬ ‫آن‬ ‫به‬ ‫که‬ ‫ديتا‬ ‫منطقي‬ ‫فرمت‬ .‫ميکند‬message assembly‫ک‬ ‫است‬ ‫روشي‬ ،‫گويند‬ ‫مي‬‫ه‬IIB،‫پيغام‬ ‫خصوصيات‬ ‫ساختار‬ ‫تا‬ ‫کند‬ ‫مي‬ ‫استفاده‬‫بدنه‬ .‫دهد‬ ‫شرح‬ ‫را‬ ‫آن‬ ‫هدر‬ ‫و‬ ‫پيغام‬‫نام‬ ‫به‬ ‫گره‬ ‫يک‬ ‫با‬ ‫هميشه‬ ‫درختي‬ ‫ساختار‬root‫شود‬ ‫مي‬ ‫شروع‬‫نام‬ ‫با‬ ‫ورودي‬ ‫هاي‬ ‫نود‬ ‫در‬ ‫که‬InputRoot‫در‬ ‫و‬ ‫نام‬ ‫با‬ ‫خروجي‬ ‫نودهاي‬OutputRoot‫شود‬ ‫مي‬ ‫شناخته‬‫گره‬ ‫زير‬ ‫ساختار‬ ‫بقيه‬ .root‫شو‬ ‫مي‬ ‫ايجاد‬.‫ند‬ Supported message formats in IIB: ‫ليست‬ ‫زير‬ ‫جدول‬‫مهم‬ ‫انواع‬ ‫از‬ ‫برخي‬‫در‬ ‫که‬ ‫پيغام‬ ‫قالبهاي‬IIB‫شود‬ ‫مي‬ ‫پشتيباني‬‫است‬ ‫شده‬ ‫اورده‬. Format Message model schema file SOAP XML XML Schema 1.0 and WSDL 1.0 Other XML XML Schema 1.0 CSV Data Format Description Language 1.0 Industry standard text or binary data Data Format Description Language 1.0 COBOL structure Data Format Description Language 1.0 C structure Data Format Description Language 1.0 CORBA IDL XML Schema 1.0 JSON The JSON parser does not use a model. MIME The MIME parser does not use a model.
  • 17. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid IIB Built-in Nodes: ‫در‬IIB.‫اند‬ ‫شده‬ ‫بندی‬ ‫دسته‬ ‫مختلفی‬ ‫های‬ ‫دسته‬ ‫در‬ ‫ها‬ ‫نود‬ ‫این‬ .‫شود‬ ‫فلواستفاده‬ ‫مسیج‬ ‫در‬ ‫تا‬ ‫شده‬ ‫تهیه‬ ‫مختلفی‬ ‫های‬ ‫نود‬‫از‬ ‫دست‬ ‫اولین‬ ، ‫ها‬ ‫نود‬Websphere MQ.‫دارد‬ ‫نام‬ Websphere MQ Nodes: ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫با‬ ‫کار‬ ‫برای‬ ‫که‬ ‫است‬ ‫نودهایی‬ ‫شامل‬ ‫بخش‬ ‫این‬ :‫گیرد‬ ‫می‬ 1) MQInput node: Use the MQInput node to receive messages from clients that connect to the broker by using the WebSphere® MQ Enterprise Transport, and that use the MQI and AMI application programming interfaces. .‫میگیرد‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫کالینت‬ ‫سمت‬ ‫از‬ ‫پیغام‬ ‫دریافت‬ ‫برای‬ ‫نود‬ ‫این‬ ‫از‬‫روی‬ ‫بر‬ ‫شده‬ ‫داده‬ ‫قرار‬ ‫های‬ ‫پیغام‬ ‫نود‬ ‫این‬MQ‫را‬‫د‬.‫میکند‬ ‫ریافت‬ ‫نام‬ ‫به‬ ‫متدی‬ ‫از‬ ‫نود‬ ‫این‬MQGet‫از‬ ‫پیغام‬ ‫دریافت‬ ‫برای‬MQ‫های‬ ‫پیغام‬ ‫است‬ ‫قرار‬ ‫که‬ ‫هایی‬ ‫فلو‬ .‫کند‬ ‫می‬ ‫استفاده‬MQ‫دریاف‬ ‫را‬، ‫کنند‬ ‫ت‬ ‫از‬ ‫باید‬.‫کنند‬ ‫استفاده‬ ‫فلو‬ ‫ابتدای‬ ‫در‬ ‫نود‬ ‫این‬ : ‫است‬ ‫روبرو‬ ‫شکل‬ ‫به‬ ‫نود‬ ‫این‬ ‫خروجی‬ Terminal Description Failure The output terminal to which the message is routed if an error occurs. Even if the Validation property is set, messages propagated to this terminal are not validated. Out The output terminal to which the message is routed if it is successfully retrieved from the WebSphere MQ queue. Catch The output terminal to which the message is routed if an exception is thrown downstream and caught by this node. ‫این‬‫نود‬‫خ‬‫ص‬:‫پردازیم‬ ‫می‬ ‫آنها‬ ‫بررسی‬ ‫به‬ ‫ذیل‬ ‫در‬ ‫که‬ ‫دارد‬ ‫وصیاتی‬ Decription Tab: ‫خصوصیات‬ ‫شامل‬ ‫تب‬ ‫این‬Node name،Short description‫و‬Long description‫باشد‬ ‫می‬ .‫است‬ ‫مشخص‬ ‫نامشان‬ ‫از‬ ‫آنها‬ ‫عملکرد‬ ‫که‬
  • 18. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Basic Tab: ‫خصوصیت‬ ‫شامل‬ ‫تب‬ ‫این‬Queue name‫نام‬ ‫باید‬ ‫آن‬ ‫مقدار‬ ‫که‬ ‫است‬Queue.‫است‬ ‫شده‬ ‫تعریف‬ ‫بروکر‬ ‫در‬ ‫که‬ ‫باشد‬ Input Message Parsing Tab: ‫روبرو‬ ‫شکل‬ ‫در‬ ‫شده‬ ‫داده‬ ‫نشان‬ ‫خواص‬ ‫شامل‬ ‫تب‬ ‫این‬ :‫باشد‬ ‫می‬ Property Default Description Message domain BLOB The domain that is used to parse the message. If the field is blank then the default is BLOB. .‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫شود‬ ‫آناالیز‬ ‫آن‬ ‫با‬ ‫مسیج‬ ‫که‬ ‫دامینی‬ ‫فیلد‬ ‫این‬‫تواند‬ ‫می‬ ‫فیلد‬ ‫این‬ ‫که‬ ‫مقادیری‬ : ‫است‬ ‫زیر‬ ‫بصورت‬ ‫بگیرد‬ Message model Cleared The name or location of the message model schema file in which the message is defined. This list is populated with all available message model schema files for the Message domain that you have selected. Message Cleared The name or location of the message root within your message model schema file. This list is populated with all available messages that are defined in the Message model that you have selected. Physical format Cleared The name of the physical format of the message. If you are using the MRM or IDOC parser, select the physical format of the incoming message from the list. This list includes all the physical formats that you have defined for the selected message model. If you set the Message domain property to DataObject, you can set this property to XML or SAP ALE IDoc. Set this property to SAP ALE IDoc when you have to parse a bit stream from an external source and generate a message tree.
  • 19. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Parser Options Tab: :‫است‬ ‫زیر‬ ‫شکل‬ ‫شرح‬ ‫به‬ ‫دارند‬ ‫قرار‬ ‫تب‬ ‫این‬ ‫در‬ ‫که‬ ‫خصوصیاتی‬ Property Default Description Parse timing On Demand This property controls when an input message is parsed. Valid values are On Demand, Immediate, and Complete. Parse timing is, by default, set to On Demand, which causes parsing of the message to be delayed. To cause the message to be parsed immediately, see Parsing on demand. Use MQRFH2C compact parser for MQRFH2 header Cleared This property controls whether the MQRFH2C compact parser, instead of the MQRFH2 parser, is used for MQRFH2 headers. Build tree using XML schema data types Cleared This property controls whether the XMLNSC parser creates syntax elements in the message tree with data types taken from the XML schema. You can select this property only if you set the Validate property on the Validation tab to Content or Content and Value. Use XMLNSC compact parser for XMLNS domain Cleared This property controls whether the XMLNSC compact parser is used for messages in the XMLNS domain. If you set this property, the message data is displayed under XMLNSC in nodes that are connected to the output terminal when the input MQRFH2 header or the Input Message Parsing property Message domain is XMLNS. For more information, see Manipulating messages in the XMLNSC domain.
  • 20. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Property Default Description Retain mixed content Cleared This property controls whether the XMLNSC parser creates elements in the message tree when it encounters mixed text in an input message. If you select the check box, elements are created for mixed text. If you clear the check box, mixed text is ignored and no elements are created. Retain comments Cleared This property controls whether the XMLNSC parser creates elements in the message tree when it encounters comments in an input message. If you select the check box, elements are created for comments. If you clear the check box, comments are ignored and no elements are created. Retain processing instructions Cleared This property controls whether the XMLNSC parser creates elements in the message tree when it encounters processing instructions in an input message. If you select the check box, elements are created for processing instructions. If you clear the check box, processing instructions are ignored and no elements are created. Opaque elements Blank This property is used to specify a list of elements in the input message that are to be opaquely parsed by the XMLNSC parser. Opaque parsing is performed only if validation is not enabled (that is, if Validate is None); entries that are specified in Opaque Elements are ignored if validation is enabled. Advanced Tab: ‫تب‬ ‫خصوصیات‬Advanced‫شرح‬ ‫به‬‫شکل‬:‫باشد‬ ‫می‬ ‫ذیل‬
  • 21. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 2) MQOutput node: Basic Tab: ‫تب‬ ‫خصوصیات‬Basic‫روبرو‬ ‫شکل‬ ‫شرح‬ ‫به‬ :‫هستند‬ Property Description Queue Manager Name Enter the name of the WebSphere MQ queue manager to which this output queue (which is specified by the Queue Name property) is defined. The Queue Manager Name property is only needed if the queue specified is defined on another queue manager or is a cluster queue. Queue Name If you set the Destination Mode property to Queue Name, you must specify a value for the Queue Name property. If you set Destination Mode to another value, this property is ignored. Advanced Tab: ‫تب‬ ‫خصوصیات‬Advanced‫روبرو‬ ‫شکل‬ ‫شرح‬ ‫به‬ :‫هستند‬
  • 22. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Property Default Description Destination Mode Queue Name The queues to which the output message is sent.  If you select Queue Name (the default), the message is sent to the queue that is named in the Queue Name property. If you select this option, you must set the Queue Manager Name and Queue Name properties.  If you select Reply To Queue, the message is sent to the queue that is named in the ReplyToQ field in the MQMD.  If you select Destination List, the message is sent to the list of queues that are named in the local environment that is associated with the message. Transaction Mode Automatic This property controls whether the message is put transactionally.  If you select Automatic (the default), the message transactionality is derived from the way that it was specified at the input node.  If you select Yes, the message is put transactionally.  If you select No, the message is put non-transactionally. Persistence Mode Automatic This property controls whether the message is put persistently.  If you select Automatic (the default), the persistence is as specified in the incoming message.  If you select Yes, the message is put persistently.  If you select No, the message is put non-persistently.  If you select As Defined for Queue, the message persistence is set as defined for the WebSphere MQ queue. New Message ID Cleared If you select this check box, WebSphere MQ generates a new message identifier to replace the contents of the MsgId field in the MQMD. This property maps to the MQPMO_NEW_MSG_ID option of the MQPMO of the MQI. Clear the check box if you do not want to generate a new ID. A new message ID is still generated if you select the Request property on the Request tab. New Correlation ID Cleared If you select this check box, WebSphere MQ generates a new correlation identifier to replace the contents of the CorrelId field in the MQMD. This property maps to the MQPMO_NEW_CORREL_ID option of the MQPMO of the MQI. Clear the check box if you do not want to generate a new ID. Segmentation Allowed Cleared If you select this check box, WebSphere MQ breaks the message into segments in the queue manager. Message Context Pass All This property controls how origin context is handled.  Pass All maps to the MQPMO_PASS_ALL_CONTEXT option of the MQPMO of the MQI.  Pass Identity maps to the MQPMO_PASS_IDENTITY_CONTEXT option of the MQPMO of the MQI.  Set All maps to the MQPMO_SET_ALL_CONTEXT option of the MQPMO of the MQI.  Set Identity maps to the MQPMO_SET_IDENTITY_CONTEXT option of the MQPMO of the MQI.  Default maps to the MQPMO_DEFAULT_CONTEXT option of the MQPMO of the MQI.  None maps to the MQPMO_NO_CONTEXT option of the MQPMO of the MQI.
  • 23. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Property Default Description Alternate User Authority Cleared If you select this check box, alternate authority is used when the output message is put and the MQOO_ALTERNATE_USER_AUTHORITY option is set in the open options (MQOO) of the MQI. If you select this check box, this option is specified when the queue is opened for output. The alternative user information is retrieved from the context information in the message. Request Tab: ‫تب‬ ‫خصوصیات‬Request‫شکل‬ ‫شرح‬ ‫به‬‫زیر‬:‫هستند‬ Property Default Description Request Cleared If you select the check box, each output message in the MQMD is generated as a request message (MQMT_REQUEST), and the message identifier field is cleared (and set to MQMI_NONE) so that WebSphere MQ generates a new identifier. Clear the check box to indicate that each output message is not marked as a request message. If you have set Destination Mode to Reply To Queue, you cannot select this check box. A new message identifier is generated even if the New Message ID check box is not selected on the Advanced tab. Reply-to Queue Manager The name of the WebSphere MQ queue manager to which the output queue, which is specified in Reply-to Queue, is defined. This name is inserted into the MQMD of each output message as the reply-to queue manager. Reply-to Queue The name of the WebSphere MQ queue to which to put a reply to this request. This name is inserted into the MQMD of each output message as the reply-to queue.
  • 24. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid HTTP nodes: HTTP nodes can process SwA messages, you must use the MIME message domain and design your flow to handle the attachments explicitly, and use custom logic to extract and parse the SOAP. Cases where it might be better to use HTTP nodes include:  Message flows in which a single request node handles multiple SOAP request and responses from more than one WSDL.  Message flows that interact with Web services that use different standards, such as REST or XML-RPC.  Message flow that never use WS-Addressing, WS-Security, SwA, or MTOM. 1) HTTPInput node: https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04565_.htm?cp=SSMKHH_9.0.0&lang=en Use the HTTPInput node to receive an HTTP message from an HTTP client for processing by a message flow. If you use the HTTPInput node with the HTTPReply and HTTPRequest nodes, the broker can act as an intermediary for web services, and web service requests can be transformed and routed in the same way as other message formats that are supported by IBM® Integration Bus. ‫از‬( ‫سمت‬ ‫کامپوننت‬ ‫این‬provider, Server‫پيام‬ ‫یک‬ ‫دریافت‬ ‫براي‬ ‫سرویس‬ ‫وب‬ )HTTP‫استف‬ ‫کالینت‬ ‫سمت‬ ‫از‬‫مي‬ ‫اده‬ .‫شود‬‫همراه‬ ‫به‬ ‫نود‬ ‫این‬ ‫از‬ ‫که‬ ‫صورتي‬ ‫در‬HTTPReply‫و‬HTTPRequest‫ع‬ ‫به‬ ‫آن‬ ‫از‬ ‫توان‬ ‫مي‬ ، ‫شود‬ ‫استفاده‬‫واسطي‬ ‫نوان‬ .‫نمود‬ ‫استفاده‬ ‫سرویس‬ ‫وب‬ ‫براي‬ Web service requests can be received either in standard HTTP (1.0 or 1.1) format or in HTTP over SSL (HTTPS) format. For more information about web services, see Processing Web service messages. The HTTPInput node handles messages in the following message domains:  MRM  XMLNSC  XMLNS  MIME  BLOB  XML (this domain is deprecated; use XMLNSC)  JSON  DFDL HTTP messages are always non-persistent, and have no associated order.
  • 25. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 2) HTTPReply: https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04585_.htm Use the HTTPReply node to return a response from the message flow to an HTTP client. .‫شود‬ ‫می‬ ‫استفاده‬ ‫کالینت‬ ‫به‬ ‫پاسخ‬ ‫برگرداندن‬ ‫برای‬ ‫نود‬ ‫این‬ ‫از‬ Property Default Description Ignore transport failures Selected Select Ignore transport failures if you want transport-related failures to be ignored (for example, if the client is disconnected). If you clear the check box, and a transport- related error occurs, the input message is propagated to the Failure terminal. If you clear the check box, you must supply a value for Reply send timeout (sec). ‫سمت‬ ‫به‬ ‫دیتا‬ ‫انتقال‬ ‫به‬ ‫مربوط‬ ‫خطاهای‬ ‫که‬ ‫خواهید‬ ‫می‬ ‫اگر‬‫بزنید‬ ‫تیک‬ ‫را‬ ‫گزینه‬ ‫این‬ ‫شود‬ ‫گرفته‬ ‫نادیده‬ ‫کالینت‬. Reply send timeout (sec) 120 Set the Reply send timeout (sec) value if you are not ignoring transport failures. This property specifies the length of time, in seconds, that the node waits for an acknowledgment that the client has received the reply. ‫ا‬‫ز‬‫ا‬ ، ‫باشد‬ ‫خورده‬ ‫تیک‬ ‫قبلی‬ ‫خاصیت‬ ‫اگر‬ .‫شود‬ ‫می‬ ‫استفاده‬ ‫دیتا‬ ‫ارسال‬ ‫انتظار‬ ‫زمان‬ ‫تعیین‬ ‫برای‬ ‫نود‬ ‫این‬‫خاصیت‬ ‫ین‬ .‫شود‬ ‫نمی‬ ‫بررسی‬ Generate default HTTP headers from reply or response Selected Select Generate default HTTP headers from reply or response if you want the default Web service headers to be created using values from the HTTPReplyHeader or the HTTPResponseHeader. If the appropriate header is not present in the input message, default values are used. 3) HTTPRequest: https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04595_.htm?lang=en Use the HTTPRequest node to interact with a web service. .‫شود‬ ‫مي‬ ‫استفاده‬ ‫سرويس‬ ‫وب‬ ‫يک‬ ‫فراخواني‬ ‫براي‬ ‫نود‬ ‫اين‬ ‫از‬ You can use this node in a message flow that does or does not contain an HTTPInput or HTTPReply node. An HTTP request has two parts: 1. The URL of a service. 2. A stream of data that the remote server processes, then sends back a response, which is often a SOAP or other web service message in XML.
  • 26. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Transformation: Compute node: https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac04660_.htm?cp=SSMKHH_9.0.0&lang=en Use the Compute node to construct one or more new output messages. The output messages that you create in the Compute node might be created by modifying the information that is provided in the input message, or by using only new information which can be taken from a database or from other sources. Elements of the input message (for example, headers, header fields, and body data), its associated environment, and its exception list can be used to create the new output message. You can configure the Compute node to do any of the following operations:  Insert,Update,Delete data from a database.  Update the environment tree.  Update the local environment tree.  Create one or more output messages, with none, some, or all the content of the input message, and propagate these new messages to the next node in the message flow. Note: To propagate the input LocalEnvironment to the output LocalEnvironment, remember to set the Compute node property Compute mode to an appropriate value. The Environment is always propagated in the output message. :‫نکته‬‫خاصيت‬ ‫اگر‬Data source‫کند‬ ‫برقرار‬ ‫ارتباط‬ ‫آن‬ ‫با‬ ‫نتواند‬ ‫اجرا‬ ‫هنگام‬ ‫و‬ ‫کنيم‬ ‫دهي‬ ‫مقدار‬ ‫را‬ ‫کامپوننت‬ ‫اين‬ ‫در‬،‫ابتدا‬ ‫همان‬‫خ‬‫طا‬ ‫کد‬ ‫حتي‬ ‫و‬ ‫دهد‬ ‫مي‬esql.‫شود‬ ‫نمي‬ ‫اجرا‬ ‫نيز‬ ‫آن‬ ‫داخل‬ Specify how the new messages are created by coding ESQL in the message flow ESQL resource file. :‫است‬ ‫ذيل‬ ‫شرح‬ ‫به‬ ‫نود‬ ‫اين‬ ‫استفاده‬ ‫موارد‬  Build a new message using a set of assignment statements  Copy messages between parsers  Convert messages from one code set to another  Transform messages from one format to another Data Source Property: The ODBC data source name for the database that contains the tables to which you refer in the ESQL file that is associated with this message flow (identified in the ESQL Module property). You can specify only one data source for the node. If the ESQL that is associated with this node includes a PASSTHRU statement or SELECT function and a database reference, you must specify a value for the Data Source property. To configure access to a database from this node: On the Basic tab, specify in Data Source the name by which the appropriate database is known on the system on which this message flow is to run. The broker connects to this database with user ID and password information that you have specified on the mqsicreatebroker, mqsichangebroker, or mqsisetdbparms command.
  • 27. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid You can also automatically configure connectivity to a database by using the Database Service. Compute Mode property: The Compute Mode property controls which components are used by default in the output message. Select the property to specify whether the Message, LocalEnvironment (previously specified as DestinationList), and Exception List components that are either generated in the node or contained in the incoming message are used. This default value is used when the transformed message is routed to the Out terminal when processing in the node is completed. The default value is also used whenever a PROPAGATE statement does not specify the composition of its output message. If the Compute Mode property is set to All, you must code the following ESQL to allow the input trees to be propagated to the output terminal: SET OutputRoot = InputRoot; SET OutputLocalEnvironment = InputLocalEnvironment; SET OutputExceptionList = InputExceptionList; Throw exception on database error: If you select this check box, database errors cause the broker to throw an exception. Terminals and properties Terminal Description In The input terminal that accepts a message for processing by the node. Failure The output terminal to which the input message is routed if an unhandled exception occurs during the computation. Out The output terminal to which the transformed message is routed when processing in the node is completed. The transformed message might also be routed to this terminal by a PROPAGATE statement. Out1, Out2, Out3, Out4 The first, second,third,fourth alternative output terminal to which the transformed message might be routed by a PROPAGATE statement.
  • 28. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ESQL (Extended Structured Query Language): Case sensitivity of ESQL syntax: The case of ESQL statements is:  Case sensitive in field reference literals  Not case sensitive in ESQL language words ESQL data types: ESQL defines the following categories of data. Each category contains one or more data types. ESQL‫انوع‬ ‫مورد‬ ‫در‬ ‫را‬ ‫زير‬ ‫های‬ ‫بندی‬ ‫دسته‬.‫باشد‬ ‫مي‬ ‫داده‬ ‫نوع‬ ‫چند‬ ‫يا‬ ‫يک‬ ‫شامل‬ ‫بندی‬ ‫دسته‬ ‫هر‬ ،‫دارد‬ ‫داده‬  Boolean  Datetime(DATE,TIME,TIMESTAMP, GMTTIMESTAMP, INTERVAL)  Null  Numeric (DECIMAL, FLOAT, INTEGER)  Reference  String(BIT, BLOB,CHARACTER) Numeric data types:  INTEGER: 64 bit, range between -9223372036854775808 and +9223372036854775807  DECIMAL: Decimals have precision, scale. ‫دارای‬ ‫دسيمال‬ ‫اعداد‬‫دو‬:‫باشند‬ ‫مي‬ ‫بخش‬ Precision is the total number of digits of a number, the minimum precision is 1 and the maximum precision is 34. Precision‫از‬ ‫و‬ ‫باشد‬ ‫مي‬ ‫عدد‬ ‫صحيح‬ ‫قسمت‬1‫تا‬34.‫دهد‬ ‫جای‬ ‫خود‬ ‫در‬ ‫تواند‬ ‫مي‬ ‫رقم‬ Scale is the number of digits to the right of the decimal point:  The minimum scale (-exponent) is -999,999,999  The maximum scale (-exponent) is +999,999,999 Scale‫است‬ ‫شده‬ ‫ذکر‬ ‫باال‬ ‫در‬ ‫اعشاری‬ ‫قسمت‬ ‫مقدار‬ ‫بيشترين‬ ‫و‬ ‫کمترين‬ ، ‫باشد‬ ‫مي‬ ‫اعشاری‬ ‫قسمت‬. Note: You cannot define precision and scale when declaring a DECIMAL, because they are assigned automatically. It is only possible to specify precision and scale when casting to a DECIMAL. ‫هنگام‬ ‫تنها‬ ،‫نيستند‬ ‫تعيين‬ ‫قابل‬ ‫دسيمال‬ ‫متغير‬ ‫تعريف‬ ‫هنگام‬ ‫اعداد‬ ‫اعشاری‬ ‫و‬ ‫صحيح‬ ‫قسمت‬Cast.‫کرد‬ ‫تعيين‬ ‫را‬ ‫آنها‬ ‫توان‬ ‫مي‬  Float: The FLOAT data type holds a 64-bit number with range of values between +-1.7E–308 and +- 1.7E+308.
  • 29. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid String Data types: The following data types are collectively known as string data types:  BIT data type: The BIT data type holds a variable length string of binary digits. It is commonly used to represent arbitrary binary data that does not contain an exact number of bytes. A bit string literal consists of the letter B, followed by a string of binary digits enclosed in single quotation marks. Example: B'0100101001'  BLOB data type: The BLOB data type holds a variable length string of 8-bit bytes. It is commonly used to represent arbitrary binary data. A BLOB literal consists of the letter X, followed by a string of hexadecimal digits enclosed in single quotation marks. Example: X'0123456789ABCDEF'  CHARACTER data type: The character data type holds a variable length string of Unicode characters. A character string literal consists of any number of characters in single quotation marks. Example: SET X = 'hamid'; Note: If you want to include a single quotation mark within a character string literal, use another single quotation mark as an escape character. Example: SET X='he''was''' puts the value he'was' into X. https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak05190_.htm STRING Operators and Functions: CONCAT STRINGS WITH || Operator : A single string operator, concatenation, is supported in ESQL. The result is the concatenation of the two operands. You can concatenate string values (CHARACTER, BIT, and BLOB). If either operand is NULL, the result is NULL. ‫اپراتور‬ ‫از‬ ‫يکديگر‬ ‫به‬ ‫رشته‬ ‫دو‬ ‫اتصال‬ ‫برای‬||‫تابع‬ ‫همانند‬ .‫ميکنيم‬ ‫استفاده‬Concat‫در‬SQL.‫باشد‬ ‫مي‬ LENGTH: The LENGTH function is used for string manipulation on all string data types (BIT, BLOB, and CHARACTER) and returns an integer value giving the number of singletons in source_string. It If the source_string is NULL, the result is the NULL value. The term singleton refers to a single part (BIT, BYTE, or CHARACTER) within a string of that type. Example: LENGTH('Hello World!'); // returns 12. LENGTH(''); // returns 0.
  • 30. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid CONTAINS: The CONTAINS function searches a text search index using criteria that are specified in a search argument and returns a result about whether or not a match was found. The parameter strings for both SourceExpression and SearchExpression can be of the CHARACTER, BLOB, or BIT data type, but must be of the same data type. If any parameter is NULL, the result is NULL. .‫شود‬ ‫مي‬ ‫استفاده‬ ‫ديگر‬ ‫رشته‬ ‫يک‬ ‫درون‬ ‫رشته‬ ‫يک‬ ‫کردن‬ ‫پيدا‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬ Examples: CONTAINS('Hello World!', 'ello'); // returns TRUE. CONTAINS('Hello World!', 'daisy'); // returns FALSE POSITION: POSITION returns an integer giving the position of one string (SearchExpression) in a second string (SourceExpression). A position of one corresponds to the first character of the source string. If present, the FROM clause gives a position within the search string at which the search commences. In the absence of a FROM clause, the source string is searched from the beginning. If present, the REPEAT clause gives a repeat count, returning the position returned to be that of the nth occurrence of the search string within the source string. If the repeat count is negative, the source string is searched from the end. In the absence of a REPEAT clause, a repeat count of +1 is assumed; that is, the position of the first occurrence, searching from the beginning is returned. If the search string has a length of zero, the result is one. If the search string cannot be found, the result is zero: if the FROM clause is present, this applies only to the section of the source string being searched; if the REPEAT clause is present this applies only if there are insufficient occurrences of the string. If any parameter is NULL, the result is NULL. The search and source strings can be of the CHARACTER, BLOB, or BIT data types but they must be of the same type. ‫موقعيت‬ ‫کردن‬ ‫پيدا‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬)‫(ايندکس‬‫ر‬ ‫در‬ ‫رشته‬ ‫يک‬‫برگردانده‬ ‫تطابق‬ ‫اولين‬ ‫ايندکس‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫ديگر‬ ‫شته‬ ‫کلمه‬ .‫شود‬ ‫مي‬FROM‫مي‬ ‫مشخص‬ ‫را‬ ‫جستجو‬ ‫شروع‬ ‫نقطه‬‫کلمه‬ ‫اگر‬ ‫کند‬FROM‫رشته‬ ‫ابتدای‬ ‫از‬ ،‫باشد‬ ‫نشده‬ ‫استفاده‬ .‫شود‬ ‫مي‬ ‫شروع‬ ‫جستجو‬ ‫کلمه‬REPEAT.‫کند‬ ‫مي‬ ‫مشخص‬ ‫را‬ ‫جستجو‬ ‫تکرار‬ ‫دفعات‬ ‫تعداد‬‫مثال‬REPEAT 2‫که‬ ‫است‬ ‫اين‬ ‫معني‬ ‫به‬‫ايندکس‬ ‫اولين‬ .‫برگرداند‬ ‫را‬ ‫دوم‬ ‫شده‬ ‫پيدا‬ ‫ايندکس‬ ‫و‬ ‫کند‬ ‫رد‬ ‫را‬ ‫شده‬ ‫پيدا‬ ‫انواع‬ ‫از‬ ‫هريک‬ ‫توانند‬ ‫مي‬ ‫جستجو‬ ‫عبارات‬String( ‫يعني‬CHARACTER, BLOB, or BIT‫دو‬ ‫هرد‬ ‫بايد‬ ‫اما‬ ،‫باشند‬ ) .‫باشد‬ ‫يکي‬ ‫نوعشان‬ ‫قسمت‬ Example: POSITION('Village' IN 'Hursley Village'); // returns 9 POSITION('Town' IN 'Hursley Village'); // returns 0 POSITION ('B' IN 'ABCABCABCABCABC'); // returns 2 POSITION ('D' IN 'ABCABCABCABCABC'); // returns 0 POSITION ('A' IN 'ABCABCABCABCABC' FROM 4); // returns 4 POSITION ('C' IN 'ABCABCABCABCABC' FROM 2); // returns 3 POSITION ('B' IN 'ABCABCABCABCABC' REPEAT 2); // returns 5 POSITION ('C' IN 'ABCABCABCABCABC' REPEAT 4); // returns 12 POSITION ('A' IN 'ABCABCABCABCABC' FROM 4 REPEAT 2); // returns 7 POSITION ('AB' IN 'ABCABCABCABCABC' FROM 2 REPEAT 3); // returns 10 POSITION ('A' IN 'ABCABCABCABCABC' REPEAT -2); // returns 10 POSITION ('BC' IN 'ABCABCABCABCABC' FROM 2 REPEAT -3); // returns 5
  • 31. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid OVERLAY: OVERLAY is a string manipulation function that manipulates all string data types (BIT, BLOB, and CHARACTER) and replaces part of a string with a substring. OVERLAY returns a new string of the same type as the source and is identical to source_string, except that a given substring in the string, starting from the specified numeric position and of the given length, has been replaced by source_string2. When the length of the substring is zero, nothing is replaced. If any parameter is NULL, the result is NULL. If string_length is not specified, it is assumed to be equal to LENGTH(source_string2). ‫چيزی‬ ‫هيچ‬ ، ‫باشد‬ ‫خالي‬ ‫مجموعه‬ ‫زير‬ ‫رشته‬ ‫اگر‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫ديگر‬ ‫رشته‬ ‫يک‬ ‫درون‬ ‫رشته‬ ‫يک‬ ‫دادن‬ ‫قرار‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬ ‫پارامترها‬ ‫از‬ ‫هريک‬ ‫اگر‬ .‫شود‬ ‫نمي‬ ‫اضافه‬ ‫اصلي‬ ‫رشته‬ ‫به‬Null‫نيز‬ ‫خروجي‬ ‫باشد‬Null.‫بود‬ ‫خواهد‬ Example: OVERLAY ('ABCDEFGHIJ' PLACING '1234' FROM 4 FOR 3) // returns the string 'ABC1234GHIJ' ENDSWITH: ENDSWITH returns TRUE if SourceExpression ends with SearchExpression, otherwise it returns FALSE. The parameter strings for both SearchExpression and SourceExpression can be of the CHARACTER, BLOB, or BIT data type, but must be of the same data type. If any parameter is NULL, the result is NULL. ‫تابع‬ ‫برگشتي‬ ‫مقدار‬ ،‫برسد‬ ‫پايان‬ ‫به‬ ‫جستجو‬ ‫مورد‬ ‫رشته‬ ‫با‬ ‫نظر‬ ‫مورد‬ ‫رشته‬ ‫اگر‬ ‫تابع‬ ‫اين‬ ‫در‬true‫اي‬ ‫غير‬ ‫در‬ ‫و‬ ‫بود‬ ‫خواهد‬‫نصورت‬ ‫مقدار‬false.‫شود‬ ‫مي‬ ‫برگردانده‬ Examples: ENDSWITH('Hello World!', 'World!'); // returns TRUE. ENDSWITH('Hello World!', 'World'); // returns FALSE. STARTSWITH: STARTSWITH is a string manipulation function that manipulates all string data types (BIT, BLOB, and CHARACTER), and returns a Boolean value to indicate whether one string begins with another. STARTSWITH returns TRUE if SourceExpression begins with SearchExpression, otherwise it returns FALSE. The parameter strings for both SearchExpression and SourceExpression can be of the CHARACTER, BLOB, or BIT data type, but must be of the same data type. If any parameter is NULL, the result is NULL. Examples: STARTSWITH('Hello World!', 'Hello'); // returns TRUE. STARTSWITH('Hello World!', 'World'); // returns FALSE. REPLICATE: REPLICATE is a string manipulation function that manipulates all data types (BIT, BLOB, and CHARACTER) and returns a string made up of multiple copies of a supplied string. If the count is negative or zero, a zero length string is returned. If either parameter is NULL, the result is NULL. ‫ک‬ ‫کپي‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬‫اس‬ ‫رشته‬ ‫از‬ ‫مقداری‬ ‫يک‬ ‫چندباره‬ ‫ردن‬‫ش‬ ‫مي‬ ‫تفاده‬‫و‬.‫د‬ Examples: REPLICATE('0', 4) // returns '0000'
  • 32. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid SUBSTRING: Extracts characters from a string to create another string and manipulates all string data types (BIT, BLOB, and CHARACTER) Syntax: SUBSTRING(<SourceExpression> FROM <StartPosition> BEFORE <BeforeExpression> AFTER <AfterExpression> FOR <StringLength>); ‫کلمه‬ ‫با‬ ‫همراه‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫شده‬ ‫داده‬ ‫رشته‬ ‫از‬ ‫مجموعه‬ ‫زير‬ ‫يک‬ ‫گرفتن‬ ‫برا‬ ‫تابع‬ ‫اين‬ ‫از‬FROM‫شروع‬ ‫ايندکس‬‫زير‬ ‫رشته‬ ‫کلمات‬ ‫با‬ ‫همراه‬ ‫و‬ ‫شود‬ ‫مي‬ ‫مشخص‬ ‫مجموعه‬BEFORE‫و‬AFTER‫خواهد‬ ‫گرفته‬ ‫کمک‬ ‫آن‬ ‫از‬ ‫شروع‬ ‫نقطه‬ ‫برای‬ ‫که‬ ‫عبارتي‬ ‫کلمه‬ .‫آيد‬ ‫مي‬ ‫شد‬FOR‫نيز‬‫برای‬‫بکا‬ ‫شوند‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫خروجي‬ ‫برای‬ ‫بايد‬ ‫که‬ ‫کاراکترهايي‬ ‫تعداد‬ ‫کردن‬ ‫مشخص‬.‫رود‬ ‫مي‬ ‫ر‬ Examples: SUBSTRING('Hello World!' FROM 7 FOR 4) // returns 'Worl'. SUBSTRING('Hello World!' BEFORE 'World'); // returns 'Hello '. SUBSTRING('Hello World!' BEFORE 'World' FOR 3); // returns 'lo '. SUBSTRING('Hello World!' BEFORE 'e'); // returns 'H'. SUBSTRING('Hello World!' AFTER 'World'); // returns '!'. SUBSTRING('Hello World!' AFTER 'W' FOR 2); // returns 'or'. SUBSTRING('Hello World!' AFTER 'P'); // returns ''. LOWER and LCASE: The LOWER and LCASE functions are equivalent, and manipulate CHARACTER string data; they both return a new character string, which is identical to source_string, except that all uppercase letters are replaced with the corresponding lowercase letters. .‫دارند‬ ‫يکساني‬ ‫عملکذد‬ ‫آنها‬ ‫دوی‬ ‫هر‬ .‫کرد‬ ‫استفاده‬ ‫تابع‬ ‫دو‬ ‫اين‬ ‫از‬ ‫توان‬ ‫مي‬ ‫کوچ‬ ‫حروف‬ ‫به‬ ‫رشته‬ ‫يک‬ ‫کاراکترهای‬ ‫تبديل‬ ‫برای‬ Example: LOWER('Mr Smith') // returns 'mr smith'. LOWER('22 Railway Cuttings') // returns '22 railway cuttings'. LCASE('ABCD') // returns 'abcd'. UPPER and UCASE: UPPER and UCASE are equivalent string manipulation functions that manipulate CHARACTER string data and convert lowercase characters in a string to uppercase. UPPER and UCASE both return a new character string, which is identical to source_string, except that all lowercase letters are replaced with the corresponding uppercase letters. Example: UPPER('ABCD') // returns 'ABCD'. UCASE('abc123') // returns 'ABC123'.
  • 33. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid LEFT: LEFT is a string manipulation function that returns a string consisting of the source string truncated to the LEFT given by the length expression.The source string can be of the CHARACTER, BLOB or BIT data type and the length must be of type INTEGER. The truncation discards the final characters of the source_string The result is of the same type as the source string. If the length is negative or zero, a zero length string is returned. If either parameter is NULL, the result is NULL .‫کند‬ ‫مي‬ ‫چاپ‬ ‫خروجي‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫برداشته‬ ‫شده‬ ‫اعالن‬ ‫تعداد‬ ‫به‬ ‫رشته‬ ‫چپ‬ ‫سمت‬ ‫از‬ ‫تابع‬ ‫اين‬ Example: LEFT('ABCD',3); // returns 'ABC'. RIGHT: RIGHT returns a string consisting of the source string truncated to the length given by the length expression. The truncation discards the initial characters of the source string. The source string can be of the CHARACTER, BLOB, or BIT data type and the length must be of type INTEGER. If the length is negative or zero, a zero length string is returned. If either parameter is NULL, the result is NULL ‫سمت‬ ‫از‬ ‫تابع‬ ‫اين‬‫راست‬.‫کند‬ ‫مي‬ ‫چاپ‬ ‫خروجي‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫برداشته‬ ‫شده‬ ‫اعالن‬ ‫تعداد‬ ‫به‬ ‫رشته‬ Example: RIGHT('w3resource',6); // returns 'source'. SPACE: SPACE returns a character string that consists of the number of blank spaces that are given by NumericExpression. The parameter must be of type INTEGER; the result is of type CHARACTER. Example: SPACE(10);
  • 34. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid REPLACE: REPLACE returns a string consisting of the source string, with each occurrence of the search string replaced by the replace string. The parameter strings can be of the CHARACTER, BLOB, or BIT data types, but all three must be of the same type. If any parameter is NULL, the result is NULL. If you do not specify the replace string expression, the replace string uses the default value of an empty string, and the behavior of the function is to delete all occurrences of the search string from the result. ‫در‬ ‫ديگر‬ ‫ای‬ ‫رشته‬ ‫با‬ ‫را‬ ‫رشته‬ ‫يک‬ ‫تابع‬ ‫اين‬‫شده‬ ‫داده‬ ‫عبارت‬.‫کند‬ ‫مي‬ ‫جايگزين‬ ‫اصلي‬ Example: REPLACE('ABCDABCDABCDA', 'A', 'AA') // returns 'AABCDAABCDAABCDAA' TRIM: TRIM returns a new string of the same type as source_string, in which the leading, trailing, or both leading and trailing singletons have been removed. The term singleton refers to a single part (BIT, BYTE, or CHARACTER) within a string of that type. Example: TRIM(' a ') // returns 'a'. TRIM(LEADING FROM ' a ') // returns 'a '. TRIM(TRAILING FROM ' a ') // returns ' a'. LTRIM: LTRIM is a string manipulation function, used for manipulating all data types (BIT, BLOB, and CHARACTER), that returns a character string value of the same data type and content as source_string, but with any leading default singletons removed. ‫فض‬ ‫حذف‬ ‫برای‬ ‫تابع‬ ‫اين‬ ‫از‬‫ا‬‫سمت‬ ‫بعد‬ ‫خالي‬ ‫ی‬‫چپ‬.‫کنيم‬ ‫مي‬ ‫استفاده‬ ‫رشته‬ ‫يک‬ Example: LTRIM(' a ') // returns 'a '. NOTE: The LTRIM function is equivalent to TRIM(LEADING FROM source_string). RTRIM: RTRIM returns a string value of the same data type and content as source_string but with any trailing default singletons removed. The term singleton refers to a single part (BIT, BLOB, or CHARACTER) within a string of that type. ‫برا‬ ‫تابع‬ ‫اين‬ ‫از‬‫فض‬ ‫حذف‬ ‫ی‬‫ا‬.‫کنيم‬ ‫مي‬ ‫استفاده‬ ‫رشته‬ ‫يک‬ ‫راست‬ ‫سمت‬ ‫بعد‬ ‫خالي‬ ‫ی‬ Example: RTRIM(' a ') // returns ' a'. NOTE: The RTRIM function is equivalent to TRIM(TRAILING FROM source_string).
  • 35. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Transforming from one data type to another: You can use the CAST function to transform the data type of one value to match the data type of the other. For example, you can use the CAST function when you process generic XML messages. All fields in an XML message have character values, so if you want to perform arithmetic calculations or datetime comparisons, for example, you must convert the string value of the field into a value of the appropriate type using CAST. Example: 1) IF CAST(Body.Invoice.InvoiceDate AS DATE) = CURRENT_DATE THEN DO SOMETHING; ‫مقدار‬ ‫باال‬ ‫دستور‬InvoiceDate‫نوع‬ ‫به‬ ‫را‬DATE.‫ميکند‬ ‫تبديل‬ 2) DECLARE I INTEGER 1; DECLARE C CHARACTER; -- The following statement generates an error SET C = I; ‫دستور‬C = I‫متغيرهای‬ ‫اينکه‬ ‫علت‬ ‫به‬I‫و‬C،‫هستند‬ ‫متفاوتي‬ ‫انواع‬ ‫از‬‫نوشتن‬ ‫صحيح‬ ‫روش‬ ،‫ميکند‬ ‫توليد‬ ‫خطا‬‫باال‬ ‫دستور‬ :‫باشد‬ ‫مي‬ ‫زير‬ ‫بصورت‬ -- The following statement is valid SET C = CAST(I AS CHARACTER); ‫خروجي‬ ‫به‬ ‫دادن‬ ‫فرمت‬ ‫برای‬CAST:‫کنيم‬ ‫مي‬ ‫عمل‬ ‫زير‬ ‫بصورت‬ 3) DECLARE now CHARACTER; SET now = CAST(CURRENT_TIMESTAMP AS CHARACTER FORMAT 'yyyyMMdd-HHmmss'); 4) DECLARE source CHARACTER '16:18:30'; DECLARE target TIME; DECLARE pattern CHARACTER 'hh:mm:ss'; SET target = CAST(source AS TIME FORMAT pattern); ‫اعمال‬ ‫برای‬CodedCharSetId(CCSID)‫دستور‬ ‫به‬CAST:‫ميکنيم‬ ‫عمل‬ ‫زير‬ ‫صورت‬ ‫به‬ 5) SET target = CAST(source AS TIME FORMAT pattern CCSID 1256); ‫نود‬ ‫اگر‬‫ف‬ ‫خروجي‬‫ل‬‫و‬MQ،‫باشد‬ ‫مي‬‫تغيير‬ ‫برای‬encoding‫و‬CCSID:‫کنيم‬ ‫مي‬ ‫عمل‬ ‫زير‬ ‫بصورت‬ ‫آن‬ 6) SET OutputRoot.MQMD.CodedCharSetId = 500; SET OutputRoot.MQMD.Encoding = 785;
  • 36. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid DateTime Data types:  DATE data type: The DATE data type holds a Gregorian calendar date (year, month, and day). The format of a DATE literal is the word DATE followed by a space, followed by a date in single quotation marks in the form 'yyyy-MM-dd'. Example: DECLARE MyDate DATE; SET MyDate = DATE '2000-02-29';  TIME data type The TIME data type holds a time of day in hours, minutes, seconds, and fractions of a second. The format of a TIME literal is the word TIME followed by a space, followed by a time in single quotation marks in the form 'hh:mm:ss.ffffff'. Example: DECLARE MyTime TIME; SET MyTime = TIME '11:49:23.656'; Each of the hour, minute, and second fields in a TIME literal must always be two digits; the optional fractional seconds field can be up to 6 digits in length.  TIMESTAMP data type The TIMESTAMP data type holds a DATE and a TIME in years, months, days, hours, minutes, seconds, and fractions of a second. The format of a TIMESTAMP literal is the word TIMESTAMP followed by a space, followed by a time stamp in single quotation marks in the form 'yyyy-MM-dd HH:mm:ss.SSSSSS'. Example: DECLARE MyTimeStamp TIMESTAMP; SET MyTimeStamp = TIMESTAMP '1999-12-31 23:59:59'; The year field must always be four digits in length. The month, day, hour, and minute fields must always be two digits. (Do not omit leading zeros.) The optional fractional seconds field can be 0 - 6 digits long. NULL Data types: All ESQL data types (except REFERENCE) support the concept of the null value. A value of null means that the value is unknown, undefined, or uninitialized. Null values can arise when you refer to message fields that do not exist, access database columns for which no data has been supplied, or use the keyword NULL, which supplies a null literal value. Example: SET OutputRoot.XMLNS.Msg.Data.Name = NULL; -- this deletes the field ‫مقدار‬ ‫صحيح‬ ‫روش‬Null:‫متغير‬ ‫يک‬ ‫به‬ ‫دادن‬ SET OutputRoot.XMLNS.Msg.Data.Name VALUE = NULL; -- this assigns a NULL value to a field without deleting it REFERENCE data type: The REFERENCE data type holds the location of a field in a message. It cannot hold the location of a constant, a database table, a database column, or another reference. Note: If you use a REFERENCE, you are able to modify any element, even if the element is part of an input tree.
  • 37. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Variables: The names of ESQL variables are case sensitive.The simplest way to guarantee that you are using the correct case is always to define variables using uppercase names. You can assign an initial value to the variable on the DECLARE statement. If an initial value is not specified, scalar variables are initialized with the special value NULL, and ROW variables are initialized to an empty state. Subsequently, you can change the variable's value using the SET statement. Variable's scope: In the broker environment, the scope of variables is typically limited to the individual node. ‫محيط‬ ‫در‬IIB‫متغير‬ ‫يک‬ ‫محدوده‬‫نودی‬ ‫همان‬ ‫به‬ ‫محدود‬‫شده‬ ‫تعريف‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬. Variable's lifetime: is a measure of the time for which it retains its value. In the broker environment, the lifetime of a variable varies but is typically restricted to the life of a thread within a node. ‫محيط‬ ‫در‬IIB‫عمر‬ ‫طول‬‫م‬‫تغير‬‫کلي‬ ‫حالت‬ ‫در‬ ‫اما‬ ،‫است‬ ‫مختلف‬‫به‬ ‫محدود‬‫شده‬ ‫تعريف‬ ‫متغير‬ ‫نود‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬ ‫نودی‬ ‫ترد‬. Types of variables: ‫در‬IIB:‫داريم‬ ‫متغير‬ ‫نوع‬ ‫سه‬ 1) Normal 2) External 3) Shared  Normal variables: Normal variables variables have a lifetime of just one message passing through a node. They are visible to that message only. To define a normal variables, omit both the EXTERNAL and SHARED keywords. ‫باشد‬ ‫مي‬ ‫نود‬ ‫آن‬ ‫از‬ ‫پيغام‬ ‫يک‬ ‫عبور‬ ‫اندازه‬ ‫به‬ ‫فقط‬ ‫نرمال‬ ‫متغيرهای‬ ‫عمر‬ ‫طول‬‫استفاده‬ ‫قابل‬ ‫نود‬ ‫همان‬ ‫محدوده‬ ‫در‬ ‫فقط‬ ‫نرمال‬ ‫متغيرهای‬ . ‫تعري‬ ‫برای‬ ‫و‬ ‫هستند‬‫ح‬ ‫به‬ ‫را‬ ‫متغير‬ ‫يک‬ ‫است‬ ‫کافي‬ ‫آنها‬ ‫ف‬‫کنيم‬ ‫تعريف‬ ‫معمولي‬ ‫الت‬: Example: 1) DECLARE var1 INTEGER 42; 2) DECLARE var2 INTEGER; SET var2 = 38; 3) DECLARE mycolor CHARACTER 'blue';  External variables: External variables (defined with the EXTERNAL keyword) are also known as user-defined properties. They exist for the entire lifetime of a message flow and are visible to all messages passing through the flow. You can define external variables only at the module and schema level. You can modify their initial values (optionally set by the DECLARE statement) at design time, using the Message Flow editor, or at deployment time, using the Broker Archive editor. 1. The SHARED keyword is not valid within a function or procedure. 2. You cannot specify SHARED with a DataType of REFERENCE TO. To store a message tree in a shared variable, use the ROW data type. 3. EXTERNAL variables are implicitly constant. 4. When you use the NAMESPACE and NAME clauses, their values are implicitly constant and of type CHARACTER.
  • 38. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫عنوان‬ ‫به‬ ‫که‬ ‫خارجي‬ ‫متغيرهای‬user-defined properties‫برای‬ ‫و‬ ‫دارند‬ ‫وجود‬ ‫فلو‬ ‫عمر‬ ‫طول‬ ‫کل‬ ‫برای‬ ،‫شوند‬ ‫مي‬ ‫شناخته‬ ‫نيز‬ .‫هستند‬ ‫استفاده‬ ‫قابل‬ ‫پيامها‬ ‫همه‬.‫شوند‬ ‫مي‬ ‫تعريف‬ ‫اسکيما‬ ‫يا‬ ‫ماژول‬ ‫سطح‬ ‫در‬ ‫خارجي‬ ‫متغيرهای‬‫آنها‬ ‫به‬ ‫دادن‬ ‫اوليه‬ ‫مقدار‬ ‫برای‬ ‫دستور‬ ‫از‬DECLARE‫متغير‬‫در‬‫زمان‬design‫زمان‬ ‫در‬ ‫يا‬ ‫فلو‬Deploy‫اديتور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫برنامه‬broker Archive ‫را‬ ‫اوليه‬ ‫مقدار‬‫مي‬.‫دهيم‬‫های‬ ‫متغير‬External‫همانند‬ ‫حقيقت‬ ‫در‬Constant‫ها‬.‫هستند‬ Example 1: DECLARE mycolor EXTERNAL CHARACTER 'blue'; Example 2: DECLARE TODAYSCOLOR EXTERNAL CHARACTER; SET COLOR = TODAYSCOLOR;  Shared variables: Shared variables can be used to implement an in-memory cache in the message flow. Shared variables have a long lifetime and are visible to multiple messages passing through a flow. Use SHARED to define a shared variable. Shared variables are private to the flow (if declared within a schema) or node (if declared within a module), but are shared between instances of the flow (threads). No type of variable is visible beyond the flow level; for example, you cannot share variables across integration servers. Shared variables are initialized when the first message passes through the flow or node after each broker startup. ‫عنوان‬ ‫به‬ ‫استفاده‬ ‫برای‬ ‫اشتراکي‬ ‫متغيرهای‬Cache‫م‬ ‫در‬‫اولين‬ ، ‫برنامه‬ ‫استارت‬ ‫از‬ ‫بعد‬ ‫که‬ ‫هنگامي‬ ‫آنها‬ .‫دارند‬ ‫کاربرد‬ ‫فلو‬ ‫سيج‬ ‫کند‬ ‫مي‬ ‫عبور‬ ‫فلو‬ ‫از‬ ‫مسيج‬،.‫شوند‬ ‫مي‬ ‫دهي‬ ‫مقدار‬‫سطح‬ ‫در‬ ‫اشتراکي‬ ‫متغير‬ ‫يک‬ ‫اگر‬schema،‫شود‬ ‫تعريف‬‫آ‬‫برای‬ ‫نگاه‬‫يک‬ ‫فلو‬ ‫متغير‬private‫سطح‬ ‫در‬ ‫اگر‬ ‫و‬ ‫ايد‬ ‫مي‬ ‫حساب‬ ‫به‬module‫شودف‬ ‫تعريف‬‫آن‬‫برای‬ ‫گاه‬Node‫متغير‬ ‫يک‬private‫مي‬ ‫حساب‬ ‫به‬ ‫بين‬ ‫اما‬ ،‫آيد‬instance(‫فلو‬ ‫يک‬ ‫های‬‫ها‬ ‫ترد‬ ‫يعني‬).‫هستند‬ ‫مشترک‬ Example 1: DECLARE RequestCounter SHARED DECIMAL 0; Example 2: ‫متغير‬ ‫زير‬ ‫مثال‬ ‫در‬CacheQueueTable‫ب‬ ‫در‬ ‫که‬‫يرون‬‫شده‬ ‫تعريف‬ ‫ماژول‬،،‫شوند‬ ‫مي‬ ‫تعريف‬ ‫که‬ ‫فلو‬ ‫از‬ ‫هايي‬ ‫نمونه‬ ‫بوسيله‬ .‫است‬ ‫استفاده‬ ‫قابل‬ -- a shared variable that can be used by instances of a flow DECLARE CacheQueueTable SHARED ROW; CREATE COMPUTE MODULE Routing_using_database_and_memory_cache_Compute CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN ……. END; END MODULE;
  • 39. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Accessing elements With ESQL: Input Messages: If you are referring to the input message tree to interrogate its content in a Compute node, use correlation name InputRoot followed by the path to the element to which you are referring. ‫داريد‬ ‫قصد‬ ‫اگر‬‫در‬ComputeNode‫نام‬ ‫از‬ ‫کنيد‬ ‫پيدا‬ ‫دسترسي‬ ‫ورودی‬ ‫های‬ ‫داده‬ ‫به‬InputRoot‫ديتا‬ ‫درخت‬ ‫به‬ ‫دسترسي‬ ‫برای‬ ‫استفاده‬.‫کنيد‬:‫است‬ ‫شده‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫زير‬ ‫ساختار‬ ‫با‬ ‫ورودی‬ ‫ديتای‬ ‫که‬ ‫است‬ ‫اين‬ ‫بر‬ ‫فرض‬ ‫زير‬ ‫مثالهای‬ ‫در‬ Example: 1) InputRoot.XMLNS.Data.Invoice ‫فيلد‬ ‫به‬ ‫فوق‬ ‫دستور‬Invoice‫شاخه‬ ‫زير‬ ‫از‬Data‫شاخه‬ ‫زير‬ ‫در‬ ‫که‬XMLNS‫شاخه‬ ‫در‬ ‫نيز‬ ‫آن‬ ‫و‬InputRoot.‫کند‬ ‫مي‬ ‫اشاره‬ ‫دارد‬ ‫قرار‬ 2) InputRoot.XMLNS."Customer Data".Invoice ‫شاخه‬ ‫سر‬ ‫چون‬ ‫فوق‬ ‫دستور‬ ‫در‬Invoice‫فيلد‬Customer Data‫عبارت‬ ‫و‬ ‫شده‬ ‫فرض‬Customer Data‫به‬ ‫اشاره‬ ‫برای‬ ،‫باشد‬ ‫مي‬ ‫فاصله‬ ‫دارای‬‫آن‬ ‫از‬ ‫بايد‬".‫کرد‬ ‫استفاده‬ 3) InputRoot.XMLNS.*.Invoice.Value ‫اي‬ ‫در‬‫ش‬ ‫سر‬ ‫که‬ ‫است‬ ‫اين‬ ‫معني‬ ‫به‬ * ‫مثال‬ ‫ن‬‫اخه‬invoice‫ديگر‬ ‫عبارت‬ ‫به‬ .‫نيست‬ ‫مهم‬Invoice‫از‬ ‫ای‬ ‫شاخه‬ ‫زير‬ ‫هر‬ ‫در‬XMLNS،‫باشد‬ ‫که‬‫شده‬ ‫پيدا‬ .‫شود‬ ‫مي‬ ‫برگردانده‬ ‫و‬ 4) InputRoot.XMLNS."Customer Data".{'Customer-' || CurrentCustomer}.Invoice ‫فوق‬ ‫مثال‬ ‫در‬Invoice‫های‬ ‫شاخه‬ ‫سر‬ ‫از‬ ‫کردام‬ ‫هر‬ ‫در‬Customer‫يا‬CurrentCustomer‫باشد‬ ‫که‬.‫شود‬ ‫مي‬ ‫برگردانده‬ 5) InputRoot.XMLNS.Data.Invoice[1] InputRoot.XMLNS.Data.Invoice ‫فيلد‬ ‫فرضا‬ ‫اگر‬ ‫مثال‬ ‫اين‬ ‫در‬Invoice‫فيلد‬ ‫يعني‬ ،‫باشد‬ ‫مورد‬ ‫يک‬ ‫از‬ ‫بيش‬Data‫فيلد‬ ‫يک‬ ‫از‬ ‫بيش‬Invoice‫داشته‬ ‫خود‬ ‫مجموعه‬ ‫زير‬ ‫در‬‫مي‬ ‫باشد‬ ‫بصورت‬ ‫آرايه‬ ‫همانند‬ ‫توان‬Index.‫کرد‬ ‫اشاره‬ ‫آن‬ ‫به‬‫د‬‫ايندکس‬ ‫به‬ ‫اگر‬ ‫حالت‬ ‫اين‬ ‫ر‬invoice‫اول‬ ‫خانه‬ ‫همان‬ ‫به‬ ‫باز‬ ‫هم‬ ‫نکنيم‬ ‫اشاره‬،‫شود‬ ‫مي‬ ‫اشاره‬ .‫است‬ ‫اول‬ ‫دستور‬ ‫مثل‬ ‫هم‬ ‫دوم‬ ‫دستور‬ ‫خروجي‬ ‫يعني‬ :‫نکته‬‫های‬ ‫عالمت‬ ‫از‬ ‫استفاده‬ ‫با‬>)‫شود‬ ‫محاسبه‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫گذاری‬ ‫ايندکس‬ ‫(يعني‬‫و‬<)‫آخر‬ ‫به‬ ‫اول‬ ‫از‬ ‫گذاری‬ ‫(ايندکس‬‫ت‬ ‫مي‬‫وان‬‫به‬‫فيلد‬‫مو‬‫رد‬ ‫نظر‬‫کرد‬ ‫اشاره‬ ‫زير‬ ‫شکل‬ ‫به‬‫کنيد‬ ‫فرض‬ ‫زير‬ ‫مثالهای‬ ‫در‬ ،4‫تا‬invoice‫داريم‬:
  • 40. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 6) InputRoot.*[] ‫فوق‬ ‫مثال‬‫شاخه‬ ‫زير‬ ‫در‬ ‫موجود‬ ‫فرزندان‬ ‫تمام‬ ‫به‬InputRoot.‫کند‬ ‫مي‬ ‫اشاره‬ 7) InputRoot.*[<] ‫فرزند‬ ‫آخرين‬ ‫به‬ ‫دستور‬ ‫اين‬InputRoot‫اينجا‬ ‫در‬ ‫که‬ ‫ميکند‬ ‫اشاره‬‫همان‬‫م‬ ‫ورودی‬ ‫پيام‬ ‫بدنه‬.‫شود‬ ‫ي‬ 8) WHILE count < 32 DO SET TOTAL = TOTAL + InputRoot.XMLNS.Data.Invoice[count].Amount; SET COUNT = COUNT + 1 END WHILE; ‫حلقه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫مثال‬ ‫اين‬ ‫در‬While‫آيتم‬ ‫روی‬ ‫بر‬Invoice.‫ايم‬ ‫کرده‬ ‫ايجاد‬ ‫حلقه‬ Example: DECLARE InputValue CHARACTER ''; SET InputValue = CAST (InputRoot.BLOB.BLOB AS CHARACTER CCSID 1256); ‫بصورت‬ ‫ورودی‬ ‫ديتای‬ ‫است‬ ‫اين‬ ‫بر‬ ‫فرض‬ ‫فوق‬ ‫مثال‬ ‫در‬BLOB‫دستور‬ ‫با‬ ‫و‬ ‫دريافت‬ ‫را‬ ‫آن‬ ‫فوق‬ ‫دستور‬ ‫که‬ ‫باشد‬ ‫مي‬CAST‫نوع‬ ‫به‬ STRING‫متغير‬ ‫در‬ ‫و‬ ‫تبديل‬InputValue‫قرا‬.‫شود‬ ‫مي‬ ‫داده‬ ‫ر‬ Output Messages: If you are referring to the output message tree to set or modify its content in the Compute node, use correlation name OutputRoot followed by the parser name ‫خروجي‬ ‫روی‬ ‫بر‬ ‫را‬ ‫ديتايي‬ ‫داريد‬ ‫قصد‬ ‫اگر‬ ‫همچنين‬ComputeNode‫ده‬ ‫قرار‬‫نام‬ ‫از‬ ،‫يد‬OutputRoot.‫کنيد‬ ‫استفاده‬ Example: SET OutputRoot.BLOB.BLOB = CAST( 'Hi IIB Developer' AS BLOB CCSID 1256 ); ‫عبارت‬ ‫دستور‬ ‫اين‬'Hi IIB Developer'‫نوع‬ ‫به‬ ‫تبديل‬ ‫را‬BLOB.‫دهد‬ ‫مي‬ ‫قرار‬ ‫خروجي‬ ‫در‬ ‫و‬ ‫نموده‬ ‫درختي‬ ‫بصورت‬ ‫ديتا‬ ‫ساختار‬ ‫اينکه‬ ‫بر‬ ‫فرض‬ ‫با‬ : ‫مثال‬‫شکل‬ ‫به‬: ‫باشد‬ ‫مي‬ ‫زير‬ IF InputRoot.XMLNS.Invoice.InvoiceNo IS NULL THEN DO; -- more ESQL -- END IF; SET OutputRoot.XMLNS.Invoice.Customer.FirstName = UPPER(InputRoot.Invoice.Customer.FirstName); SET OutputRoot.XMLNS.Invoice.InvoiceNo = InputRoot.Invoice.InvoiceNo + 1000; SET OutputRoot.MRM.Invoice.TillNumber = 26; SET OutputRoot.MRM.BooleanElement1 = true; ‫باال‬ ‫مثال‬ ‫در‬‫اگ‬:‫داد‬ ‫انجام‬ ‫را‬ ‫کار‬ ‫اين‬ ‫توان‬ ‫مي‬ ‫زير‬ ‫دستورات‬ ‫با‬ ‫دهيم‬ ‫تغيير‬ ‫را‬ ‫خروجي‬ ‫مقدار‬ ‫بخواهيم‬ ‫ر‬ 0) SET FullName = UPPER(FirstName) || ' ' || UPPER(LastName); 1) SET OutputRoot = InputRoot; 2) SET OutputRoot.XMLNSC.Invoice.Customer.FullName = FullName;
  • 41. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Accessing the environment tree: The environment tree has its own correlation name, Environment, and you must use this name in all ESQL statements that refer to, or set, the content of this tree. The environment tree is always created when the logical tree is created for an input message. However, the message flow neither populates it, nor uses its contents. You can use this tree for your own purposes, for example, to pass information from one node to another. You can use the whole tree as a scratchpad or working area. Only one environment tree is present for the duration of the message flow. Any data updates, or additions, that you make in one node are retained, and all of the nodes in the message flow have access to the latest copy of this tree. Even if the message flows back through the message flow (for example, if an exception is thrown, or if the message is processed through the second terminal of the FlowOrder node), the latest state is retained. (In contrast to the local environment tree, which reverts to its previous state if the message flows back through the message flow.) ‫درخت‬Environment‫ايجاد‬ ‫هنگام‬( ‫ورودی‬ ‫منطقي‬ ‫درخت‬Input message‫ايجاد‬ )‫را‬ ‫خورد‬ ‫نظر‬ ‫مورد‬ ‫ديتای‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫و‬ ‫شود‬ ‫مي‬ ‫طول‬ ‫در‬ ‫و‬ ‫دهيد‬ ‫قرار‬ ‫ان‬ ‫روی‬ ‫بر‬Flow.‫نماييد‬ ‫استفاده‬ ‫و‬ ‫کرده‬ ‫منتقل‬ ‫ديگر‬ ‫نود‬ ‫به‬ ‫نود‬ ‫يک‬ ‫از‬‫طوب‬ ‫در‬‫مس‬ ‫يک‬‫ي‬‫در‬ ‫يک‬ ‫فقط‬ ‫فلو‬ ‫ج‬‫خت‬ ‫منطقي‬Enviroment‫اس‬ ‫و‬ ‫دسترسي‬ ‫قابل‬ ‫فول‬ ‫مسيج‬ ‫نودهای‬ ‫همه‬ ‫در‬ ‫دهيد‬ ‫انجام‬ ‫آن‬ ‫های‬ ‫داده‬ ‫در‬ ‫شما‬ ‫که‬ ‫تغييری‬ ‫هر‬ .‫شود‬ ‫مي‬ ‫ايجاد‬‫تفاده‬ ‫مانند‬ ‫داليلي‬ ‫به‬ ‫فلو‬ ‫مسيج‬ ‫اگر‬ ‫حتي‬ ،‫باشد‬ ‫مي‬Exception‫آخرين‬ ،‫برگردد‬ ‫عقب‬ ‫به‬State‫منط‬ ‫درخت‬ ‫اما‬ .‫شود‬ ‫مي‬ ‫نگهداشته‬ ‫آن‬‫د‬ ‫قي‬‫يگری‬ ‫نام‬ ‫به‬local environment.‫گردد‬ ‫مي‬ ‫بر‬ ‫قبلي‬ ‫مرحله‬ ‫به‬ ‫نيز‬ ‫آن‬ ‫وضعيت‬ ‫عقب‬ ‫به‬ ‫برگشت‬ ‫هنگام‬ ‫که‬ ‫دارد‬ ‫وجود‬ Example: SET Environment.Variables.testVariable = 1; SET Environment.Variables = ROW('granary' AS bread, 'reisling' AS wine, 'stilton' AS cheese); SET Environment.Variables.Colors[] = LIST{'yellow', 'green', 'blue', 'red', 'black'}; SET Environment.Variables.Country[] = LIST{ROW('UK' AS name, 'pound' AS currency), ROW('USA' AS name, 'dollar' AS currency)}; Accessing the local environment tree: The local environment tree has its own correlation name, LocalEnvironment, and you must use this name in all ESQL statements that refer to or set the content of this tree. The local environment tree is used by the broker, and you can refer to and modify this information. You can also extend the tree to contain information that you create yourself. You can create subtrees of this tree that you can use as a scratchpad or working area. The message flow sets up information in two subtrees, Destination and WrittenDestination, below the LocalEnvironment root. You can refer to the content of both of these subtrees, and you can write to the Destination tree to influence the way in which the message flow processes your message. However, if you write to the Destination tree, follow the defined structure to ensure that the tree remains valid. ‫درخت‬LocalEnvironment‫نما‬ ‫اصالح‬ ‫يا‬ ‫استفاده‬ ‫را‬ ‫درخت‬ ‫اين‬ ‫در‬ ‫موجود‬ ‫اطالعات‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫و‬ ‫شود‬ ‫مي‬ ‫استفاده‬ ‫برورکر‬ ‫توسط‬.‫ييد‬ ‫ن‬ ‫را‬ ‫خودتان‬ ‫شده‬ ‫توليد‬ ‫اطالعات‬ ‫توانيد‬ ‫مي‬ ‫همچنين‬‫درخت‬ ‫زير‬ ‫در‬ .‫نماييد‬ ‫نگهداری‬ ‫آن‬ ‫در‬ ‫يز‬LocalEnvironment‫درخت‬ ‫زير‬ ‫دو‬‫ب‬‫ا‬ ‫نامهای‬Destination‫و‬WrittenDestination.‫گيرند‬ ‫مي‬ ‫قرار‬‫اطالعا‬ ‫فقط‬ ‫و‬ ‫بخوانيد‬ ‫را‬ ‫درخت‬ ‫زير‬ ‫دو‬ ‫هر‬ ‫اطالعات‬ ‫توانيد‬ ‫ممي‬ ‫شما‬‫زير‬ ‫ت‬ ‫درخت‬Destination.‫دهيد‬ ‫تغيير‬ ‫را‬‫درخت‬ ‫که‬ ‫خواهيد‬ ‫مي‬ ‫شما‬ ‫اگر‬LocalEnvironment‫نود‬ ‫خروجي‬ ‫در‬Compute‫شما‬ ،‫گيرد‬ ‫قرار‬ ‫بايد‬‫خاصيت‬ ‫مقدار‬Compute mode‫شامل‬ ‫که‬ ‫دهيد‬ ‫تغيير‬ ‫مقداری‬ ‫به‬ ‫را‬ ‫ان‬LocalEnvironment‫مقدار‬ ‫مثال‬ .‫باشد‬ALL. Example: SET OutputLocalEnvironment.Destination.HTTP.RequestURL = newUrl; SET OutputLocalEnvironment.Destination.SOAP.Request.Transport.HTTP.WebServiceURL = newUrl; SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName = newQueue;
  • 42. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Generating multiple output messages: You can use the PROPAGATE statement to generate multiple output messages in the Compute node. The output messages that you generate can have the same or different content. You can also direct output messages to any of the four alternate output terminals of the Compute node, or to a Label node. by default the node clears the output message buffer and reclaims the memory when the PROPAGATE statement completes, So you need to set Output again, after using propagate command or use DELETE NONE. ‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬PROPAGATE‫مانند‬ ‫هايي‬ ‫نود‬ ‫برای‬ ‫توان‬ ‫مي‬Compute‫ا‬ ‫بيش‬ ‫که‬‫های‬ ‫خروجي‬ ‫برای‬ ،‫دارند‬ ‫خروجي‬ ‫يک‬ ‫ز‬ ‫ارس‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫ديتای‬ ‫مختلف‬‫ا‬:‫کرد‬ ‫ل‬ Example: SET OutputRoot = InputRoot; PROPAGATE; SET OutputRoot = InputRoot; PROPAGATE TO TERMINAL 'out1'; SET OutputRoot = InputRoot; PROPAGATE TO LABEL 'ThirdCopy'; SELECT FROM Input Messages: ‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫ورودی‬ ‫درخت‬ ‫روی‬ ‫بر‬ ‫توان‬ ‫مي‬SELECT)‫(حلقه‬ ‫لوپ‬‫کرد‬ ‫استخراج‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫ديتای‬ ‫و‬ ‫زد‬: Example: DECLARE CurrentCustomer CHAR 'Smith'; SET OutputRoot.XMLNS.Invoice[] = ( SELECT X FROM InputRoot.XMLNS.Invoice[] AS X WHERE X.Customer.LastName = CurrentCustomer ); ‫برابر‬ ‫آنها‬ ‫خانوادگي‬ ‫نام‬ ‫که‬ ‫رکوردهايي‬ ‫همه‬ ‫باال‬ ‫مثال‬smith‫خرو‬ ‫در‬ ‫را‬ ‫باشد‬.‫نويسد‬ ‫مي‬ ‫جي‬ CARDINALITY function The CARDINALITY function returns the number of elements in a list. A common use of this function is to determine the number of fields in a list before iterating over them. ‫ليست‬ ‫يک‬ ‫در‬ ‫وجود‬ ‫عناصر‬ ‫تعداد‬ ‫آوردن‬ ‫بدست‬ ‫برای‬‫ا‬‫اي‬ ‫ز‬.‫شود‬ ‫مي‬ ‫استفاده‬ ‫تابع‬ ‫ن‬ Examples: 1) DECLARE CountF1 INT CARDINALITY(OutputRoot.XMLNS.Data.Source.F1[]); ‫مثال‬1)‫در‬ ‫موجود‬ ‫عناصر‬ ‫تعداد‬F1.‫دهد‬ ‫مي‬ ‫را‬ 2) DECLARE CountF1F12 INT CARDINALITY(SELECT F.* FROM OutputRoot.XMLNS.Data.Source.F1[] AS F where F = 'F12'); ‫مثال‬2‫از‬ ‫عناصری‬ ‫تعداد‬ )F1‫بابر‬ ‫آن‬ ‫مقدار‬ ‫که‬'F12'.‫دهد‬ ‫مي‬ ‫را‬ ‫باشد‬ ‫مي‬ 3) Body.Invoice.Item[CARDINALITY(Body.Invoice.Item[]) - 2].Quantity ‫مثال‬3)‫کند‬ ‫مي‬ ‫اشاره‬ ‫آخر‬ ‫به‬ ‫مانده‬ ‫تا‬ ‫سه‬ ‫عنصر‬ ‫به‬.‫در‬ ‫ها‬ ‫ارايه‬ESQL.‫شوند‬ ‫مي‬ ‫شروع‬ ‫يک‬ ‫شمراه‬ ‫از‬
  • 43. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Interaction with databases using ESQL: Use ESQL statements and functions to read from, write to, and modify databases from your message flows. You can access databases from Compute, Database, DatabaseInput, and Filter nodes. The same ESQL functions and procedures are supported in all these nodes. Select Throw exception on database error and Treat warnings as errors, and set Transaction to Automatic on each node that access a database, to provide maximum flexibility. ‫شما‬‫دستورات‬ ‫از‬ ‫استفاده‬ ‫با‬ESQL‫توانيد‬ ‫مي‬‫خو‬ ‫ديتابيس‬ ‫روی‬ ‫بر‬ ‫را‬ ‫اطالعات‬ ‫اصالح‬ ‫و‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫مانند‬ ‫عملياتي‬‫انجام‬ ‫د‬‫د‬.‫هيد‬‫شما‬ ‫نودهای‬ ‫از‬ ‫توانيد‬ ‫مي‬Compute, Database, DatabaseInput, Filter.‫نماييد‬ ‫استفاده‬ ‫ديتابيس‬ ‫با‬ ‫کار‬ ‫برای‬‫ا‬ ‫برای‬‫ن‬‫در‬ ‫بيشتر‬ ‫عطاف‬‫با‬ ‫کار‬ ‫گزينه‬ ‫توانيد‬ ‫مي‬ ‫ديتابيس‬Throw exception on database error‫يک‬ ‫خطا‬ ‫هر‬ ‫برای‬ ‫تا‬ ‫کنيد‬ ‫انتخاب‬ ‫را‬Exception‫همچنين‬ ،‫کند‬ ‫توليد‬ ‫گزينه‬ ‫انتخاب‬ ‫با‬ ‫توانيد‬ ‫مي‬Treat warnings as errors،‫نود‬ ‫آن‬ ‫که‬ ‫کنيد‬ ‫کاری‬‫با‬warning‫بر‬ ‫خطا‬ ‫مثل‬ ‫شما‬ ‫برای‬ ‫نيز‬ ‫ها‬.‫کند‬ ‫خورد‬‫د‬‫ستورات‬ ‫گيرد‬ ‫مي‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫ديتابيس‬ ‫با‬ ‫کار‬ ‫برای‬ ‫زير‬،:  The “SELECT function” retrieves data from a table. ‫دستور‬SELECT‫برای‬‫رکورد‬ ‫يکسری‬ ‫انتخاب‬.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬  The “UPDATE statement” changes one or more values stored in zero or more rows. ‫دستور‬UPDATE‫برای‬‫بروزرساني‬.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬ ‫اطالعات‬  The “DELETE FROM statement” removes rows from a database table. ‫دستور‬DELETE FROM.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬ ‫اطالعات‬ ‫حذف‬ ‫برای‬  The “INSERT statement” adds a row to a database table. ‫دستور‬INSERT.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫جدول‬ ‫از‬ ‫اطالعات‬ ‫حذف‬ ‫برای‬  The “CALL statement” invokes a stored procedure. ‫دستور‬CALL‫فراخواني‬ ‫برای‬Stored Procedures.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬  The “PASSTHRU function” can be used to make complex selections not currently supported by the broker, those containing GROUP BY or HAVING clauses. ‫دستور‬PASSTHRU‫برای‬‫انجام‬SELECT‫که‬ ‫مواردی‬ ‫مانند‬ ‫نيست‬ ‫بروکر‬ ‫طريق‬ ‫از‬ ‫اجرا‬ ‫قابل‬ ‫عادی‬ ‫حالت‬ ‫در‬ ‫که‬ ‫پيچيده‬ ‫های‬GROUP BY‫يا‬HAVING.‫شود‬ ‫مي‬ ‫استفاده‬ ‫دارند‬‫دستورات‬ ‫ايجاد‬ ‫برای‬ ‫دستور‬ ‫اين‬ ‫از‬ ‫همچنين‬Administration‫مان‬ ‫ديتابيسي‬‫ج‬ ‫ايجاد‬ ‫ند‬‫و‬ ‫دول‬ .‫شود‬ ‫مي‬ ‫استفاده‬ ‫نيز‬ ... Committing database updates: ‫گزي‬ ‫از‬ ‫استفاده‬ ‫با‬‫نه‬Transaction‫در‬Node‫ها‬‫فرض‬ ‫پيش‬ ‫مقدار‬ .‫کرد‬ ‫مشخص‬ ‫را‬ ‫کاميت‬ ‫زمان‬ ‫توان‬ ‫مي‬Automatic‫روی‬ ‫را‬ ‫آن‬ ‫اگر‬ .‫است‬ Commit‫روی‬ ‫بر‬ ‫آن‬ ‫دادن‬ ‫قرار‬ ‫البته‬ .‫است‬ ‫خودمان‬ ‫بدست‬ ‫کاميت‬ ‫کنترل‬ ،‫دهيم‬ ‫قرار‬Commit‫روی‬ ‫بر‬ ‫که‬ ‫چرا‬ ‫است‬ ‫زيادی‬ ‫دقت‬ ‫نيازمند‬‫ر‬‫فتار‬ ‫مانند‬ ‫المانها‬ ‫بعضي‬PROPAGATE‫تاث‬.‫گذارد‬ ‫مي‬ ‫ير‬
  • 44. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid SELECT function The SELECT function is the usual and most efficient way of transforming messages. You can use SELECT to:  Comprehensively reformat messages  Access database tables  Make an output array that is a subset of an input array  Make an output array that contains only the values of an input array  Count the number of entries in an array  Select the minimum or maximum value from a number of entries in an array  Sum the values in an array ‫دستور‬SELECT‫در‬ESQL‫کاربر‬‫برای‬ ‫آن‬ ‫از‬ ،‫دارد‬ ‫متفاوتي‬ ‫دهای‬SELECT‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫ديتابيس‬ ‫از‬‫همچنين‬ ،‫ب‬ ‫توان‬ ‫مي‬ ‫آن‬ ‫از‬‫بر‬ ‫کار‬ ‫رای‬‫ر‬‫وی‬ ‫آن‬ ‫از‬ ‫توان‬ ‫مي‬ ‫و‬ ‫ميکند‬ ‫برخورد‬ ‫ديتابيس‬ ‫يک‬ ‫مثل‬ ‫ورودی‬ ‫ديتای‬ ‫با‬ ‫يعني‬ ،‫کرد‬ ‫استفاده‬ ‫ورودی‬ ‫های‬ ‫داده‬Select‫سپس‬ ‫و‬ ‫کرد‬‫ديتای‬Select‫را‬ ‫شده‬ ‫خروج‬ ‫در‬ ‫و‬ ‫کرد‬ ‫پردازش‬.‫داد‬ ‫قرار‬ ‫ي‬ :‫نکته‬‫برای‬‫دستورات‬ ‫بتوانيم‬ ‫اينکه‬ESQL‫کنيم‬ ‫اجرا‬ ‫ديتابيس‬ ‫روی‬ ‫بر‬ ‫را‬،‫کلمه‬ ‫از‬ ‫بعد‬ ‫را‬ ‫جدول‬ ‫نام‬Database‫و‬ ‫داده‬ ‫قرار‬‫س‬‫نام‬ ‫به‬ ‫پس‬‫جدول‬ ‫مانند‬ ‫اگر‬ .‫کنيم‬ ‫مي‬ ‫اشاره‬DB2‫به‬ ‫اشاره‬ ‫به‬ ‫نياز‬SCHEMA‫را‬ ‫آن‬ ، ‫باشد‬ ‫داشته‬.‫آوريم‬ ‫مي‬ ‫جدول‬ ‫از‬ ‫قبل‬ ‫نيز‬ SELECT ... FROM Database.TABLE1 WHERE ... Or SELECT ... FROM Database.SCHEMA.TABLE1 WHERE ... :‫نکته‬‫يک‬ ‫به‬ ‫بخواهيم‬ ‫اگر‬Database‫برای‬ ‫که‬ ‫ديتاسورسي‬ ‫از‬ ‫خارج‬ ‫در‬‫نود‬‫ب‬ ‫زير‬ ‫بصورت‬ ‫را‬ ‫کد‬ ‫بايد‬ ‫بايم‬ ‫داشته‬ ‫دسترسي‬ ‫شده‬ ‫ست‬.‫نويسيم‬ SELECT ... FROM Database.DataSource.SCHEMA.TABLE1 WHERE ... Example1: ‫دستور‬SELECT‫زبان‬ ‫به‬ ‫که‬ ‫را‬ ‫زير‬SQL:‫بگيريد‬ ‫نظر‬ ‫در‬ ‫شده‬ ‫نوشته‬ SQL SELECT column1, column2 FROM table1 ‫بخواهيم‬ ‫اگر‬SELECT‫باال‬ ‫در‬ ‫شده‬ ‫اشاره‬‫زبان‬ ‫به‬ ‫را‬ESQL‫صورت‬ ‫به‬ ،‫بنويسيم‬‫های‬:‫شود‬ ‫نوشته‬ ‫تواند‬ ‫مي‬ ‫زير‬ ESQL SELECT T.column1, T.column2 FROM Database.table1 AS T ESQL SELECT table1.column1, table1.column2 FROM Database.table1
  • 45. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ESQL SELECT T.column1, T.column2 FROM Database.table1 AS T WHERE T.column3 = Body.Field2 ESQL SELECT T.* FROM Database.Table1 AS T ‫همانند‬SQL‫کلمه‬ ‫از‬ ‫معمولي‬AS‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫نيز‬ ‫ستونها‬ ‫نام‬ ‫تغيير‬ ‫برای‬: SELECT T.column1 AS price, T.column2 AS item FROM Database.table1 AS T WHERE... Example2: ‫دستور‬ ‫خروجي‬ ،‫داريم‬ ‫را‬ ‫ذيل‬ ‫های‬ ‫داده‬ ‫با‬ ‫جدولي‬ ‫کنيد‬ ‫فرض‬ESQL:‫باشد‬ ‫مي‬ ‫زير‬ ‫صورت‬ ‫به‬ ‫شده‬ ‫داده‬ USERTABLE Column1 Column2 1 value1 Value2 2 Value3 Value4 ESQL : SET OutputRoot.XML.Test.Result[] = (SELECT T.Column1, T.Column2 FROM Database.USERTABLE AS T); ،‫شود‬ ‫مي‬ ‫برگردانده‬ ‫جدول‬ ‫رکورد‬ ‫دو‬ ‫هر‬ ‫پس‬ ‫ندارد‬ ‫شرط‬ ‫باال‬ ‫دستور‬‫خروجي‬XML‫است‬ ‫زير‬ ‫بصورت‬ ‫فوق‬ ‫دستور‬: <Test> <Result> <Column1>value1</Column1> <Column2>value2</Column2> </Result> <Result> <Column1>value3</Column1> <Column2>value4</Column2> </Result> </Test>
  • 46. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Example3: ‫جدو‬ ‫همان‬‫برای‬ ‫است‬ ‫مثالي‬ ‫زير‬ ‫دستور‬ ،‫بگيريد‬ ‫نظر‬ ‫در‬ ‫را‬ ‫باال‬ ‫ل‬JOIN:‫جداول‬ SET OutputRoot.XML.Test.Result[] = (SELECT A.Column1 AS FirstColumn, A.Column2 AS SecondColumn, B.Column3 AS ThirdColumn, B.Column4 AS FourthColumn FROM Database.USERTABLE1 AS A, Database.USERTABLE2 AS B WHERE A.Column1 = 'value1' AND B.Column4 = 'value8'); :‫فوق‬ ‫دستور‬ ‫خروجي‬ <Test> <Result> <FirstColumn>value1</FirstColumn> <SecondColumn>value2</SecondColumn> <ThirdColumn>value7</ThirdColumn> <FourthColumn>value8</FourthColumn> </Result> </Test> Example3: SET OutputRoot.XMLNS.Data.Output[] = (SELECT R.Quantity, R.Author FROM InputRoot.XMLNS.Invoice.Purchases.Item[] AS R); :‫است‬ ‫زير‬ ‫شکل‬ ‫به‬ ‫دستور‬ ‫اين‬ ‫خروجي‬ <Data> <Output> <Quantity>2</Quantity> <Author>Neil Bradley</Author> </Output> <Output> <Quantity>1</Quantity> <Author>Don Chamberlin</Author> </Output> <Output> <Quantity>1</Quantity> <Author>Philip Heller, Simon Roberts</Author> </Output> </Data> : ‫نکته‬‫شکل‬ ‫به‬ ‫زير‬ ‫صورت‬ ‫به‬ ‫را‬ ‫باال‬ ‫دستور‬‫حلقه‬‫نوشت‬ ‫توان‬ ‫مي‬ ‫هم‬‫دستور‬ ‫البته‬ ،SELECT‫است‬ ‫سريعتر‬ ‫و‬ ‫مختصر‬ ‫باال‬: DECLARE i INTEGER 1; DECLARE count INTEGER CARDINALITY(InputRoot.XMLNS.Invoice.Purchases.Item[]); WHILE (i <= count) SET OutputRoot.XMLNS.Data.Output[i].Quantity = InputRoot.XMLNS.Invoice.Purchases.Item[i].Quantity; SET OutputRoot.XMLNS.Data.Output[i].Author = InputRoot.XMLNS.Invoice.Purchases.Item[i].Author; SET i = i+1; END WHILE;
  • 47. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid PASSTHRU statement: The PASSTHRU function evaluates an expression and executes the resulting character string as a database statement, returning a result set. ‫دستور‬ ‫از‬PASSTHRU‫صورت‬ ‫به‬ ‫که‬ ‫ديتابيسي‬ ‫دستورات‬ ‫اجرای‬ ‫برای‬‫و‬ ‫شده‬ ‫تهيه‬ ‫دايناميک‬‫رشته‬ ‫يک‬String،‫است‬‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬. Example: SET myVar = 'SELECT * FROM user1.stocktable'; SET OutputRoot.XMLNS.Data[] = PASSTHRU(myVar); // The following example creates the table Customers in schema Shop in database DSN1: PASSTHRU 'CREATE TABLE Shop.Customers ( CustomerNumber INTEGER, FirstName VARCHAR(256), LastName VARCHAR(256), Street VARCHAR(256), City VARCHAR(256), Country VARCHAR(256) )' TO Database.DSN1; // The following example "drops" (that is, deletes) the table Customers from schema Shop in database DSN1: PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1; // he following example performs a SELECT on table Table1 in schema Schema1 in database DSN1, passing two parameters to the WHERE clause and asking for the result set to be ordered in ascending name order. The result set is assigned to the SelectResult folder: SET OutputRoot.XML.Data.SelectResult.Row[] = PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name = ? ORDER BY Name' TO Database.DSN1 VALUES ('Name1', 'Name4')); Note: PASSTHRU can still be used to call stored procedures if:  Only input parameters can be used.  Only single result sets are supported. If you don't meet these criteria, use the CALL statement because PASSTHRU imposes limitations (you cannot use output parameters, for example). ‫از‬‫د‬‫ستور‬PASSTHRU‫م‬ ‫دوشرط‬ ‫به‬‫ي‬‫توان‬‫فراخواني‬ ‫برای‬‫خروجي‬ ‫پارامتر‬ ‫و‬ ‫باشد‬ ‫داشته‬ ‫ورودی‬ ‫پارامتر‬ ‫فقط‬ ‫اينکه‬ ‫يکي‬ ،‫کرد‬ ‫استفاده‬ ‫پي‬ ‫اس‬‫ن‬‫داشته‬ ‫اينکه‬ ‫دوم‬ ‫و‬ ‫باشد‬‫اگر‬‫کرسر‬‫شما‬ ‫پي‬ ‫اس‬ ‫اگر‬ ،‫نباشد‬ ‫يکي‬ ‫از‬ ‫بيش‬ ،‫داشت‬ ‫خروجي‬ ‫عنوان‬ ‫به‬‫دستور‬ ‫از‬ ‫بايد‬ ‫ندارد‬ ‫را‬ ‫شرط‬ ‫دو‬ ‫اين‬CALL‫برای‬‫ف‬‫راخواني‬ .‫نماييد‬ ‫استفاده‬ ‫پي‬ ‫اس‬
  • 48. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid CALL statement: To invoke a procedure that is stored in a database, use the ESQL CALL statement. The stored procedure must be defined by a CREATE PROCEDURE statement that has a Language clause of DATABASE and an EXTERNAL NAME clause that identifies the name of the procedure in the database and, optionally, the database schema to which it belongs. When you invoke a stored procedure with the CALL statement, the broker ensures that the ESQL definition and the database definition match, This means, the external name of the procedure must match a procedure in the database and the number,type and direction of parameters must be the same. The following restrictions apply to the use of stored procedures: Overloaded procedures are not supported. (An overloaded procedure is one that has the same name as another procedure in the same database schema with a different number of parameters, or parameters with different types.) If the broker detects that a procedure is overloaded, it raises an exception. In an Oracle stored procedure declaration, you are not permitted to constrain CHAR and VARCHAR2 parameters with a length, and NUMBER parameters with a precision or scale, or both. Use %TYPE when you declare CHAR, VARCHAR, and NUMBER parameters to provide constraints on a formal parameter. ‫فراخواني‬ ‫برای‬Stored procedure‫دستور‬ ‫از‬ ‫ها‬CALL‫فراخ‬ ‫امکان‬ ‫مثال‬ ،‫دارد‬ ‫وجود‬ ‫نيز‬ ‫محدوديتهايي‬ ‫البته‬ .‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬‫های‬ ‫رويه‬ ‫واني‬ overloaded‫وجود‬ )‫ميکند‬ ‫فرق‬ ‫هم‬ ‫با‬ ‫انها‬ ‫پارامترهای‬ ‫اما‬ ‫دارند‬ ‫يکسان‬ ‫نام‬ ‫که‬ ‫های‬ ‫(رويه‬‫ها‬ ‫رويه‬ ‫مدل‬ ‫اين‬ ‫فراخواني‬ ‫با‬ .‫ندارد‬.‫گردد‬ ‫مي‬ ‫ايجاد‬ ‫خطا‬ ‫در‬ ‫ها‬ ‫رويه‬ ‫فراخواني‬ ‫امکان‬mapping node.‫دارد‬ ‫وجود‬ ‫نيز‬ Example: ‫يک‬ ‫کنيد‬ ‫فرض‬SP‫شامل‬ ‫که‬ ‫داريم‬ ‫ديتابيس‬ ‫در‬‫يک‬‫باشد‬ ‫مي‬ ‫خروجي‬ ‫يک‬ ‫و‬ ‫ورودی‬‫کنيم‬ ‫فراخواني‬ ‫را‬ ‫پي‬ ‫اس‬ ‫اين‬ ‫خواهيم‬ ‫مي‬ ‫و‬‫اب‬ ،‫ت‬‫باي‬ ‫دا‬‫د‬‫دستور‬ ‫با‬ CREATE PROCEDURE‫در‬ ‫پس‬ ‫اس‬ ‫يک‬ESQL‫تعريف‬‫ک‬‫فيزيکي‬ ‫نام‬ ‫بوسيله‬ ‫ديتابيس‬ ‫در‬ ‫موجود‬ ‫پي‬ ‫اس‬ ‫به‬ ‫را‬ ‫آن‬ ‫و‬ ‫نيم‬(NAMEEXTERNAL) ‫کنيم‬ ‫مرتبط‬ ‫پس‬ ‫اس‬‫تعداد‬ ،‫ترتيب‬ ،‫باشد‬ ‫ديتابيس‬ ‫سمت‬ ‫در‬ ‫پي‬ ‫اس‬ ‫همانند‬ ‫دقيقا‬ ‫بايد‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫پارامترهای‬ ‫نوع‬ ‫و‬: CREATE PROCEDURE TestProcedure (IN P1 INT, OUT P2 INT) LANGUAGE DATABASE DYNAMIC RESULT SETS 2 EXTERNAL NAME "DBSchema.TestProcedure "; ‫دستور‬ ‫با‬ ‫سپس‬CALL‫پي‬ ‫اس‬‫شده‬ ‫تعريف‬:‫کنيم‬ ‫مي‬ ‫فراخواني‬ ‫را‬ CALL TestProcedure(InVar1, OutVar2, Environment.ResultSet1[], OutputRoot.XMLNS.Test.ResultSet2[]); ‫باال‬ ‫دستور‬ ‫در‬‫پا‬‫را‬‫مترهای‬‫خروجي‬ ‫و‬ ‫ورودی‬ ‫پارامترهای‬ ‫همان‬ ‫که‬ ‫دوم‬ ‫و‬ ‫اول‬‫پي‬ ‫اس‬،‫هستند‬‫پارامترهای‬‫چه‬ ‫و‬ ‫سوم‬‫ارم‬‫برای‬ ‫نيز‬Resultset‫پي‬ ‫اس‬ ‫نوع‬ ‫از‬ ‫و‬ ‫اند‬ ‫شده‬ ‫گرفته‬ ‫نظر‬ ‫در‬Refrence Field‫باشند‬ ‫مي‬‫پي‬ ‫اس‬ ‫خروجي‬ ‫و‬‫مستقيما‬‫مي‬ ‫قرار‬ ‫انها‬ ‫در‬‫گيرد‬. ‫توان‬ ‫مي‬‫ب‬ ‫را‬ ‫فوق‬ ‫پي‬ ‫اس‬‫بصورت‬ ‫زير‬ ‫روش‬ ‫ه‬Reference Variable:‫کرد‬ ‫تعريف‬ ‫نيز‬ DECLARE resultCursor REFERENCE TO OutputRoot.XMLNS.Test; // using a reference variable CALL TestProcedure (InVar1, resultCursor.OutVar2, resultCursor.ResultSet1[],resultCursor.ResultSet2[]);
  • 49. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Debugging a message flow: https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ag11186_.htm?lang=en 1) Set a Flow Debug port number: 1_1) The flow debug port is also known as the Java debug port, and the JVM debug port. In the Integration Nodes view in the IBM Integration Toolkit, right-click the integration server with which you want to work, and click Launch Debugger. Click Configure, and enter a port number. Click OK to enable debugging on the selected port, and attach the debugger to the selected integration server. :‫است‬ ‫شده‬ ‫داده‬ ‫نشان‬ ‫ذيل‬ ‫شکل‬ ‫در‬ ‫که‬ ‫باشد‬ ‫مي‬ ‫ديباگ‬ ‫برای‬ ‫پورت‬ ‫يک‬ ‫کردن‬ ‫ست‬ ‫برنامه‬ ‫کردن‬ ‫ديباگ‬ ‫برای‬ ‫قدم‬ ‫اولين‬ 1_2) In the IBM Integration Explorer, right-click the integration server with which you want to work, and click Properties. Enter a port number in the Flow Debug Port field on the Extended page, and click OK to modify the Flow Debug port number. You must right-click the integration server and click Flow Debug Port > Enable to enable debugging on the selected port. 1_3) In order to debug a JavaCompute node, or a user defined node containing Java code, the broker JVM must be configured with a debug port number. Set the Java™ debug port by running the mqsichangeproperties command (all on one line) in the Command Console: ‫از‬ ‫خود‬ ‫برنامه‬ ‫در‬ ‫اگر‬Javacompute‫نم‬ ‫ست‬ ‫نيز‬ ‫را‬ ‫آن‬ ‫به‬ ‫مربوط‬ ‫ديباگ‬ ‫پورت‬ ‫برنامه‬ ‫کردن‬ ‫ديباگ‬ ‫برای‬ ‫بايد‬ ‫باشيد‬ ‫کرده‬ ‫استفاده‬‫اييد‬‫کار‬ ‫اين‬ ‫برای‬ ، ‫نماييد‬ ‫استفاده‬ ‫زير‬ ‫دستورات‬ ‫از‬: mqsichangeproperties broker_name -e integration_server_name -o ComIbmJVMManager -n jvmDebugPort -v port_number For example: mqsichangeproperties TEST -e default -o ComIbmJVMManager -n jvmDebugPort -v 3920 When this command completes, restart the broker. Warning: When the jvmDebugPort is enabled, a remote user can connect to the integration node's JVM and inspect its behavior and data, including potentially sensitive information. A remote user can also exert control over the integration node's behavior. It is therefore recommended that the jvmDebugPort is disabled on production systems. 2) If you used the mqsichangeproperties command or the IBM Integration Explorer to configure the Flow Debug Port, you must use the Integration Nodes view in the IBM Integration Toolkit to attach the flow debugger to the
  • 50. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid integration server. Right-click the integration server with which you want to work, and click Launch Debugger, and click OK to attach the debugger to the selected integration server. 3) Open the message flow that you want to debug in the Message Flow editor by double-clicking its name in the Application Development view. 4) Add a breakpoint to a connection that leads out of the input node to ensure that the message flow does not run to completion before you can begin to debug it. ‫روی‬ ‫بر‬Flow‫خود‬ ‫برنامه‬ ‫کدهای‬ ‫و‬break point‫برا‬ ،‫دهيد‬ ‫قرار‬‫نظر‬ ‫موزد‬ ‫محل‬ ‫در‬ ‫بايد‬ ‫کار‬ ‫اين‬ ‫ی‬right click‫گ‬ ‫سپس‬ ‫و‬ ‫نماييد‬‫زينه‬Add breakpoint.‫نماببد‬ ‫انتخاب‬ ‫را‬ 5) Switch to the Debug perspective. .‫نماييد‬ ‫عمل‬ ‫زير‬ ‫شکل‬ ‫طبق‬ ‫بايد‬ ‫ديباگ‬ ‫مود‬ ‫به‬ ‫رفتن‬ ‫بايد‬
  • 51. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 6) Right-click the Message Broker Launch Configuration in the Debug view, and click Edit Source Lookup. You can use Edit Source Lookup Path to tell the debugger where to look for your source files for message flows, and related resources such as ESQL, message maps and Java during debugging. 7) Click Add, and select the type of source to add to the lookup path. The lookup path can be an Eclipse project name, an external folder, or a compressed (.zip) file. You can specify multiple locations, but the debugger always looks first in the message flow project that you specify in the Edit Source Lookup Path dialog. Then select the resources to include in the lookup path, and click OK. 8) Click Add to include more resources in the lookup path, click Up, or Down to modify the order of the resources. Then click OK to exit the Edit Source Lookup Path dialog, and save your changes. 9) When the next message comes into your flow and arrives at breakpoint you added after the input node, the flow pauses, the breakpoint icon is highlighted, and you can start debugging. 10) In the Debug view, double-click the message flow that you want to debug. The message flow opens in the Message Flow editor. You can now add more breakpoints, start stepping over the flow, and so on. 11) putting a test message on an input queue: If your message flow includes MQInput and MQOutput nodes, you can test the flow by putting a message on the input queue of your first MQInput node. You can use the command line interfaces or WebSphere® MQ Explorer to put a message to a queue. You can also use the Test Client as a repeatable alternative. 1. Switch to the Integration Development perspective. 2. Open your message flow in the Message Flow editor. 3. Right-click the input node of the message flow and click Test. The message flow is deployed and the Test Client editor opens and displays the Events window. 4. On the toolbar of the Test Client editor, under Message Flow Test Events, click the Enqueue icon . 5. Under Detailed Properties, enter the names of the queue manager and the queue for the input node for this flow. Queue manager names are case-sensitive; make sure that you enter the name correctly. 6. If you are putting a message onto an input queue that is on a remote computer, ensure that the queue manager of the associated integration node has a server-connection channel called SYSTEM.BKR.CONFIG. 7. If you are putting a message onto a remote queue, enter values to identify the host and port of the computer that is hosting the queue. 8. Optional: If you want to save the Test Client file, complete the following steps: 9. Click File > Save and select the project where you want to save the file. 10. Enter a name for the file and click Finish. 11. The Test Client file is saved in the Flow Tests folder in the project.
  • 52. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 3_2) JavaCompute node: https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac20805_.htm?cp=SSMKHH_9.0.0&lang=en ‫يک‬ ‫در‬ ‫عمليات‬ ‫پردازش‬ ‫برای‬ ‫جاوا‬ ‫زبان‬ ‫به‬ ‫نويسي‬ ‫کد‬ ‫برای‬‫مسيج‬‫ا‬ ‫فلو‬‫ز‬.‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫نود‬ ‫اين‬ Use the JavaCompute node to work with messages by using the Java™ language. By using this node, you can complete the following tasks:  Use Java to examine an incoming message and, depending on its content, propagate it unchanged to one of the two output terminals of the node. The node behaves in a similar way to a Filter node, but uses Java instead of ESQL to determine which output terminal to use.  Use Java to change part of an incoming message and propagate the changed message to one of the output terminals.  Use Java to create and build a new output message that is independent of the input message.  Use Java to create a map in a global cache, and to add and retrieve data from that map. By storing data in the global cache, that data is available to other JavaCompute nodes or message flows. Note: The Java code that is used by the node is stored in an Eclipse Java project. Note: The Java code that you use to access and manipulate the message data can be coded using any of the following programming styles:  Java plugin API  Java Architecture for XML Binding (JAXB)  Document Object Model (DOM) Java accessor from MbMessageAssembly ESQL field type constant getMessage().getRootElement() InputRoot getMessage().getRootElement().getLastChild() InputBody getLocalEnvironment().getRootElement() InputLocalEnvironment getGlobalEnvironment().getRootElement() Environment getExceptionList().getRootElement() InputExceptionList Use the following methods to traverse a message tree from an element of type MbElement:
  • 53. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid  From the Root part of the tree, calling getFirstChild() navigates to Properties. Also from Root, calling getLastChild() returns XML.  From Properties, calling getParent() returns Root, and calling getNextSibling() returns MQMD.  From MQMD, calling getPreviousSibling() returns Properties, calling getParent() returns Root, and calling getNextSibling() returns XML.  From XML, calling getPreviousSibling() returns MQMD, calling getParent() returns Root, calling getFirstChild() returns document, and calling getLastChild() also returns document.  From document, calling getParent() returns XML, calling getFirstChild() returns chapter, and calling getLastChild() also returns chapter.  From chapter, calling getParent() returns document, calling getFirstChild() returns title, and calling getLastChild() returns the child that contains the message data "Some text.". MBMessage provides the following methods: getDOMDocument() obtains a W3C org.w3c.dom.Document object for the message body. createDOMDocument() obtains a W3C org.w3c.dom.Document object for the message body.
  • 54. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid MbElement provides the following method: getDOMNode() obtains a W3C org.w3c.dom.Node object for the message element. Accessing information about an element: Use the following methods to return information about the referenced element: getName() returns the element name as a java.lang.String getValue() returns the element value getType() returns the generic type, which is one of the following types:  NAME: an element of this type has a name, but no value.  VALUE: an element of this type has a value, but no name.  NAME/VALUE: an element of this type has both a value and a name. getSpecificType() returns the parser-specific type of the element getNamespace() returns the namespace URI of this element Creating a new message by using a JavaCompute node: MbMessage outMessage = new MbMessage(); MbElement outRoot = outMessage.getRootElement(); MbElement outBody = outRoot.createElementAsLastChild(MbXMLNSC.PARSER_NAME); Note: To propagate the message assembly to the Out terminal use the following method: out.propagate(assembly); To propagate the message assembly to the Alternate terminal, use the following method: alt.propagate(assembly);
  • 55. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Connections to databases: http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ah14440_.htm You can configure both ODBC and Java™ Database Connectivity (JDBC) connections for access to databases. Configure an ODBC data source on Windows: http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ah14442_.htm 1. Click Start > Control Panel > Administrative Tools > Data Sources (ODBC). If you are using 32-bit DFEs on Windows 64-bit systems, complete the following steps: a. Make a copy of Data Sources (ODBC). b. Right-click the Data Sources (ODBC) shortcut and select properties. c. In the 64-bit ODBC dialog, by default the target points to %SystemRoot%system32odbcad32.exe. Copy the shortcut, modify the target to point to %SystemRoot%SysWoW64Odbcad32.exe, and use the revised copy of the shortcut instead. 2. Click the System DSN tab and click Add. 3. Complete the steps in the following sections for the databases that you are working with. DB2® UDB Define a data source for DB2 UDB: 1. Select the driver IBM DB2 ODBC DRIVER. 2. Enter the data source name (DSN) and description. 3. Select the correct database alias from the list. 4. Click Finish to save your definition. 5. Click OK to close the ODBC Data Source Administrator. 6. If you need to use Global Coordination with your database from IBM Integration Bus on Windows systems, the next task is to set up the 32-bit environment that is needed by WebSphere® MQ, see Setting your environment to support 32-bit access to databases. You must register the data source as a system data source. If you prefer, you can use the Configuration Assistant instead of the ODBC Data Source Administrator: 1. Open the DB2 Configuration Assistant. 2. Right-click the database and select Change Database. 3. Select Data Source. 4. Select Register this database for ODBC. Select the system data source option. 5. Click Finish. 6. The Test Connection dialog opens automatically and you can test the various connections. Sample IIB ODBC configuration files: https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/bk58070_.htm
  • 56. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Mqsisetdbparms command: Use the mqsisetdbparms command to set security credentials for a specific user ID and password for database connections (or user ID and SSH identity file for SFTP) for the following resources. You can run the mqsisetdbparms command while the broker is running. However, you must stop and start each integration server that uses a particular ResourceName, before that information is read and used by that integration server. ‫ي‬ ‫نمودن‬ ‫وارد‬ ‫برای‬‫سورس‬ ‫ديتا‬ ‫به‬ ‫مربوط‬ ‫پسورد‬ ‫وزر‬ODBC‫دستور‬ ‫از‬mqsisetdbparms:‫کنيم‬ ‫مي‬ ‫استفاده‬ ‫ذيل‬ ‫بصورت‬ ODBC Data source names examples: The following example shows the use of the command to associate a userid and password for a specific ODBC data source name (no Universal Record Identifier (URI) prefix is required): mqsisetdbparms IB9NODE -n USERDB1 -u myuserid1 -p mypassword1 The following examples show the use of the optional prefix odbc::. Use this option to set the user ID and password for an ODBC data source at either the broker level, or at the integration server level: mqsisetdbparms IB9NODE -n odbc::USERDB2 -u myuserid2 -p mypassword2 mqsisetdbparms IB9NODE -n odbc::USERDB2::myIntegrationServer -u myuserid3 -p mypassword3 The following example shows how to set up a default user ID and password for the broker to use for all ODBC data source names where no explicit Resource Names were set: mqsisetdbparms IB9NODE -n dsn::DSN -u myuserid4 -p mypassword4 The following examples delete all the values that are defined for specific resource names from the broker registry: mqsisetdbparms IB9NODE -n USERDB1 -d mqsisetdbparms IB9NODE -n odbc::USERDB2 -d mqsisetdbparms IB9NODE -n odbc::USERDB2::myIntegrationServer -d mqsicvp command: After configuring the ODBC connection parameters, you can run the mqsicvp command to verify that the broker can connect to the data source, and to provide useful information about the data source and its interface. On Linux and UNIX systems, this command also checks that the ODBC environment is set up correctly. mqsicvp <IIB Node Name> -n <DataSource Name> example: mqsicvp IB9NODE -n MYSQL_ODBC
  • 57. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid SOAP Nodes: ‫سرويس‬ ‫وب‬ ‫نوع‬ ‫از‬ ‫تعامالت‬ ‫براي‬Soap.‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫نود‬ ‫گروه‬ ‫اين‬ ‫از‬ SOAP is an XML message format used in Web service interactions. SOAP messages are typically sent over HTTP or JMS, but other transport protocols can be used. The use of SOAP in a specific Web service is described by a WSDL definition. WSDL validation in IBM Integration Bus refers to the WS-I Basic Profile. Use SOAP nodes when working with SOAP-based Web services. 1_1) SOAPInput node: https://www-01.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac56170_.htm?cp=SSMKHH_9.0.0&lang=en ‫پيغام‬ ‫يک‬ ‫دريافت‬ ‫براي‬Soap.‫شود‬ ‫مي‬ ‫استفاده‬ ‫نود‬ ‫اين‬ ‫از‬ The SOAPInput node can be used in a message flow that accepts and processes SOAP messages. The node is configured using deployable WSDL. The SOAPInput node is typically used with the SOAPReply node. The SOAPInput node receives incoming SOAP messages and, if the messages are valid, passes them down the message flow. You cannot use an HTTPReply node to respond to a Web service request that is received by a SOAPInput node; the broker raises an exception when the reply is attempted. ‫هاي‬ ‫نود‬ ‫با‬ ‫را‬ ‫نود‬ ‫اين‬ ‫توانيد‬ ‫نمي‬ ‫شما‬HTTP.‫کنيد‬ ‫استفاده‬ ‫و‬ ‫کرده‬ ‫وصل‬ ‫هم‬ ‫به‬ Generate WSDL: You can create a Web service in IBM Integration Bus by importing a WSDL or by defining a new interface, using the New Integration Service wizard. You can generate a WSDL document for a message model that resides in a message set: File new others web services WSDL Alternatively, you can configure SOAP nodes by dragging a WSDL from your workspace onto the node, or by specifying the WSDL using the WSDL file name property on the node. WSDL operations are grouped into a logical interface or portType, and are then associated with a binding which defines the physical format of the messages. You can select only one of the following bindings when you generate WSDL:  SOAP (over JMS)  SOAP (over HTTP)
  • 58. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid You can change the operation mode of the SOAP nodes so that they act in gateway mode. In gateway mode, a WSDL is not required to configure the nodes because they handle generic request/response and one-way SOAP messages that are not tied to a specific WSDL. 1_2) SOAPReply node: http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac56180_.htm Use the SOAPReply node to send SOAP messages from the broker to the originating client in response to a message received by a SOAPInput node. ‫توسط‬ ‫که‬ ‫پيغامي‬ ‫به‬ ‫دادن‬ ‫پاسخ‬ ‫براي‬ ‫نود‬ ‫اين‬ ‫از‬SOAPInput‫پردازش‬ ‫و‬ ‫گرفته‬.‫شود‬ ‫مي‬ ‫استفاده‬ ، ‫شده‬ Property Default Description Transaction mode Automatic This property controls whether the message is sent under a JMS transaction. Valid values are Yes, No, and Automatic. Select No to send the message using a non-transactional JMS session. Select Yes to output the message using a transactional JMS session. Select Automatic if you want the message transactionality to be inherited from the Transaction mode setting on the Input node at the start of the flow. Validate Inherit This property controls whether validation takes place. Valid values are None, Content and Value, Content, andInherit. Failure action User trace This property controls what happens if validation fails. You can set this property only if you set Validate to Content orContent and Value. Valid values are User trace, Local error log, Exception, and Exception list. Events None Events that you have defined for the node are displayed on this tab. By default, no monitoring events are defined on any node in a message flow. Use Add, Edit, and Delete to create, change or delete monitoring events for the node; see Configuring monitoring event sources using monitoring properties for details. You can enable and disable events that are shown here by selecting or clearing the Enabled check box.
  • 59. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫مثال‬1‫نمونه‬ ‫يک‬ :Flow‫سريس‬ ‫وب‬ ‫فراخوانی‬ ‫برای‬Rest ‫نود‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫زير‬ ‫فلوی‬ ‫در‬http request‫نوع‬ ‫از‬ ‫سرويس‬ ‫وب‬ ‫يک‬rest‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کرد‬ ‫فراخواني‬ ‫توان‬ ‫مي‬ ‫را‬‫های‬ ‫نود‬http input‫و‬http reply‫بصورت‬ ‫را‬ ‫شده‬ ‫فراخوانده‬ ‫سرويس‬ ‫وب‬ ‫نتيجه‬Json‫يا‬XML‫د‬‫کننده‬ ‫فراخواني‬ ‫سيستم‬ ‫راختيار‬IIB.‫قرارداد‬ ‫مثال‬2‫نمونه‬ ‫يک‬ :Flow ‫نود‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫زير‬ ‫فلوی‬ ‫در‬Soap request‫نوع‬ ‫از‬ ‫سرويس‬ ‫وب‬ ‫يک‬Soap‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کرد‬ ‫فراخواني‬ ‫توان‬ ‫مي‬ ‫را‬‫های‬ ‫نود‬soap input‫و‬ soap reply‫سيست‬ ‫دراختيار‬ ‫را‬ ‫شده‬ ‫فراخوانده‬ ‫سرويس‬ ‫وب‬ ‫نتيجه‬‫کننده‬ ‫فراخواني‬ ‫م‬IIB.‫قرارداد‬ ‫مثال‬3‫نمونه‬ ‫يک‬ :Flow ‫نود‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫زير‬ ‫فلوی‬ ‫در‬Soap request‫نوع‬ ‫از‬ ‫سرويس‬ ‫وب‬ ‫يک‬Soap‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کرد‬ ‫فراخواني‬ ‫توان‬ ‫مي‬ ‫را‬‫های‬ ‫نود‬http input‫و‬ http reply‫بصورت‬ ‫را‬ ‫شده‬ ‫فراخوانده‬ ‫سرويس‬ ‫وب‬ ‫نتيجه‬Json‫يا‬XML‫دراختيا‬‫کننده‬ ‫فراخواني‬ ‫سيستم‬ ‫ر‬IIB.‫قرارداد‬
  • 60. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ap03981_.htm IIB Security: :‫تعاريف‬ authentication‫دارد‬ ‫را‬ ‫ای‬ ‫سامانه‬ ‫به‬ ‫ورود‬ ‫قصد‬ ‫که‬ ‫کاربری‬ ‫هويت‬ ‫احراز‬ : authorization)‫خير‬ ‫يا‬ ‫دارد‬ ‫را‬ ‫درخواستي‬ ‫سرويس‬ ‫از‬ ‫استفاده‬ ‫مجوز‬ ‫(اينکه‬ ‫کرده‬ ‫الگين‬ ‫سامانه‬ ‫به‬ ‫که‬ ‫کاربری‬ ‫دسترسي‬ ‫سطح‬ ‫بررسي‬ : identity:‫در‬IIB‫کنن‬ ‫مشخص‬ ‫که‬ ‫است‬ ‫امنيتي‬ ‫توکن‬ ‫يک‬ ‫آيدنتيتي‬ ‫يک‬ ،‫که‬ ‫دارد‬ ‫مي‬ ‫نگه‬ ‫خود‬ ‫در‬ ‫را‬ ‫صفاتي‬ ‫يکسری‬ ‫فرد‬ ‫آن‬ ‫از‬ ‫و‬ ‫است‬ ‫فرد‬ ‫يک‬ ‫ده‬ ‫کرد‬ ‫هويت‬ ‫اهراز‬ ‫را‬ ‫فرد‬ ‫توان‬ ‫مي‬ ‫آنها‬ ‫بوسيله‬. identity propagation.‫مختلف‬ ‫های‬ ‫سيستم‬ ‫زير‬ ‫به‬ ‫شده‬ ‫هويت‬ ‫احراز‬ ‫کاربر‬ ‫انتشار‬ : Identity mapping:.‫باشد‬ ‫مي‬ ‫ديگر‬ ‫فرمت‬ ‫به‬ ‫فرمت‬ ‫يک‬ ‫از‬ ‫توکن‬ ‫تبديل‬ ‫يک‬ ‫شما‬ ‫وقتي‬‫برنامه‬IIB‫نماييد‬ ‫توجه‬ ،‫هستند‬ ‫نياز‬ ‫مورد‬ ‫اطالعات‬ ‫از‬ ‫حفاظت‬ ‫برای‬ ‫که‬ ‫امنيتي‬ ‫معيارهای‬ ‫به‬ ‫که‬ ‫است‬ ‫مهم‬ ،‫کنيد‬ ‫مي‬ ‫طراحي‬.‫اينکه‬ ‫برای‬ IIB‫تنظيمات‬ ‫اعمال‬ : ‫مثال‬ ‫بعنوان‬ ،‫باشد‬ ‫مي‬ ‫نياز‬ ‫مورد‬ ‫امنيتي‬ ‫تنظيمات‬ ‫يکسری‬ ، ‫کند‬ ‫امن‬ ‫را‬ ‫سيستم‬ ‫درون‬ ‫اطالعات‬ ‫بتواند‬SSL Connections، ‫اع‬‫مال‬WS-Security‫به‬ ‫دسترسي‬ ‫کردن‬ ‫امن‬ ، ‫سرويسها‬ ‫وب‬ ‫به‬Message flow‫به‬ ‫دسترسي‬ ‫کردن‬ ‫محدود‬ ‫و‬ ‫ها‬Queue.‫ها‬ ‫تس‬ ‫بتواند‬ ‫که‬ ‫دارند‬ ‫نياز‬ ‫هايي‬ ‫دسترسي‬ ‫يکسری‬ ‫به‬ ‫ها‬ ‫ادمين‬ ‫بعالوه‬‫کنن‬ ‫اعمال‬ ‫سيستم‬ ‫روی‬ ‫بر‬ ‫را‬ ‫تنظيماتي‬ ‫مثال‬ ،‫دهند‬ ‫انجام‬ ‫را‬ ‫کهايشان‬‫رفع‬ ‫برای‬ ‫و‬ ‫د‬ ‫را‬ ‫تصميماتي‬ ‫مشکالت‬‫منابع‬ ‫به‬ ‫دسترسي‬ ‫برای‬ ‫آنها‬ .‫نمايند‬ ‫اجرا‬IIB‫يکسری‬ ‫يا‬ ‫وب‬ ‫صفحه‬ ‫طريق‬ ‫از‬ ‫تواند‬ ‫مي‬Rest API.‫نمايند‬ ‫اقدام‬ ‫به‬ ‫کاربران‬ ‫دسترسي‬ ‫توانند‬ ‫مي‬ ‫سيستمي‬ ‫های‬ ‫ادمين‬IIB‫عضو‬ ‫توانند‬ ‫مي‬ ‫کاربران‬ ،‫نمايند‬ ‫کنترل‬ ‫را‬rule‫ها‬‫ي‬‫مجوزهای‬ ‫دارای‬ ‫که‬ ‫باشند‬ ‫ي‬‫ا‬‫منيتي‬ .‫هستند‬ ‫مشخصي‬ ‫اين‬ ‫از‬ ‫قبل‬‫برای‬ ‫بخواهيد‬ ‫شما‬ ‫که‬IIB:‫باشيد‬ ‫آشنا‬ ‫زير‬ ‫مفاهيم‬ ‫با‬ ‫بايد‬ ‫نماييد‬ ‫تهيه‬ ‫امنيتي‬ ‫پلن‬ ‫يک‬ ‫خود‬  Planning for security  Administration security overview  Message flow security overview  Role-based security  WS-Security  Authorization for configuration tasks  Security exits  Public key cryptography  Digital certificates  Digital signatures
  • 61. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Planning for security: ‫نصب‬ ‫هنگام‬ ‫امنيتي‬ ‫مشکالت‬ ‫و‬ ‫موارد‬ ‫از‬ ‫آگاهي‬IIB‫نصب‬ ‫از‬ ‫قبل‬ .‫باشد‬ ‫مي‬ ‫مهم‬ ‫بسيار‬IIB‫شما‬ ‫يونيکسي‬ ‫و‬ ‫لينوکسي‬ ‫عاملهای‬ ‫سيتم‬ ‫روی‬ ‫بر‬‫ب‬‫پچ‬ ‫ايد‬ ‫ا‬ ‫هنگام‬ ،‫نصب‬ ‫از‬ ‫بعد‬ .‫باشيد‬ ‫کرده‬ ‫نصب‬ ‫را‬ ‫آنها‬ ‫امنيتي‬ ‫های‬‫ب‬ .‫باشيد‬ ‫کرده‬ ‫رعايت‬ ‫را‬ ‫يوزر‬ ‫ايجاد‬ ‫در‬ ‫امنيتي‬ ‫موارد‬ ‫بايد‬ ‫شما‬ ‫يوزر‬ ‫يجاد‬‫ابتدا‬ ‫بايد‬ ‫منظور‬ ‫دين‬ ‫در‬ ‫نياز‬ ‫مورد‬ ‫رولهای‬IIB‫تا‬ ‫تواند‬ ‫مي‬ ‫ويندوز‬ ‫عمل‬ ‫سيستم‬ ‫روی‬ ‫بر‬ ‫کاربری‬ ‫های‬ ‫نام‬ .‫نماييد‬ ‫ايجاد‬ ‫را‬ ‫مربوطه‬ ‫کاربران‬ ‫سپس‬ ‫و‬ ‫ايجاد‬ ‫را‬12‫و‬ ‫باشد‬ ‫کاراکتر‬ ‫حت‬ ‫لينوکس‬ ‫عاملهای‬ ‫سيتم‬ ‫در‬‫بايد‬ ‫ما‬8‫حروف‬ ‫بودن‬ ‫کوچک‬ ‫و‬ ‫بزرگ‬ ‫ويندوز‬ ‫در‬ ،‫نماييد‬ ‫دقت‬ ‫حروف‬ ‫بودن‬ ‫کوچک‬ ‫و‬ ‫بزرگ‬ ‫به‬ ‫نسبت‬ .‫باشد‬ ‫کاراکتر‬‫مهم‬ ‫کاربری‬ ‫نام‬ ‫مثال‬ ‫عنوان‬ ‫به‬ .‫است‬ ‫مهم‬ ‫لينوکس‬ ‫در‬ ‫اما‬ ‫نيست‬TESTER‫و‬tester.‫هستند‬ ‫متفاوت‬ ‫کاربری‬ ‫نام‬ ‫دو‬ ‫لينوکس‬ ‫در‬ -‫دستورات‬ ‫اجرای‬ ‫مجوز‬ ‫که‬ ‫کاربراني‬ ‫برای‬mqsi*‫ر‬‫کاربری‬ ‫گروه‬ ‫عضو‬ ‫کاربران‬ ‫اين‬ ‫که‬ ‫شويد‬ ‫مطمئن‬ ‫دارند‬ ‫ا‬mqbrkrs.‫باشند‬ ‫شما‬ ‫اگر‬broker administration security‫خواهند‬ ‫خاصي‬ ‫مجوزهای‬ ‫به‬ ‫نياز‬ ‫دستور‬ ‫هر‬ ‫اجرای‬ ‫برای‬ ‫شما‬ ‫يوزرهای‬ ، ‫ايد‬ ‫کرده‬ ‫فعال‬ ‫را‬ :‫ميدهد‬ ‫نشان‬ ‫را‬ ‫مجوزها‬ ‫اين‬ ‫زير‬ ‫جدول‬ .‫داشت‬ Command Authorization Queue mqsichangeresourcestats Read SYSTEM.BROKER.AUTH Execute SYSTEM.BROKER.AUTH.EG1 mqsicreateexecutiongroup Read and write SYSTEM.BROKER.AUTH mqsideleteexecutiongroup Read and write SYSTEM.BROKER.AUTH mqsideploy Read SYSTEM.BROKER.AUTH Write SYSTEM.BROKER.AUTH.EG mqsilist Read SYSTEM.BROKER.AUTH Read SYSTEM.BROKER.AUTH.**2 mqsimode Read (to display) or read and write (to change) SYSTEM.BROKER.AUTH mqsireloadsecurity Read SYSTEM.BROKER.AUTH Write SYSTEM.BROKER.AUTH.**3 mqsireportresourcestats Read SYSTEM.BROKER.AUTH Read SYSTEM.BROKER.AUTH.EG4 mqsistartmsgflow5 Read SYSTEM.BROKER.AUTH Execute SYSTEM.BROKER.AUTH.EG mqsistopmsgflow5 Read SYSTEM.BROKER.AUTH Execute SYSTEM.BROKER.AUTH.EG mqsiwebuseradmin Write SYSTEM.BROKER.AUTH
  • 62. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Administration security overview: Broker administration security‫اختياری‬ ‫گزينه‬ ‫يک‬ ، ‫گزينه‬ ‫اين‬ .‫ميکند‬ ‫کنترل‬ ‫منابع‬ ‫به‬ ‫دسترسي‬ ‫و‬ ‫دستورات‬ ‫اجرای‬ ‫در‬ ‫را‬ ‫کاربران‬ ‫حقوق‬‫ب‬‫رای‬ IIB‫نص‬ ‫هنگام‬ ‫تری‬ ‫اضافه‬ ‫پارامترهای‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫توانيد‬ ‫مي‬ ‫شما‬ .‫است‬ ‫فعال‬ ‫غير‬ ‫فرض‬ ‫پيش‬ ‫بصورت‬ ‫نصب‬ ‫هنگام‬ ‫و‬ ‫است‬‫ف‬ ‫را‬ ‫گزينه‬ ‫اين‬ ‫ب‬.‫نماييد‬ ‫عال‬ ‫اعطای‬ ‫بايد‬ ‫شما‬ ، ‫کنيد‬ ‫فعال‬ ‫را‬ ‫گزينه‬ ‫اين‬ ‫شما‬ ‫که‬ ‫صورتي‬ ‫در‬ .‫دهيد‬ ‫تغيير‬ ‫را‬ ‫گزينه‬ ‫اين‬ ‫وضعيت‬ ‫نيز‬ ‫نصب‬ ‫از‬ ‫بعد‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫همچنين‬‫دسترسي‬ WebSphere® MQ‫در‬ ‫دسترسي‬ ‫های‬ ‫مجوز‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫صف‬ ‫در‬ ‫ها‬ ‫مجوز‬ ‫اين‬ .‫نماييد‬ ‫اعطا‬ ‫مشخصي‬ ‫يوزرهای‬ ‫به‬ ‫را‬broker queue manager :‫شوند‬ ‫مي‬ ‫ذخيره‬ -SYSTEM.BROKER. AUTH:( ‫داخلي‬ ‫صف‬ ‫عنوان‬ ‫به‬ ‫صفه‬ ‫اين‬local queue‫هر‬ ‫در‬ )IIB‫فقط‬.‫گردد‬ ‫مي‬ ‫تعريف‬ ‫يکبار‬ -SYSTEM.BROKER.AUTH.EG.‫گردد‬ ‫مي‬ ‫تعريف‬ ‫يکي‬ ‫سرور‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫صفه‬ ‫اين‬ ‫از‬ : ‫تا‬ ‫قبلي‬ ‫مجوز‬ ،‫کند‬ ‫تغيير‬ ‫کاربر‬ ‫يک‬ ‫دستور‬ ‫اجرای‬ ‫مجوز‬ ‫اگر‬: ‫رود‬ ‫نمي‬ ‫بين‬ ‫از‬ ‫دهد‬ ‫رخ‬ ‫زير‬ ‫حالت‬ ‫دو‬ ‫از‬ ‫يکي‬ ‫که‬ ‫زمانيکه‬ -‫کاربر‬ ‫زمانيکه‬ ‫تا‬IBM Integration Explorer.‫ببند‬ ‫را‬ ‫خود‬ -‫با‬ ‫اپليکيشن‬ ‫ارتباط‬ ‫زمانيکه‬ ‫تا‬BrokerProxy.‫شود‬ ‫قطع‬ ‫بين‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫بيشتر‬ ‫امنيت‬ ‫برای‬MQ‫و‬IIB‫نوع‬ ‫از‬ ‫ارتباط‬ ‫نيز‬SSL‫مي‬ ‫همچنين‬ .‫نماييد‬ ‫برقرار‬‫با‬ ‫که‬ ‫يوزرهايي‬ ‫توانيد‬MQ‫و‬ ‫سر‬‫ک‬‫را‬ ‫دارند‬ ‫ار‬ ‫به‬ ‫مشخصي‬ ‫سرور‬ ‫از‬ ‫که‬ ‫نماييد‬ ‫محدود‬ ‫را‬ ‫آنها‬ ‫و‬ ‫کنيد‬ ‫مشخص‬MQ.‫شوند‬ ‫متصل‬ Message flow security overview: IIB‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫سازد‬ ‫مي‬ ‫قادر‬ ‫را‬ ‫شما‬message identity‫يک‬ ‫در‬ ‫را‬ ‫ها‬ ‫پيام‬ ‫به‬ ‫دسترسي‬Message Flow.‫نماييد‬ ‫کنترل‬‫ب‬‫يک‬ ‫ايجاد‬ ‫ا‬‫ي‬‫چند‬ ‫ا‬ security profile‫امنيتي‬ ‫لحظ‬ ‫به‬ ‫را‬ ‫ها‬ ‫پيام‬ ،‫آن‬ ‫انتقال‬ ‫روش‬ ‫و‬ ‫پيام‬ ‫فرمت‬ ‫از‬ ‫فارق‬ ‫که‬ ‫کنيد‬ ‫ايجاد‬ ‫را‬ ‫امنيتي‬ ‫تنظيمات‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫ک‬.‫نمايد‬ ‫نترل‬ security profile‫در‬ ‫تنظيماتي‬IIB‫ارتباط‬ ‫امکان‬ ‫آن‬ ‫بوسيله‬ ‫شما‬ ‫که‬ ‫است‬IIB‫برقرار‬ ‫را‬ ‫امنيتي‬ ‫ابزارهای‬ ‫با‬.‫ميکنيد‬‫در‬IIB‫ار‬ ‫امکان‬‫با‬ ‫تباط‬‫محصوالت‬ ‫زير‬ ‫امنيتي‬‫دارد‬ ‫وجود‬:  WS-Trust V1.3 compliant security token servers (including TFIM V6.2) for authentication, mapping, and authorization  Tivoli® Federated Identity Manager (TFIM) V6.1 for authentication, mapping, and authorization  Lightweight Directory Access Protocol (LDAP) for authentication and authorization  Windows Domain Controllers for authentication  Kerberos KDCs for authentication ‫شما‬ ‫اگر‬message flow security‫در‬ ‫امنيتي‬ ‫امکانات‬ ‫آنگاه‬ ،‫نکنيد‬ ‫فعال‬ ‫را‬IIB‫انتقال‬ ‫برای‬ ‫که‬ ‫بود‬ ‫خواهد‬ ‫امنيتي‬ ‫مکانيزمهای‬ ‫به‬ ‫منوط‬‫نظر‬ ‫در‬ ‫ديتا‬ .‫شده‬ ‫گرفته‬ ‫با‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫و‬ ‫باال‬ ‫در‬ ‫شده‬ ‫ذکر‬ ‫امنيتي‬ ‫ابزارهای‬ ‫به‬ ‫اتصال‬‫ورودی‬ ‫نود‬ ‫در‬ ‫امنيتي‬ ‫تنظيمات‬ ‫اعمال‬Message Flow‫تان‬‫يا‬‫استفا‬ ‫با‬‫از‬ ‫ده‬‫نود‬ SecurityPEP‫از‬ ‫بخشي‬ ‫هر‬ ‫در‬Message Flow‫خودتان‬‫بين‬ ‫ما‬‫های‬ ‫چک‬ ، ‫خروجي‬ ‫نود‬ ‫و‬ ‫ورودی‬ ‫نود‬‫را‬ ‫نياز‬ ‫مورد‬ ‫امنيتي‬‫اعمال‬.‫نماييد‬‫های‬ ‫نود‬ ‫که‬ ‫ورودی‬‫دارد‬ ‫وجود‬ ‫آنها‬ ‫برای‬ ‫امنيتي‬ ‫تنظيمات‬ ‫اعمال‬ ‫امکان‬: ‫از‬ ‫عبارتند‬  MQInput  HTTPInput  SCAInput, SCAAsyncResponse  SOAPInput
  • 63. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ap04140_.htm security profile : ( ‫امنيتي‬ ‫پروفايل‬ ‫يک‬ ‫بايد‬ ‫نماييد‬ ‫اعمال‬ ‫فلو‬ ‫يا‬ ‫نود‬ ‫روی‬ ‫را‬ ‫امنيت‬ ‫اينکه‬ ‫از‬ ‫قبل‬security profile‫پروف‬ ‫توانيد‬ ‫مي‬ ‫شما‬ .‫باشيد‬ ‫ساخته‬ )‫ايل‬‫های‬‫امنيتيتان‬ ‫امنيتي‬ ‫ابزارهای‬ ‫به‬ ‫اتصال‬ ‫برای‬ ‫را‬LDAP, WS-Trust V1.3, Tivoli® Federated Identity Manager (TFIM) V6.2‫ايجاد‬ ‫برای‬ .‫کنيد‬ ‫ايجاد‬ ‫دستور‬ ‫طريق‬ ‫از‬ ‫توانيد‬ ‫مي‬ ‫پروفايل‬mqsicreateconfigurableservice‫طري‬ ‫از‬ ‫يا‬‫داخل‬ ‫در‬ ‫اديتور‬ ‫يک‬ ‫ق‬IIB Explorer‫عمل‬.‫نماييد‬‫ا‬ ‫از‬ ‫بعد‬‫يجاد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫پروفايل‬Broker Archive editor‫يا‬ ‫مشخص‬ ‫ورودی‬ ‫نود‬ ‫يک‬ ‫به‬ ‫را‬ ‫شده‬ ‫ايجاد‬ ‫پروفايل‬‫اعمال‬ ‫فلو‬ ‫مسيج‬ ‫تمام‬ ‫سطح‬ ‫در‬ .‫نماييد‬‫آنگاه‬ ، ‫نماييد‬ ‫اعمال‬ ‫فلو‬ ‫مسيج‬ ‫کل‬ ‫سطح‬ ‫در‬ ‫را‬ ‫پروفايل‬ ‫شما‬ ‫اگر‬‫همچن‬ ‫و‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫های‬ ‫نود‬ ‫تمام‬ ‫سطح‬ ‫در‬ ‫امنيتي‬ ‫تنظيمات‬‫نود‬ ‫ين‬ SecurityPEP‫نسبت‬ ‫باشد‬ ‫شده‬ ‫اعمال‬ ‫مشخص‬ ‫نود‬ ‫يک‬ ‫به‬ ‫که‬ ‫امنيتي‬ ‫پروفايل‬ ‫که‬ ‫بگيريد‬ ‫نظر‬ ‫در‬ ‫را‬ ‫نکته‬ ‫اين‬ .‫شد‬ ‫خواهد‬ ‫اعمال‬ ‫وجود‬ ‫صورت‬ ‫در‬‫ب‬‫ه‬ ‫داش‬ ‫خواهد‬ ‫الويت‬ ‫باشد‬ ‫شده‬ ‫اعمال‬ ‫فلو‬ ‫مسيج‬ ‫سطح‬ ‫در‬ ‫که‬ ‫امنيتي‬ ‫پروفايل‬ ‫يک‬.‫ت‬ ‫امنيتي‬ ‫توابع‬ ‫برای‬ ‫توانيد‬ ‫مي‬ ‫شما‬ .‫نماييد‬ ‫ايجاد‬ ‫خارجي‬ ‫امنيتي‬ ‫ابزارهای‬ ‫از‬ ‫استفاده‬ ‫برای‬ ‫امنيتي‬ ‫پروفايل‬ ‫يک‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫همچنين‬‫از‬ ‫مختلف‬ ‫از‬ ‫مثال‬ ،‫نماييد‬ ‫استفاده‬ ‫مختلفي‬ ‫ابزارهای‬LDAP( ‫هويت‬ ‫احراز‬ ‫برای‬authentication‫از‬ ‫و‬ )WS-Trust V1.3 STS‫برای‬‫دست‬ ‫سطح‬ ‫بررسي‬‫رسي‬ (authorization.‫نماييد‬ ‫استفاده‬ ) ( ‫کاربر‬ ‫انتشار‬ ‫قصد‬ ‫فقط‬ ‫شما‬ ‫اگر‬identity propagation‫نوع‬ ‫از‬ ‫را‬ ‫خود‬ ‫امنيتي‬ ‫پروفايل‬ ‫توانيد‬ ‫مي‬ ،‫داريد‬ ‫امنيتي‬ ‫توابع‬ ‫اعمال‬ ‫بدون‬ )Default Propagation‫فقط‬ ‫پروفايل‬ ‫اين‬ .‫نماييد‬ ‫ايجاد‬identity propagation‫درخواست‬ ‫را‬.‫کند‬ ‫مي‬ ‫در‬‫با‬ ‫ارتباط‬ ‫نحوه‬ ‫کلي‬ ‫بررسي‬ ‫به‬ ‫ادامه‬LDAP: ‫پردازيم‬ ‫مي‬ https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ap04141_.htm?view=embed Creating a security profile for LDAP: ‫ابزارهای‬ ‫از‬ ‫يکي‬ ‫بايد‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫از‬ ‫قبل‬LDAP:‫باشيد‬ ‫کرده‬ ‫اندازی‬ ‫راه‬ ‫و‬ ‫نصب‬ ‫سرور‬ ‫يک‬ ‫روی‬ ‫بر‬ ‫را‬ ‫شده‬ ‫اشاره‬ ‫آن‬ ‫به‬ ‫ذيل‬ ‫در‬ ‫که‬  IBM Tivoli® Directory Server  Microsoft Active Directory  OpenLDAP. IIB‫ج‬ ‫برای‬‫در‬ ‫ستجو‬LDAP.‫باشد‬ ‫شده‬ ‫داده‬ ‫آن‬ ‫به‬ ‫جستجو‬ ‫مجوز‬ ‫که‬ ‫دارد‬ ‫يوزر‬ ‫يک‬ ‫به‬ ‫نياز‬‫د‬ ‫سپس‬ .‫شويد‬ ‫مطمئن‬ ‫يوزر‬ ‫اين‬ ‫شدن‬ ‫ايجاد‬ ‫از‬ ‫لذا‬‫زير‬ ‫ستور‬ ‫پروفايل‬ ‫تا‬ ‫دهيد‬ ‫انجام‬ ‫را‬LDAP: ‫نماييد‬ ‫ايجاد‬ ‫را‬ -‫پنجره‬ ‫يک‬Command window،‫نماييد‬ ‫اجرا‬ ‫پنجره‬ ‫آن‬ ‫در‬ ‫زير‬ ‫شکل‬ ‫به‬ ‫را‬ ‫دستور‬ ‫و‬ ‫نماييد‬ ‫ايجاد‬‫اين‬ ‫مورد‬ ‫در‬ ‫بيشتر‬ ‫جزييات‬ ‫برای‬‫د‬‫ستور‬ ‫راهنمای‬ ‫به‬IIB:‫نماييد‬ ‫مراجعه‬ - mqsicreateconfigurableservice WBRK_BROKER -c SecurityProfiles -o LDAP - -n authentication,authenticationConfig,authorization,authorizationConfig,propagation,r ejectBlankpassword - -v "LDAP,"ldap://ldap.acme.com:389/ou=sales,o=acme.com",LDAP, - "ldap://ldap.acme.com:389/cn=All Sales,ou=acmegroups,o=acme.com",TRUE,TRUE
  • 64. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid :‫ادیتور‬ ‫طریق‬ ‫از‬ ‫پروفایل‬ ‫ایجاد‬ ‫اديتور‬ ‫طريق‬ ‫از‬ ‫پروفايل‬ ‫ايجاد‬ ‫برای‬IIB‫در‬ ‫نظر‬ ‫مورد‬ ‫بروکر‬ ‫روی‬ ‫بر‬ ‫ابتدا‬ ‫که‬ ‫کرد‬ ‫عمل‬ ‫صورت‬ ‫بدين‬ ‫بايد‬MQ Explorer‫گزين‬ ‫سپس‬ ‫و‬ ‫کرده‬ ‫راست‬ ‫کليلک‬‫ه‬Properties ‫تب‬ ‫در‬ ‫و‬ ‫کرده‬ ‫انتخاب‬ ‫را‬Security and policies‫گزينه‬security profile:‫کنيم‬ ‫مي‬ ‫انتخاب‬ ‫را‬
  • 65. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Enabling security of input nodes: ‫در‬IIB‫دا‬ ‫وجود‬ ‫آنها‬ ‫برای‬ ‫امنيتي‬ ‫تنظيمات‬ ‫اعمال‬ ‫امکان‬ ‫که‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫های‬ ‫نود‬‫تب‬ ‫يک‬ ‫دارای‬ ،‫رد‬Security‫قسمت‬ ‫در‬Properties‫خود‬‫مي‬ .‫باشند‬‫تب‬ ‫پارامترهای‬ ‫زير‬ ‫شکل‬Security: ‫دهد‬ ‫مي‬ ‫نشان‬ ‫را‬ ‫نمونه‬ ‫يک‬ ‫زير‬ ‫شکل‬ ‫در‬Http Input Node‫مي‬ ‫مشاهده‬ ‫را‬‫تب‬ ‫که‬ ‫کنيد‬Security: ‫شده‬ ‫دهي‬ ‫مقدار‬ ‫پيام‬ ‫امنيتي‬ ‫چک‬ ‫برای‬ ‫آن‬ ‫اي‬ ‫برای‬ ‫پيام‬ ‫نمونه‬ ‫يک‬ ‫هم‬ ‫ذيل‬ ‫در‬: ‫شود‬ ‫استفاده‬ ‫تواند‬ ‫مي‬ ‫نود‬ ‫اين‬ ‫به‬ ‫ارسال‬ ‫برای‬ ‫که‬ ‫کنيد‬ ‫مي‬ ‫مشاهده‬ ‫نود‬ ‫ن‬ <?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>broker01</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>SAML</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
  • 66. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫نمونه‬ ‫يک‬ ‫زير‬ ‫شکل‬Message Flow‫دهد‬ ‫مي‬ ‫نشان‬ ‫را‬‫امنيتي‬ ‫اتفاقات‬ ‫ترتيب‬ ‫آن‬ ‫در‬ ‫که‬‫نشان‬ ‫را‬ ‫شود‬ ‫پردازش‬ ‫ورودی‬ ‫مسيج‬ ‫يک‬ ‫تا‬ ‫دهد‬ ‫مي‬ ‫رخ‬ ‫که‬ :‫دهد‬ ‫مي‬ ‫رسد‬ ‫مي‬ ‫فلو‬ ‫مسيج‬ ‫ورودی‬ ‫نود‬ ‫به‬ ‫مسيج‬ ‫يک‬ ‫که‬ ‫هنگامي‬ ، ‫است‬ ‫مشخص‬ ‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫طور‬ ‫همان‬(MQ, HTTP, SCA, or SOAP)‫يک‬ ‫وجود‬ ‫ابتدا‬ ، security profile.‫شود‬ ‫مي‬ ‫بررسي‬ ‫نود‬ ‫آن‬ ‫برای‬‫نود‬ ‫که‬ ‫کنيد‬ ‫توجه‬ ‫البته‬Soap‫از‬ ‫استفاده‬ ‫بدون‬ ‫و‬ ‫مستقال‬ ‫تواند‬ ‫مي‬ ‫خودش‬broker's security manager‫خودش‬WS-Security‫وجود‬ ‫صورت‬ ‫در‬ .‫باشد‬ ‫داشته‬ ‫را‬ ‫خودش‬ ‫به‬ ‫مربوط‬security profile،security manager‫مرب‬‫به‬ ‫وط‬IIB‫فراخواني‬ ‫امنيتي‬ ‫پروفايل‬ ‫اين‬ ‫که‬ ‫بخواند‬ ‫را‬ ‫امنيتي‬ ‫پروفايل‬ ‫تا‬ ‫شود‬ ‫مي‬identity‫و‬ ‫استخراج‬ ‫را‬ ‫مسيج‬‫حالتهای‬ ‫از‬ ‫ترکيبي‬propagation, authentication, authorization,‫و‬mapping‫روی‬ ‫بر‬ ‫که‬ ‫باشد‬ ‫مي‬identity‫مي‬ ‫اعمال‬ ‫مسيج‬ ‫به‬ ‫مربوط‬‫است‬ ‫موفقيت‬ ‫با‬ ‫عمل‬ ‫اين‬ ‫که‬ ‫صورتي‬ ‫در‬ ،‫کند‬‫نشود‬ ‫خراج‬ Exception.‫دهد‬ ‫مي‬ ‫رخ‬‫و‬ ‫شود‬ ‫مي‬ ‫برگردانده‬ ‫نود‬ ‫به‬ ‫کنترل‬ ،‫دهد‬ ‫رخ‬ ‫خطا‬ ‫فرايند‬ ‫اجرای‬ ‫در‬ ‫يا‬ ‫شود‬ ‫اجرا‬ ‫کامل‬ ‫بطور‬ ‫امنيتي‬ ‫فرايند‬ ‫اگر‬‫ا‬‫ب‬ ‫آنجا‬ ‫ز‬‫بعد‬ ‫ه‬ .‫دهد‬ ‫مي‬ ‫را‬ ‫کار‬ ‫ادامه‬ ‫ورودی‬ ‫نود‬
  • 67. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid SecurityPEP Node: ‫از‬ ‫ديگری‬ ‫بخشهای‬ ‫در‬ ‫بخواهيد‬ ‫اگر‬‫فلو‬ ‫مسيج‬‫توانيد‬ ‫مي‬ ،‫نماييد‬ ‫اجرا‬ ‫را‬ ‫امنيتي‬ ‫های‬ ‫چک‬ ) ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫قسمت‬ ‫(بجز‬‫نود‬ ‫از‬SecurityPEP‫برای‬ ‫اين‬ ‫اعمال‬.‫نماييد‬ ‫استفاده‬ ‫امنيتي‬ ‫های‬ ‫کنترل‬‫نود‬SecurityPEP‫را‬ ‫شما‬‫که‬ ‫سازد‬ ‫مي‬ ‫قادر‬message flow security manager‫از‬ ‫جايي‬ ‫هر‬ ‫در‬ ‫را‬ Message flow.‫نماييد‬ ‫فراخواني‬:‫نماييد‬ ‫مي‬ ‫مشاهده‬ ‫را‬ ‫نود‬ ‫اين‬ ‫عملکرد‬ ‫نحوه‬ ‫ذيل‬ ‫شکل‬ ‫در‬
  • 68. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid ‫زير‬ ‫شکل‬property: ‫ميدهد‬ ‫نشان‬ ‫را‬ ‫نود‬ ‫اين‬ ‫های‬ ‫تب‬Basic:‫باشد‬ ‫مي‬ ‫ذيل‬ ‫های‬ ‫صفت‬ ‫شامل‬ ‫نود‬ ‫اين‬ Property M C Default Description Identity token type No No None This property specifies the type of identity token present in the incoming message. Valid values are:  Current token  Username  Username and password  X.509 Certificate  SAML assertion  Kerberos GSS v5 AP_REQ  LTPA v2 token  Universal WSSE token If this property is set to Current token, the identity in the Properties folder is used. You can also specify the Username and password value to validate a RACF® PassTicket using a WS-Trust V1.3 STS such as TFIM V6.2. Identity token location No No None This property specifies where, in the message, the identity or security token can be found. The location is specified as an ESQL field reference, an XPath expression, or a string literal. If you use a string literal, it must be enclosed in single quotes and must not contain a period (.), Identity password location No No None This property specifies where, in the message, the password can be found. The location is specified as an ESQL field reference, an XPath expression, or a string literal. If you use a string literal, it must be enclosed in single quotes and must not contain a period (.), This property can be set only if Identity token type is set to Username and password. Identity IssuedBy location No No None This property specifies an XPath expression or ESQL path that describes the issuer of the identity or security token. The location is specified as an ESQL field reference, an XPath expression, or a string literal. If you use a string literal, it must be enclosed in single quotes and must not contain a period (.),
  • 69. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Property M C Default Description This option is used when the associated security profile specifies a WS-Trust V1.3 STS provider (for example, TFIM V6.2) for authentication, mapping or authorization. In this case, when this field is left blank, no WS-Trust Issuer. Address element is sent. **،‫شود‬ ‫مي‬ ‫تنظيم‬ ‫امنيتي‬ ‫پروفايل‬ ‫با‬ ‫نود‬ ‫يا‬ ‫ورودی‬ ‫نود‬ ‫يک‬ ‫که‬ ‫وقتي‬Identity‫بصورت‬ ،‫شود‬ ‫مي‬ ‫استخراج‬ ‫ورودی‬ ‫پيام‬ ‫که‬8property‫درون‬ property folder‫دو‬ ‫شده‬ ‫استخراج‬ ‫صفات‬ ‫اين‬ .‫شود‬ ‫مي‬ ‫ذخيره‬ ‫بروکر‬ ‫در‬Identity،‫ميکنند‬ ‫ايجاد‬ ‫برورکر‬ ‫در‬source and Mapped. Identity Token Type: ‫توکن‬ ‫نوع‬ ‫خصوصيت‬ ‫اين‬Identity‫مقدار‬ .‫ميکند‬ ‫تعيين‬ ‫باشد‬ ‫مي‬ ‫پيام‬ ‫در‬ ‫که‬ ‫را‬Transport Default‫عنوان‬ ‫به‬ ‫خروجي‬ ‫و‬ ‫ورودی‬ ‫نودهای‬ ‫برای‬‫م‬‫قدار‬ ‫مقدار‬ ‫و‬ ‫است‬ ‫فرض‬ ‫پيش‬TokenCurrent‫نود‬ ‫برای‬SecurityPEP: o Transport Default (on the security enabled input nodes) o Current token (on the SecurityPEP node) o Username o Username and password o X.509 Certificate o SAML assertion o Kerberos GSS v5 AP_REQ (on the SecurityPEP node) o LTPA v2 token (on the SecurityPEP node) o Universal WSSE token (on the SecurityPEP node)
  • 70. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid **‫ورودی‬ ‫نود‬ ‫اگر‬MQInput‫فرض‬ ‫پيش‬ ‫مقدار‬ ، ‫باشد‬DefaultTransport‫يک‬Identity‫نوع‬ ‫از‬sernameU‫نوع‬ ‫از‬ ‫نود‬ ‫اگر‬ .‫ميکند‬ ‫ايجاد‬ HttpInput‫ف‬ ‫پيش‬ ‫مقدار‬ ‫اين‬ ، ‫باشد‬‫يک‬ ‫رض‬Identity‫نوع‬ ‫از‬passwordandUsername.‫ميکند‬ ‫توليد‬ **‫در‬‫نود‬SecurityPEP‫فرض‬ ‫پيش‬ ‫مقدار‬Current Token‫يک‬ ‫ايجاد‬ ‫جای‬ ‫به‬ ‫نود‬ ‫که‬ ‫شود‬ ‫مي‬ ‫باعث‬Identity‫ورو‬ ‫پيام‬ ‫روی‬ ‫از‬ ‫جديد‬، ‫دی‬ ‫همان‬Identity‫در‬ ‫موجود‬property folder.‫کند‬ ‫استفاده‬ ‫را‬ cationIdentity Token Lo: ‫مي‬ ‫مشخص‬ ‫را‬ ‫مسيج‬ ‫در‬ ‫توکن‬ ‫موقعيت‬‫بصورت‬ ‫فيلد‬ ‫اين‬ ‫مقدار‬ .‫کند‬ESQL field reference, XPath expression, or string literal,‫تواند‬ ‫مي‬ .‫باشد‬ Identity Password Location: ‫موقعيت‬‫مي‬ ‫مشخص‬ ‫پيام‬ ‫در‬ ‫را‬ ‫عبور‬ ‫رمز‬.‫کند‬ Identity IssuedBy Location: ‫موقعيت‬issuer‫ر‬‫مي‬ ‫مشخص‬ ‫مسيج‬ ‫در‬ ‫ا‬.‫کند‬ **‫فيلدهای‬ ‫مقادير‬ ‫توانيد‬ ‫مي‬ ‫شما‬Identity‫در‬ ‫توانيد‬ ‫نمي‬ ‫را‬ ‫آن‬ ‫اما‬ ‫کنيد‬ ‫ويرايش‬ ‫را‬identity source‫ب‬ ،‫کنيد‬ ‫ذخيره‬‫را‬ ‫ان‬ ‫توانيد‬ ‫مي‬ ‫لکه‬ ‫در‬IdentityMapped.‫کنيد‬ ‫ذخيره‬ ‫ت‬‫ب‬Advanced‫نود‬SecurityPEP:‫باشد‬ ‫مي‬ ‫ذيل‬ ‫های‬ ‫صفت‬ ‫شامل‬ Property M C Default Description WS-Trust Applies- To Address No Yes Not set This property sets the Address for the /wst:RequestSecurityToken/wsp:AppliesTo element of the WS-Trust message. Use this property to provide the URI of the service for which the security token is to be validated or issued. This value can be specified as an ESQL field reference, an XPath expression, or a string literal. If you use a string literal, it must be enclosed in single quotes and must not contain a period (.), By default, this value is a URI for the fully qualified name of the message flow, in the form uri:Brokername.Integration Server Name.Message Flow Name. WS-Trust Applies- To Service No Yes Not set This property sets the Service Name for the /wst:RequestSecurityToken/wsp:AppliesToelement of the WS-Trust message. Use this property to provide the Service Name of the service for which the security token is to be validated or issued. This value can be specified as an ESQL field reference, an XPath expression, or a string literal. If you use a string literal,
  • 71. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Property M C Default Description it must be enclosed in single quotes and must not contain a period (.), By default, this value is left blank, which means that the WS- Trust request does not include this element. WS-Trust Applies- To Port Type No Yes Not set This property sets the Port Type for the /wst:RequestSecurityToken/wsp:AppliesTo element of the WS-Trust message. Use this property to provide the Port Type of the service for which the security token is to be validated or issued. This value can be specified as an ESQL field reference, an XPath expression, or a string literal. If you use a string literal, it must be enclosed in single quotes and must not contain a period (.), By default, this value is left blank, which means that the WS- Trust request does not include this element. ‫کردن‬ ‫مشخص‬security profile: ‫فلو‬ ‫مسیج‬ ‫برای‬ ‫در‬ ،‫کند‬ ‫استفاده‬ ‫پروفايلي‬ ‫چه‬ ‫از‬ ‫فلو‬ ‫مسيج‬ ‫يک‬ ‫اينکه‬ ‫کردن‬ ‫مشخص‬ ‫برای‬IIB‫گزينه‬ ‫و‬ ‫کرده‬ ‫راست‬ ‫کليک‬ ‫نظر‬ ‫مورد‬ ‫بارفايل‬ ‫روی‬ ‫بر‬Open with > Broker Archive Editor.‫ميکنيم‬ ‫انتخاب‬ ‫را‬‫تب‬ ‫شود‬ ‫مي‬ ‫باز‬ ‫روبرويش‬ ‫که‬ ‫ای‬ ‫صفحه‬ ‫در‬manage‫فلوی‬ ‫روی‬ ‫تب‬ ‫اين‬ ‫در‬ .‫ميکنيم‬ ‫انتخاب‬ ‫را‬ ‫قسمت‬ ‫پايين‬ ‫در‬ ‫تا‬ ‫ميکنيم‬ ‫کليک‬ ‫نظر‬ ‫مورد‬properties‫گزينه‬ ،‫گزينه‬ ‫آخرين‬ ‫آن‬ ‫خواص‬ ‫ليست‬ ‫در‬ .‫دهد‬ ‫نشان‬ ‫را‬ ‫فلو‬ ‫آن‬ ‫به‬ ‫مربوط‬ ‫خواص‬security profile name‫کنيم‬ ‫انتخاب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مورد‬ ‫پروفايل‬ ‫توانيم‬ ‫مي‬ ‫حال‬ ،‫باشد‬ ‫مي‬.‫کنيم‬ ‫مي‬ ‫ذخيره‬ ‫را‬ ‫تغييرات‬ ‫نهايت‬ ‫در‬ ،
  • 72. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid **‫دستور‬ ‫با‬ ‫را‬ ‫نود‬ ‫يا‬ ‫فلو‬ ‫مسيج‬ ‫روی‬ ‫بر‬ ‫پروفايل‬ ‫کردن‬ ‫ست‬ ‫عمل‬ ‫توانيد‬ ‫مي‬ ‫شما‬ ‫همچنين‬mqsiapplybaroverride: ‫مثال‬ .‫دهيد‬ ‫انجام‬ mqsiapplybaroverride -b barFileName -k applicationName -m flowName#nodeName.securityProfileName=securityProfileName Configuring authorization with LDAP: ‫که‬ ‫وقتي‬ .‫ايد‬ ‫کرده‬ ‫ايجاد‬ ‫را‬ ‫نياز‬ ‫مورد‬ ‫امنيتي‬ ‫پروفايل‬ ‫که‬ ‫شويد‬ ‫مطمئن‬ ‫بايد‬ ‫کار‬ ‫به‬ ‫شروع‬ ‫از‬ ‫قبل‬LDAP‫کارب‬ ‫دسترسي‬ ‫سطح‬ ‫بررسي‬ ‫برای‬‫استفاده‬ ‫ر‬ .‫خير‬ ‫يا‬ ‫باشد‬ ‫مي‬ ‫شده‬ ‫اعالن‬ ‫گروه‬ ‫به‬ ‫متعلق‬ ‫ورودی‬ ‫کاربری‬ ‫آيا‬ ‫که‬ ‫کند‬ ‫گيری‬ ‫تصميم‬ ‫بايد‬ ‫بروکر‬ ،‫شود‬ ‫مي‬‫اگر‬LDAP‫که‬ ‫شده‬ ‫تنظيم‬ ‫طوری‬‫ب‬‫الگين‬ ‫دون‬ ، ‫دهد‬ ‫نمي‬ ‫شما‬ ‫به‬ ‫را‬ ‫گروهها‬ ‫ليست‬ ‫در‬ ‫جستجو‬ ‫اجازه‬ ‫کردن‬‫با‬‫اجرای‬‫زير‬ ‫دستور‬‫در‬IIB‫شدن‬ ‫الگين‬ ‫امکان‬IIB‫به‬LDAP‫فرا‬ ‫را‬‫هم‬‫کني‬‫د‬: mqsisetdbparms <BrokerName> -n ldap::LDAP -u username -p password or mqsisetdbparms <BrokerName> -n ldap::<servername> -u username -p password ‫به‬ ‫بصورت‬ ‫بروکر‬ ‫که‬ ‫بخواهيد‬ ‫اگر‬LDAP:‫ببريد‬ ‫بکار‬ ‫را‬ ‫زير‬ ‫دستور‬ ،‫شود‬ ‫متصل‬ mqsisetdbparms <BrokerName> -n ldap::<servername> -u anonymous -p password
  • 73. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid Role-based security: ‫منابع‬ ‫مديريت‬ ‫برای‬IIB‫در‬ ‫وب‬ ‫تحت‬ ‫کاربری‬ ‫واسط‬ ‫يک‬ ‫از‬ ‫توانيد‬ ‫مي‬ ‫شما‬IIB‫بر‬ ‫عالوه‬ ‫جايگزين‬ ‫روش‬ ‫يک‬ ،‫روش‬ ‫اين‬ ،‫نماييد‬ ‫استفاده‬IBM Integration Explorer‫منابع‬ ‫مديريت‬ ‫برای‬IIB.‫باشد‬ ‫مي‬‫توانيد‬ ‫مي‬ ‫شما‬‫به‬ ‫دسترسي‬IIB( ‫نقشهای‬ ‫تخصيص‬ ‫با‬ ‫را‬Role‫کاربرا‬ ‫به‬ ‫مشخصي‬ )‫ن‬ ،‫وب‬ ‫تحت‬ ‫کاربری‬ ‫واسط‬.‫نماييد‬ ‫کنترل‬‫هر‬Role‫کاربر‬ ‫هر‬ ‫و‬ ‫است‬ ‫شده‬ ‫داده‬ ‫تخصيص‬ ‫آن‬ ‫به‬ ‫امنيتي‬ ‫مجوزهای‬ ‫يکسری‬ ‫که‬ ‫است‬ ‫سيستمي‬ ‫کاربر‬ ‫يک‬ ‫يک‬ ‫با‬ ‫وب‬ ‫تحت‬Role‫ها‬ ‫مجوز‬ .‫شود‬ ‫مي‬ ‫ترکيب‬‫ی‬Role‫شدن‬ ‫مشخص‬ ‫برای‬‫کا‬ ‫دسترسي‬ ‫سطح‬‫که‬ ‫شود‬ ‫مشخص‬ ‫تا‬ ‫شوند‬ ‫مي‬ ‫بررسي‬ ‫وب‬ ‫تحت‬ ‫ربر‬ .‫خير‬ ‫يا‬ ‫دارد‬ ‫را‬ ‫مربوطه‬ ‫تسک‬ ‫اجرای‬ ‫مجوز‬ ‫کاربر‬‫وب‬ ‫تحت‬ ‫بخش‬ ‫يوزرهای‬ ‫مشخصي‬ ‫رولهای‬ ‫تعريف‬ ‫با‬IIB‫ها‬ ‫اپليکيشن‬ ‫يا‬ ‫ها‬ ‫سرور‬ ‫توانند‬ ‫مي‬‫فلوها‬ ‫يا‬ ‫را‬Stop & start. ‫کنند‬ ‫ادمين‬ ‫عنوان‬ ‫به‬IIB‫مناب‬ ‫به‬ ‫کاربر‬ ‫دسترسي‬ ‫ميزان‬ ‫توانيد‬ ‫مي‬ ‫شما‬‫ع‬IIB‫را‬‫يک‬ ‫تخصيص‬ ‫طريق‬ ‫از‬Role‫کاربر‬ ‫يک‬ ‫به‬.‫نماييد‬ ‫تعيين‬‫عن‬ ‫به‬‫شما‬ ‫مثال‬ ‫وان‬ ‫يک‬ ‫طريق‬ ‫از‬ ‫توانيد‬ ‫مي‬Role‫منابع‬ ‫ديدن‬ ‫اجازه‬ ‫کاربر‬ ‫به‬IIB‫مي‬ ‫شما‬ .‫بدهيد‬ ‫را‬ ‫آنها‬ ‫ويرايش‬ ‫اجازه‬ ‫ديگر‬ ‫رول‬ ‫يک‬ ‫طريق‬ ‫از‬ ‫و‬ ‫بدهيد‬ ‫را‬‫رول‬ ‫يک‬ ‫توانيد‬ ‫کا‬ ‫هر‬ ‫اما‬ ‫بدهيد‬ ‫تخصيص‬ ‫مختلفي‬ ‫کاربرهای‬ ‫به‬ ‫را‬.‫باشد‬ ‫داشته‬ ‫رول‬ ‫يک‬ ‫تواند‬ ‫مي‬ ‫فقط‬ ‫ربر‬ ‫ادمين‬IIB‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫تواند‬ ‫مي‬mqsiwebuseradmin‫اي‬ ‫وبي‬ ‫جديد‬ ‫کاربر‬ ‫يک‬‫ج‬‫را‬ ‫کاربر‬ ‫يک‬ ‫عبور‬ ‫رمز‬ ، ‫کند‬ ‫اد‬‫يک‬ ،‫دهد‬ ‫تغيير‬ ‫يا‬ ‫تعيين‬ ‫را‬ ‫وب‬ ‫تحت‬ ‫يوزر‬‫يک‬ ‫يا‬ ‫و‬ ‫کند‬ ‫حذف‬Role.‫دهد‬ ‫تخصيص‬ ‫يوزر‬ ‫يک‬ ‫به‬ ‫را‬ ‫خواهيد‬ ‫مي‬ ‫اگر‬administration security‫در‬ ‫را‬IIB:‫کنيد‬ ‫عمل‬ ‫ذيل‬ ‫روش‬ ‫به‬ ‫نماييد‬ ‫فعال‬ 1)‫هر‬ ‫ازای‬ ‫به‬Role‫عام‬ ‫سيستم‬ ‫روی‬ ‫بر‬ ‫سيستمي‬ ‫يوزر‬ ‫ايجاد‬ ‫برای‬ ‫نماييد‬ ‫ايجاد‬ ‫سيستمي‬ ‫يوزر‬ ‫يک‬ ‫کنيد‬ ‫ايجاد‬ ‫خواهيد‬ ‫مي‬ ‫که‬‫يک‬ ‫خود‬ ‫ل‬‫ي‬‫وزر‬ ‫دس‬ ‫دو‬ ‫به‬ ‫را‬ ‫خود‬ ‫يوزرهای‬ ‫که‬ ‫باشيد‬ ‫گرفته‬ ‫تصميم‬ ‫ممکن‬ ‫مثال‬ ‫عنوان‬ ‫به‬ ،‫نماييد‬ ‫ايجاد‬‫يک‬ ‫و‬ ‫وب‬ ‫يوزر‬ ‫دسته‬ ‫يک‬ ،‫نماييد‬ ‫تقسيم‬ ‫ته‬‫د‬‫يوزر‬ ‫سته‬ ‫سيستمي‬ ‫يوزر‬ ‫دو‬ ‫کار‬ ‫اين‬ ‫برای‬ ،‫ادمين‬Ibmuser‫و‬Ibmadmin‫طبق‬ ‫بر‬ ‫يوزر‬ ‫دو‬ ‫اين‬ .‫نماييد‬ ‫ايجاد‬Role‫مي‬ ‫داده‬ ‫آنها‬ ‫به‬ ‫که‬ ‫هايي‬‫شود‬ .‫داشت‬ ‫خواهند‬ ‫مختلفي‬ ‫های‬ ‫تسک‬ ‫اجرای‬ ‫مجوز‬ 2)‫مجوز‬ ‫خود‬ ‫شده‬ ‫ايجاد‬ ‫يوزرهای‬ ‫به‬authorization queues‫مجوز‬ .‫نماييد‬ ‫اعطا‬ ‫را‬authorization queues‫شامل‬ SYSTEM.BROKER.AUTH, SYSTEM.BROKER.AUTH.integrationServerName, SYSTEM.BROKER.DC.AUTH.‫باشد‬ ‫مي‬ :‫باشد‬ ‫مي‬ ‫ادمين‬ ‫يوزر‬ ‫يک‬ ‫برای‬ ‫استفاده‬ ‫مورد‬ ‫های‬ ‫مجوز‬ ‫ليست‬ ‫شامل‬ ‫زير‬ ‫جدول‬ Object Name Permissions Queue manager The queue manager associated with the broker; for example, IB9QMGR Connect Inquire Queue SYSTEM.BROKER.DEPLOY.QUEUE Put Queue SYSTEM.BROKER.DEPLOY.REPLY Get Put Queue SYSTEM.BROKER.AUTH Inquire Put Set Queue SYSTEM.BROKER.AUTH.EG Inquire Put Set
  • 74. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid 3)‫ح‬‫توانيد‬ ‫مي‬ ‫ال‬administration security:‫نماييد‬ ‫فعال‬ ‫زير‬ ‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫دستور‬ ‫از‬ ،‫ايد‬ ‫کرده‬ ‫ايجاد‬ ‫قبال‬ ‫را‬ ‫خود‬ ‫بروکر‬ ‫که‬ ‫حالتي‬ ‫در‬ )‫الف‬mqsicreatebroker:‫نماييد‬ ‫استفاده‬ ‫زير‬ ‫روش‬ ‫به‬ mqsichangebroker brokerName -s active ‫ه‬ ‫بروکر‬ ‫ايجاد‬ ‫حال‬ ‫در‬ ‫اگر‬ )‫ب‬:‫نماييد‬ ‫استفاده‬ ‫زير‬ ‫دستور‬ ‫از‬ ،‫ستيد‬ mqsicreatebroker brokerName -q brokerQueueManagerName -s active 4)‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬mqsiwebuseradmin‫يوزر‬‫نماييد‬ ‫ايجاد‬ ‫را‬ ‫خود‬ ‫وب‬ ‫های‬: Syntax mqsiwebuseradmin brokerSpec '- -u -username-' '- -a -password-' '- -r -role-' '- -w --timeoutSecs-' '- -v -- traceFileName -' brokerSpec‫مقادير‬ ‫از‬ ‫يکي‬ ‫تواند‬ ‫مي‬ :brokerName،-n brokerFileName‫یا‬-i ipAddress, -p port, -q qMgr‫باشد‬. -‫پارامتر‬i‫معني‬ ‫به‬IpAddress.‫باشد‬ ‫مي‬ -‫پارامتر‬p.‫باشد‬ ‫مي‬ ‫پورت‬ ‫معني‬ ‫به‬ -‫پارامتر‬q‫معني‬ ‫به‬managerqueue.‫باشد‬ ‫مي‬ ‫بروکر‬ ‫به‬ ‫مربوط‬ -‫پارامتر‬u‫معني‬ ‫به‬username.‫باشد‬ ‫مي‬ -‫پارامتر‬a.‫باشد‬ ‫مي‬ ‫پسورد‬ ‫معني‬ ‫به‬ -‫پارامتر‬r‫معني‬ ‫به‬Role.‫باشد‬ ‫مي‬ -‫پارامتر‬w‫زمان‬ ‫کردن‬ ‫مشخص‬ ‫برای‬timeout.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫دستور‬ ‫اجرای‬ -‫پارام‬‫تر‬v.‫کند‬ ‫مي‬ ‫ذخيره‬ ‫گيرد‬ ‫مي‬ ‫قرار‬ ‫پارامتر‬ ‫اين‬ ‫از‬ ‫بعد‬ ‫آن‬ ‫نام‬ ‫که‬ ‫مشخصي‬ ‫فايل‬ ‫يک‬ ‫در‬ ‫را‬ ‫الگ‬ ‫اطالعات‬ ‫مثال‬: Create a web user account and password and specify the associated role (system user account): mqsiwebuseradmin IB9NODE -c -u webuser1 -r admin -a passw0rd ‫کلمه‬ ‫باال‬ ‫مثال‬ ‫در‬admin.‫است‬ ‫سيستمي‬ ‫يوزر‬ ‫دهنده‬ ‫نشان‬ Change the password for webuser1: mqsiwebuseradmin IB9NODE -m -u webuser1 -a n3wpass Delete the web user account for webuser1: mqsiwebuseradmin IB9NODE -d -u webuser1
  • 75. ‫قرباني‬ ‫حميد‬ : ‫کننده‬ ‫تهيه‬n to IIBIntroductiohttps://ir.linkedin.com/in/ghorbanihamid WS-Security: WS-Security‫سطح‬ ‫در‬ ‫استاندارد‬ ‫يک‬message‫های‬ ‫پيام‬ ‫کردن‬ ‫امن‬ ‫برای‬ ‫که‬ ‫باشد‬ ‫مي‬Soap‫روشهای‬ ‫طريق‬ ‫از‬XML digital signature, confidentiality through XML encryption, and credential propagation.‫رود‬ ‫مي‬ ‫کار‬ ‫به‬ ‫امنيتي‬ ‫های‬ ‫توکن‬ ‫بوسيله‬ WS-Security‫پيام‬ ‫يک‬ ‫انتهای‬ ‫به‬ ‫و‬ ‫کرده‬ ‫کد‬ ‫مختلف‬ ‫های‬ ‫مکانيزم‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫مختلف‬ ‫باينری‬ ‫های‬ ‫توکن‬ ‫توان‬ ‫مي‬ ‫چگونه‬ ‫که‬ ‫دهد‬ ‫مي‬ ‫توضيح‬ Soap‫ا‬ ‫حاضر‬ ‫حال‬ ‫در‬ .‫کرد‬ ‫اضافه‬:‫کرد‬ ‫استفاده‬ ‫توان‬ ‫مي‬ ‫زير‬ ‫توکنهای‬ ‫ز‬  Username tokens  X.509 certificates  SAML assertions  Kerberos tickets  LTPA binary tokens Resources: IBM Integration Bus Version 9.0 http://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.msgbroker.helphome.doc/help_home _msgbroker.htm