How do i separate my siddhimanager based on context? - wso2

I have a number of streams coming in and i use wso2 to evaluate these stream with rules . Some of these streams can be bundled together as they would be from the same organization . How can i separate my siddhi context based on these different organizations .
So basically what i am looking for is something like this .
siddhimanager.context("context1").defineStream(...)
siddhimanager.context("context2").defineStream(...)
Any help would be highly appreciated
Thanks in advance

SiddhiManager is associated with a single SiddhiContext. So For your use case, you can just use separate SiddhiManager instances for each organization.
This is actually how the different execution plans and also multi-tenancy has been implemented in WSO2 CEP.

Related

Generic rule interface and persisting rules

I am planning to use Siddhi for rule evaluation engine
I have below scenarios to be met
when the conditions are created by user need a way to persist them, which can be used when the node running siddhi restarts due to some reasons
I need a generic interface to represent the rules which are in layman's language not specific to siddhi. Because user should be able to configure the conditions without knowing siddhi
Any inputs on this will be a great help
If you are doing manually you can create a siddhi query as a template by including placeholders for conditions which needs to be configured. Then for those placeholders so a regex replace based on the values provided by outside.
Almost similar thing was done for Siddhi in old WSO2CEP 4.0.0 by providing a user instance to do the configurations. In this blog i have explained everything in detail [1].
Successor of the WSO2CEP is WSO2 Stream Processor which was released recently. It provides a much enhanced Business Rules Manager [2] to provide a generic interface via stored templates, that can be created with the Business Rules Template Editor [3].
[1] http://blog.tharik.org/2015/09/user-friendly-execution-management-with.html
[2] https://medium.com/#senthuran16/all-about-the-wso2-sp-business-rules-manager-e7e730b2abe7
[3] https://docs.wso2.com/display/SP400/Creating+a+Business+Rule+Template

Is it possible to create Siebel inound web service based on workflow with more than one operation?

I have a requirement to publish Siebel inbound web service with only one port, at the same time WS has to receive three different operations.
My WS's are based on workflow.
As I could read in the bookshelf the only one operation is possible to add in the one port of WS based on WF:
https://docs.oracle.com/cd/E14004_01/books/CRMWeb/CRMWeb_Overview12.html
(see p.5)
However I've found vanilla WS that looks as I need:
FinancialAssetService
Could anyone give me some tips how to create such WS?
Is it possible to receive different IO by different operations of this WS?
Thanks in advance!
Well, if your web service provides 3 operations, you must be invoking 3 different workflows, right? (It says so in the page you linked: a workflow corresponds to a single Web service operation). Then, yes, you'll need to define 3 "service ports" in your web service.
However, I don't see why that would be a problem at all. I've never done this myself, but you can define the same endpoint URL and HTTP port for each one of the 3 service ports. The external application consuming your service would never notice any difference.
As for your second question, yes, having 3 different workflows would obviously allow you to choose different integration objects for each operation.
On the other hand, if you only have one workflow and need 3 operations because you want it to accept different input structures, then you might want to rethink your solution. Perhaps create 3 tiny workflows (or a BS with 3 operations) to just transform the data to a common IO (using Siebel data mappings), and then pass it to your existing WF.

GraphEngine Scaling

I don't see any documentation on scaling GraphEngine.
I'm confused as to how this works. I saw that there is a "distributed" mode. I can add the servers and get them to hook up, but I can't get data to be used in both places.
LocalStorage vs CloudStorage is confusing. It doesn't seem you can query on CloudStorage either (for data that might exist in multiple places).
Do you have any examples of this? I'd be very appreciative.
If you mean LINQ interfaces by "query", then currently there's no built-in support for LINQ over cloud storage. However, it should be easy to write a wrapper handler that broadcasts a query to the cloud, and let each server collect data using LINQ, then aggregated together.
Could you elaborate your scenario? It would be interesting to see how a user would like to query over a distributed cluster.

Does Biztalk Server support data exchange without use of web services

As I have very little knowledge on how ESB's work in tandem with database I'm asking a question regarding how communication can take place between the two hoping I'll atleast be pointed in the right direction to search in!
SITUATION : We have two systems(one of them is the client's) on different networks which have their own databases. We are required to do a regular real-time data exchange of all points present in our database with the other. We are also required to have a provision to be abel to import data into our system. This exchange has to follow SOA functionality over customer provided Biztalk ESB.We are supposed to provide the exchange by the use of ODBC.
Question: My query is whether it is possible to integrate the databases to the ESB as some endpoints without making any use of WEBSERVICES or extra interfaces, and send the data over the ESB as a pull-push transfer mechanism?
I have tried searching the net for this situation but have not come up with a lot of straightforward answers. Could someone please point me in the right direction.
ESB Toolkit in BizTalk is not an ESB! It is just small additional tool for some special cases.
Let's stop talk about the ESB, we need to solve the technical problem, right?
As I can understand you have two SQL databases and want to integrate them.
To do so with BizTalk the easiest way is to use the WCF-SQL ports/adapters.
You start the Wizards for this adapter, choose the tables/sp-s which should provide data/consume data, the Wizard will generate all needed Xml schemas for you.
Then you will use BizTalk Mapper to create the Xslt maps, which will transfer one SQL data format to another.
They you will create a pair of ports. One will consume data from one SQL database, the second will insert data to another SQL database. One of this port will use the mentioned above Xslt map.
If you need more processing, you could create and orchestration to manage additional processing, sophisticated error handling, etc.
I would recommend using MSMQ. There's a fairly detailed description of it here

How to define totally new asset types in WSO2 G-REG?

I am evaluating WSO2 G-REG and would like to create some new asset types like Integration (similar to a service but with other attributes and with other life-cycle stages) and Application (basically a consumer of service(s) that itself does not expose any endpoints and that once again has its own set of life cycle stages).
I have seen some examples about how to add attributes to existing asset types (and to modify there life cycle stages) but so far not figured out how to create new ones (from the product feature list I get the impression it should be possible)...
Pointers to documentation or even better some examples or XML snippets are warmly appreciated!
You can find some information in here.
Thanks,
Senaka.