Академический Документы
Профессиональный Документы
Культура Документы
Integration
Meet David:
Professional software architect and product manager with extensive experience in the design and development
of enterprise business and financial systems. Integrating all manners of disparate software applications for over
20 years, specializing in cloud and application layer integration and security. At Pega he provides customer-
driven product and architectural direction for the design and development of core Java-based business process
management and rules engine software applications the Pega 7 platform.
Message from David:
Im pleased to join the Product Support Community Ask the Expert event and welcome all of your integration
questions! Integration is part of our Information Experience area that also includes data management. Over
the course of the month I will be answering your questions. We certainly welcome comments on any integration
topic from how to make secure connections to your favorite REST service to the inside scoop on SAML 2.0 web
SSO. For questions that fall outside my areas of expertise we may direct you to other resources for answers.
While this month's event has indeed come to a close (you got a bonus day this leap year! :-) please don't
hesitate to contact the Pega Support Community or myself with your integration questions and feedback.
Brendan Horan
Feb 29, 2016 11:49 AM
While there is still time left to submit any last minute questions, I wanted to take a moment to offer a HUGE
thank you to David Kircheis for making yourself available throughout the entire month of February to answer
PSC participant's questions.
As we mentioned at the start, this was our first time doing this and we didn't know what to expect going in.
Suffice it to say, this exceeded our expectations and has laid the groundwork for more sessions in the future.
B.
Regards
Sunil
Ajith Appukuttan
Feb 24, 2016 4:52 PM
Hi David,
I am trying build a connector from Pega to Apache Kafka Queue. we are facing below issue while executing
the Java Connector. can someone from your team help me to figure out the issue.
Error Message:
WARN kafka.consumer.RangeAssignor .warn line 83 - No broker partitions consumed by consumer thread
chipsdspgroup3_ip-10-94-99-18.kdc.capitalone.com-1456329814264-18a23845-0 for topic chips_test_ei
Code Base:
props.put("zookeeper.connect",zkeeper_connect);
props.put("zookeeper.session.timeout.ms", "400");
props.put("consumer.timeout.ms", "5000");
props.put("zookeeper.sync.time.ms", "200");
props.put("group.id", group_id);
1. props.put("topic.metadata.refresh.interval.ms","400");
//props.put("broker.partition.info",Broker_Id);
props.put("auto.commit.interval.ms", "1000");
props.put("partition.assignment.strategy", "range");
props.put("auto.offset.reset", "smallest");
try{
String topic=KafkaTopic;
while (it.hasNext()){
}
}
consumer.shutdown();
}
catch(Exception e)
{
Message += "Got Exception";
}
Eric Osman
Feb 24, 2016 2:28 PM
>>> Consider situation when agent has to update work or data object which is locked at the processing time.
Take a look at the SLA agent configuration, since such a locking-contention is normal and expected. Very
often when an SLA tries to run, a user has the work locked, so the SLA needs to try again later. /Eric
Sunil Ojha
Feb 24, 2016 2:24 PM
Hi David,
We are exploring possibility of RabbitMQ integration in PRPC 7.1.9. Wanted to check if we can integrate with
rabbitMQ if yes what configurations needs to be done. Do we need specific libraries or jar file ? Any detailed
information will be on great help.
Andrey Kostikov
Feb 24, 2016 2:00 PM
Hello, David,
What is the Pega recommended way to deal with non-permanent error during agent processing?
Consider situation when agent has to update work or data object which is locked at the processing time.
What is preffered solution to make agent process work later when object may be released?
Also it's supposed to somehow resolve conflicts between deffered (previously failed) tasks and current tasks.
Please use the "Map from JSON" option for your REST service instead of using the getJSON() API directly to
avoid getting the pxObjClass values.
Our use case is that we will get a list of account numbers from the frontend application and we need to do
some decisioning on that and then return the response back. I was able to solve that problem using a post
method as I can pass a request body in POST method and not just the resource url with parameters as in the
case of GET method.
For the second scenario I checked the API's they are converting the response page into JSON by using the
function pxConvertPageToString and responding back with {"pxObjClass" : "Class Name"}. They are not
removing them. Please let me know if there is any way to remove the pxObjClass elements from the response
JSON.
Could you also provide details on any potential issues that one may run into, if best practise of distinct ruleset
for each integration is not followed?
Regards,
Murali
Have a look at the Pega API - it may already provide the types of services you need and, if not, can serve as a
good reference for building your own services.
You can certainly roll all rulesets including integration rulesets to a new version - it really depends on your
business and application. If your integration layer is fairly static (changes much less frequently than your app)
then this may not make sense for you. There are many great PDN articles about best practices for managing
rulesets such as this one.
Could you please provide more details on potential issues that one may run into if best practise of distinct
ruleset for each integration is not followed? Is there any documentation of such best practices (similar to
guardrails recommended by Pega)?
The reason I am asking this is because I saw about 10 to 15 integrations in few customer applications.
Whenever new version for a ruleset has to be created we used to roll all application rulesets to same version
so as to avoid confusion in current ruleset versions across different environments (Dev, Test, UAT etc.). Now
if distinct ruleset is created for each integration is it a best practice to roll all integration rulesets as well to new
versions even when no changes to those integrations?
Thanks,
Murali
Arjun Lath
Feb 23, 2016 7:04 PM
Hi David,
I have two question with respect to REST Services. We are hosting a REST service in Pega.
1. Is there any way to pass a list of values into the GET method. For example if I want to pass multiple account
numbers as parameters to the GET method is that possible. When I tried it they are getting overwriiten
even when I map them like .Account<(APPEND>).AccountNumber. My resource url is something like this /
PackageName/ClassName/ServiceName?AccountNumber=123&AccountNumber=456
2. When I return the response from my REST Service a lot of pxObjClass values are also passed as I am
converting the response page into JSON and sending that back as response. Is there any way to remove the
pxObjClass values from the JSON response.
Thank you for the additional information. That identity server supports both the authorization code and client
credentials grant types. Please contact me directly to discuss the specific business use cases.
https://identityserver.github.io/Documentation/docsv2/
https://github.com/IdentityServer/IdentityServer3
We discussed with Thomas in EDC today, and agreed to discuss with you on options.
Duy T Son
Feb 23, 2016 12:35 PM
Hello David,
How would I know when to use a Decision Table versus a Decision Tree?
- Ricky
Thank you for the feedback on our new OAuth 2.0 features! Yes, we only support those two grant types at this
time.
Can you describe your business use cases of the Resource Owner grant type? Are there specific 3rd party
providers your client is integrating with, for example?
-Nishan
Thank you for your question. Yes, it may be better to post in another topic area or just in the Pega Support
Community main page.
Have you considered executing quick smoke tests against all services after a JVM restart? This would (1)
ensure that the services are up and running correctly and (2) avoid the first-time delay you're seeing.
I have gone through your video on latest features of Pega 7.2 with respect to whats new in IX Integration which
is really nice. Regarding the OAUTH 2 authentication support provided in Pega 7.2. I understand that we are
supporting 2 grant types "Authorization Code Grant" and "Client Credentials Grant" out of 4 available grant
types available with OAUTH2. Do we have any solution or workaround to achieve "Resource Owner Password
Credentials Grant / password" grant type functionality in Pega 72? My Client is using this grant type for all their
applications and insisting Pega to use the same.
Regards,
Sudheer
Nishan Ansari
Feb 22, 2016 8:01 PM
Hello David,
After restarting Pega JVM's; when we hit any Pega service for the first time; it takes a lot more time to respond
than when we hit the service from the second time onwards. I understand that it could be because the
First Usage Assembly (FUA) files are getting built on first hit. What I want to know is how we can avoid this
slowness on the first hit ? I observed that using "static assembler" is one appraoch that reduces this slowness.
Is there any thing else that you could recommend.
I understand that this is not exactly an integration issue and may be inappropriate of me to ask it here ; but I
assumed that you must have come across such problems when pega is exposed as a service.
Thanks
Nishan
Yes, you are on the right path. If the non-Pega application is able to make REST calls then you should
seriously consider using the Pega API to process assignments and advance the flow.
OK, given that you're just inserting records then, yes, having an activity do an Obj-Save in a loop on your
pagelist is the way to go. RDB- methods including RDB-Save are deprecated; use the External Database Table
Class Mappings and Obj-Save instead - no SQL connectors required.
Thanks for the response. We need to only insert in the table. We don't need to browse it. From page list need
to insert the values in the table records. SO each page in the pagelist would be one record.
-Saikat
Instead of directly working with the older RDB methods, have you explored using data pages with Lookup
data sources? Our database table class mapping facility allows you to easily work with external tables without
having to write SQL.
Saikat Chakrabortty
Feb 18, 2016 7:27 AM
Hi David,
Is there any way to loop through a page list within connect sql (RDB-List or RDB-Save). I have an external
table and need to save records into it from a page list. Simple way would be looping in activity and calling RDB
as a child or build the sql statement through Java. But if we can loop within Connect sql that would be great.
Thanks,
Saikat
So basically the idea is to structure the beginning of the flow, in its first stages/steps, using Assignment
Services.
Now what I understood from what you explained:
- an Assignment Service is a Assignment which is not existing in any worklist/workbasket (except maybe some
hidden technical one)
- it's basically a stopping point in the flow
- once such an Assignment Service is reached, a call to a connector is made and then the flow is waiting for
something to happen and make it advance again. And this "something" can either be some Service which is
called and is triggering one of the outbound flow actions defined on the Assignment Service, an SLA if such an
SLA is defined on the Assignment service or maybe a Ticket which is making the flow "jump" to somewhere
else.
Is guess my mistake is that I got it all wrong with the rule that is specified in the Assignment Service properties.
I was thinking it's the name of the service which the assignment is waiting for the call of.
While (and correct me if I'm wrong again) it's the connector the assignment service is calling before waiting for
something to happen.
It would be great to know your business use case regarding assignment service shapes as this isn't a widely
used feature.
That being said, I will address your questions in general. The Pega 7 help is currently the best resource for
details on assignment services.
Any type of outbound connector (SOAP, REST, ...) may be called from the assignment service
activity. By select "Rule Connect" as the Usage on the Security tab of the activity, you automatically
get key system parameters such as flowName passed in at runtime.
Once you have created a "Rule Connect" activity, you will be able to select it from the Type drop-
down in the assignment service shape properties.
The Service Wizard helps to generate integration service records such as SOAP services and also
expose existing flow actions as services - it is not directly related to service assignments.
Regards,
Srinivas
Yes, use a Launch action on a button or link (icon) to open a harness or landing page as desired from the end
user portal.
Srinivas Komarina
Feb 17, 2016 2:56 PM
Hi David,
Greetings. We have a requirement to provide Surveys used in the application as a delegated rule to
administrator in a portal. I have seen Survey Management is within a Landing Page of Designer Studio, Is there
a way to add this to a portal (may be as a link).
Regards,
Srinivas
Marissa Rogers
Feb 17, 2016 1:12 PM
This was just asked on the Community board and thought it would be perfect for the Ask The Expert event, so I
contacted Frederi Pochard and got the go-ahead to re-post here:
I'm currently trying to figure out how to setup and use Service Assignments.
I don't think there is anything in the Pega Academy courses (but correct me if I'm wrong...) and the help entries
are very lightweight (and so not very helpful which is ironic).
And I can't find any "step-by-step" example anywhere.
So question is: is there any kind of how-to/help entry anywhere which is describing how to setup and use
Service Assignment (including how to setup the - SOAP? - Service to move out of the Service Assignment and
move along the flow)?
- What kind of outbound connector do you have to create on a Service assignment? An empty one (that will be
used whenever the "right" service activity is called)? Or one or more connector(s) linked to Flow Actions (in that
case the service activity will have to invoke one of these Flow actions)?
- What is this "Type" property in the Assignment Service properties? It's supposed to be a "Rule Connect"
activity. But which one? One that has been created by the Service Accelerator (see below)?
- How do you use the Service Accelerator to create the Service that the Service Assignment is waiting for?
What's the right Service Purpose to use? "Create and manage work" or "Invoke existing activty rules"?
Really, once again, a step-by-step example (not necessarily detailed but with the main issues - concerning
Service Assignment, Service Accelerator and their relationship - covered) is what I'm looking for.
I don't believe we have any built-in integration with Adobe Omniture / Experience Manager. However, we do
have strong support for SOAP and REST connectivity in the Pega 7 Platform that you can use with Adobe
Data Connectors. In addition, with the Pega 7.2 release, we support OAuth 2.0 which Adobe uses for access
delegation.
Amit Kumar
Feb 17, 2016 6:02 AM
Hi David Kircheis
I would like to check if we have integration capability to integrate Pega marketing with Adobe Omniture and
share the assets with Adobe Experience Manager.
Thanks !!
Great question! Yes, using a separate count(*) query to get the number of records (as mentioned in a response
to your prior mesh post) is certainly a viable approach and is also my best recommendation at this time.
As you know, Pega Web Mashup enables you to embed Pega 7 UI gadgets into your website. All Pega 7
security features for authentication and authorization are also available to secure Web Mashup gadgets.
Pega designer studio allows you to build and generate applications that are resistant to attack by default.
Additionally, the Pega gateway does session invalidation to mitigate "session fixation attacks". Application
servers including tomcat may also provide protection by renaming the session ID after authentication.
Deploying Web Mashup applications does require an understanding of web browser same-origin policy. In your
scenario the three unique partner websites would need to ensure that the Pega gadgets are presented in the
same origin as the main site. This can be done by deploying the Pega gateway into each partner site (as you
suggested) or by utilizing a network device to provide a local alias of the Pega 7 application.
Saikat Chakrabortty
Feb 16, 2016 8:07 AM
Hi David,
How can I get the no of record updated by rdb-save operation. I can see the number in DB-Trace but it does
not seems to stored in any parameter. Is there any way to get the number?
As an alternative we can have a rdb-list and get the count but this will increase one step and one more DB
connection. In{SQLpage:MySQLPage} also we only have pre and post SQL statement not the number of
records touched.
Same question I asked in Mesh but not cleared.Please find the link here.
Thanks,
Saikat
Prasanna Tuladhar
Feb 12, 2016 2:23 PM
Hi David,
1. What are the security features built around webmashup to prevent unauthorized access and session fixation
attack. What other caution must a customer take when they expose Pega gadgets in Internet ?
2. If Several customer have their portal on different domains and wants to integrate webmashup (which is on
another partner site) do they need separate webmashup component to be installed on each of their domain
(due to same origin policy) ? To simplyfy partner1, 2 and 3 are in domains a, b, c and wants to access a pega-
gadget on domain d .
As you probably know, Pega provides built-in features for integration with Microsoft Active Directory via LDAP.
We also support Single Sign-On with Active Directory Federation Services (ADFS) with our SAML web SSO
feature. You will find details of both of these options in the Pega help documentation for your product version.
As always, don't hesitate to post any specific questions you have about AD integration on the Pega Support
Community.
Regards,
David
Yogesh Raheja
Feb 11, 2016 2:13 PM
Can you publish step by step guide on Active Directory integration/authentication with screenshots?
prasanth kumar
Feb 11, 2016 3:43 AM
see i have req like the user enters the address once he selects the country in the drop down he should get
list of states and once he selects the state he should be able to get all the districts how can u do this with out
storing all the information in the data tables???
Marissa Rogers
Feb 8, 2016 1:55 PM
Hi David,
Here's a question we received in the Community that we were hoping you could help with:
Does PEGA 7.1 interface directly with macros? We are looking to purchase a third party application that has
the interfaces for HHLAPI API, Macro API and Object API and I wanted to know if PEGA can interact with any
of these API's. Thanks!
This sounds like a good opportunity to engage Pega Support to better understand the details of your issue. The
best way to do this is to "Start a discussion" on the Pega Support Community. Thank you!
pravin magar
Feb 5, 2016 7:07 AM
Hello David,
We are facing issue with the connect SQL/RDB List call. In our application cases are being created using JMS
service/MQ Feed. We are making this RDB Call in routing
activity. This RDB call is failing certain scenarios Please find below are the some Working and non working
scenarios.
b. above mentioned non working scenario is also working fine if case is created from pega using JMS
service rule to post the message in pega.
Thanks,
Pravin
The generation of integration services, performed by using the new REST integration or other wizards, is
optimized by building upon your prior work. This directly supports the Pega "Built for Change" approach.
For example:
Create a new REST integration
Run the new REST integration wizard and generate your integration layer into the ruleset
"MyIntegration:01-01-01"
NOTE: As a best practice, use a distinct ruleset for each integration.
Run the new REST integration wizard and generate your integration layer into the ruleset
"MyIntegration" and select (new version).
The result is that you now have two versions of MyIntegration (01-01-01 and 01-01-02). Any changes to the
REST integration will be reflected by the creation of new records in the 01-01-02 version.
This approach reduces the number of records required by each subsequent generation.
There are two approaches to undo generation if the ruleset can be unlocked:
Approach #1 is to run the "undo generation" action on the last step of the new REST integration wizard for
that particular instance. You can view prior runs of the wizard in Designer Studio with the Integration > Tools >
Wizard Cleanup tool.
Approach #2 is is to simply delete the ruleset version you no longer want. In Designer Studio, select System >
Refactor > Rulesets > Delete a ruleset and pick the ruleset and version to remove. As explained in the above
example, the integration may have records in multiple ruleset versions. Deleting a version may necessitate
running the wizard again if critical records are removed. In addition, your ruleset may contain more than just
integration records - in this case Approach #1 can be followed.
If you cannot unlock the ruleset then you may need to refactor the records with System > Refactor > Rulesets
> Copy/Merge rulesets and/or generate the integration into a different class structure. You might choose
refactoring if you want to preserve and copy records generated earlier. The latter option would require an
update to your application to use the new class.
How i can undo generation on integration services with locked versions (old versions). For example, i
developed something on 01.01, checked- in, and locked this version, then i opened a new version 01.02. Now i
want to undo generation on 01.01 but i dont know how it is possible?
Can you hep for this issue ?
There are several ways to enable your Pega 7 application to utilize information stored in a DMS or enterprise
content management (ECM) system. Most modern systems, including web/cloud storage providers, have
standard APIs - often REST based - that you can easily connect to using the REST integration wizard in
Designer Studio. It is often important to provide direct access from your Pega application to the user interface
of a DMS for things like content search and browsing. This can be done by customizing your Pega application
flows and sections to mashup such external UI content. Finally, Pega provides support for the CMIS standard
and has built-in facilities to use it for case attachments.
Tom Thomas
Feb 3, 2016 6:59 AM
Hi David,
I am looking for information/documentation regarding how Pega can be integrated with a Document
Management system (DMS) as opposed to storing documents within Pega itself. Would you be able to help?
Many Thanks
Tom
Yes, handling of data in excel files is a common requirement. While we don't have any plans at this time for
enhancing connector rules or wizards for handling excel documents, we are looking to make improvements in
the import and export of comma separated (.csv) data files. Also be sure to check out the Pega 7 feature for
the import/export of comma separated data records for any Data Type.
We see a lot of requirements around the excel documents generation and parsing. Do you have any plans in
making this integration easier like building out some Connect rules, Wizards?
As you know, there are many options for data and application layer integration with reporting solutions.
The Pega 7 platform has several built-in connectors including SQL and REST that can be used for direct
connectivity as well as tools like BIX for data export.
In regards to best practices, the approach you apply depends on several factors such as the volume of data,
business requirements, and data storage type and location. For example, if you need to generate monthly
reports for an application running on the Pega Cloud, exporting the application data using scheduled BIX
processes may be the best approach. On the other hand, if you have end-users that need the latest information
it is probably more suitable to employ RESTful web services for publishing the latest available data.
In the near future we will provide support for OAuth 2.0 enabled REST services for those reporting applications
that support that standard.
Other approaches employing protocols like SOAP and JMS continue to be used by many of our customers.
However we are seeing interest in them for new integrations dropping significantly - Google trends reflects this
as well:
Jeremy Becker
Feb 1, 2016 11:30 AM
Hey David,
With regard to integrating data into an existing reporting solution, are there any *best* practices around
establishing the design for the interface (delivery method, frequency, relevant data)? Messaging? SQL-based?
On change or scheduled? Are there any P7 or in process changes that may influence this in the future?