Tools available for creating a BPMN file - bpmn

Does anyone know if there is a free online tool available to create BPMN files except bpmn.io?
I have been using BPMN io for a while, and it does not allow me to change the task/event's ID from the GUI. Because of this, I have to do this manually. But it's not practical when there is a large number of events/tasks. Can someone tell me if there is a free online alternative for bpmn.io that can change the event's ID or if there is a way to change the id in bpmn.io? Did a background check on this and couldn't find one.

There is also the offering from Camunda - Camunda Web Modeler (CaWeMo). I don't think it does what you are asking though. I didn't think event IDs were part of the BPMN specification, since they are likely more about implementation than modeling, but I've not actually looked into the BPMN specification that deeply.
If the one you are using exports in a format that you find useful, you could update the event nodes as a post processing step.

You can try using https://kiegroup.github.io/kogito-online/#/editor/bpmn for bpmn authoring.

Related

Recommendation system based on users past experience

I'm currently working on making a recommendation system. I have all the information about what kind of books the user views. How do I build a recommendation system using that information?
The Question seems very general to me. If you're using python I would suggest you to check out the following link:
https://realpython.com/build-recommendation-engine-collaborative-filtering/
Recommendations can be created using 'collaborative filtering' where you determine similarities of users or items.
The source uses scikit-surprise which is a ready to use implementation with all code needed for a recomendation system.
The surprise library is good if you have (explicit) book ratings whereas another library called 'implicit' is better for implicit ratings within the data e.g. if the user viewed or liked something.
https://surprise.readthedocs.io/en/stable/index.html
https://benfred.github.io/implicit/index.html
It really depends on your usecase, both libraries have implemented various algorithms for your task, so you need to find the solution that fits best.
There are also lots of other libraries and implementations blogs and more on the internet but that's what I would start with.

Representing execution historic with BPMN 2.0 meta-model

I'm using BPMN2.0 meta-model to represent process models. I cannot find any attributes to keep execution historic. I'm wondering if actually BPMN 2.0 does not support that, or if something escapes me?
In other words, my question is: is it possible to represent execution historic with BPMN 2.0 meta-model? if yes, how?
Thank you for your help.
BPMN supports the Elements Auditing and Monitoring. They are meant to be hooks for auditing and monitoring related properties. For the definition of such properties the extensibility mechanism is to be used. Actual definitions are out of the scope of the specification. So, the answer is, that BPMN supports this, but leaves the details to the user or the tool vendors.

How to generate understanding of PLSQL package, procedure or function?

we can generate ER diagram in SQL developer which help us in understanding of tables in a better way.
Like this Is it possible we can generate some kind of document which can give us overview of what a package/procedure/function is doing?
I'm asking this because in my project we have very long packages like 10000 lines and to read them consume lot of time. If we can generate some kind of document for understanding it will be very helpful.
As far as my experience is concerned there is no tool available which will generate documentation out of PLSQL code (just by reading the code without any comments).
However, I would like to mention the following tools and you can consider using them if they are of any help.
Pldoc
Pldoc is an open-source utility for generating HTML documentation of code written in Oracle PL/SQL.
http://pldoc.sourceforge.net/maven-site/
However, you will have to provide comments in your packages and functions in PLdoc style to ensure that documentation gets created.
Toad's Code Xpert
http://www.toadworld.com/products/toad-for-oracle/w/toad_for_oracle_wiki/11088.code-complexity-analysis-using-toad
This tool will perform an automated review on your code and provide a report. It will also provide a CRUD matrix which you might find useful.
PLSQL Doc Plugin
https://www.allroundautomations.com/plsplsqldoc.html
Similar to PLdoc.
Natural Docs
http://www.naturaldocs.org/
Open-source documentation generator for multiple programming languages.
There is no silver bullet - you cannot automagically create documentation for code.
Worse - the "auto-doc" tools typically look at comments, but there's no guarantee the comments match the code.
However, "working with legacy code" is a common problem. You might want to read this answer, and the book it refers to.
I'm happy with this (new) tool: https://github.com/teotiger/pldocu
It's limited and I miss some automatic export formats (e.g. html), but you can try to do this by yourself. For me it's okay.

Content related to a topic from a text file

Do we have any API that can identity content from a text file related to a particular topic?
For example I have a text file having 5000 lines of text in it.
I want to extract the text related to TOPIC ABC. Does lucene or any other api do that? Any idea?
I have used Lucene for identifying the documents that contain a particular WORDbut would like to know if we have any api that extracts the content from a file related to a particular topic.
This is quite a broad question, but from the information you have supplied it is clear you have a couple of options.
Option 1: Use an API
You could use the Thomson Reuters Open Calais platform which is the best that I have ever came across available for developers. However, it I can imagine it would get expensive over time. They provide a demo on their site which is worth checking out.
Option 2: Extend Lucene's VSM
When I say extend Lucene, I don't mean you need to. There is open-source projects readily available to be taken advantage of. For example, Luence-LDA which allows queries over Latent Dirichlet allocation (LDA). This particular project hasn't been updated in about 3/4 years so it may want to fork it or build your own.

Etherpad style synchronisation in Meteor?

Looking into Meteor to create a collaborative document editing app, because it’s great that Meteor synchronizes data between multiple clients by default.
But when using a text-area, like in Sameer Kalburgi’s example
http://www.skalb.com/2012/04/16/creating-a-document-sharing-site-with-meteor-js/
http://docshare-tutorial.meteor.com/
the experience is sub-optimal.
I tried to type at the same time with a colleague and my changes would be overwritten when she typed and vice versa. So in the conflict resolution there is no merge algorithm yet, I think?
Is this planned for the feature? Are there ways to implement this currently? Etherpad seems to handle this problem rather well. Having this in Meteor would make creating collaborative document editing apps way more accessible.
So I looked into it some more, the algorithm used in Etherpad is known as Operational Transformation:
The solution is Operational Transformation (OT). If you haven’t heard of it, OT is a class of algorithms that do multi-site realtime concurrency. OT is like realtime git. It works with any amount of lag (from zero to an extended holiday). It lets users make live, concurrent edits with low bandwidth. OT gives you eventual consistency between multiple users without retries, without errors and without any data being overwritten.
Unfortunately, implementing OT sucks. There's a million algorithms with different tradeoffs, mostly trapped in academic papers. The algorithms are really hard and time consuming to implement correctly. We need some good libraries, so any project can just plug in OT if they need it.
Thats’s from the site of sharejs. A node.js based ot server-client that you can hook into your existing client.
OT is also implemented in the Racer model synchronization engine for Node.js, that forms the underpinnings for Derby. At the moment, derby.js doesn’t transparently provide it yet, but they plan too, from the Derby docs:
Currently, Racer defaults to applying all transactions in the order received, i.e. last-writer-wins. (…) Racer [also] supports conflict resolution via a combination of Software Transactional Memory (STM), Operational Transformation (OT), and Diff-match-patch techniques.
These features are not fully implemented yet, but the Racer demos show preliminary examples of STM and OT.
Coincidentally, both the sharejs and derbyjs teams have an ex Google-waver on board. Meteor has an ex etherpad/Google Waver in their core team. Since Etherpad is one of the best known implementations of OT I was imagining Meteor would surely want to support it at some point as well…
I've created a Meteor smart package that integrates ShareJS:
https://github.com/mizzao/meteor-sharejs
It's quite preliminary right now, but you can import it into your app, drop in textareas, and it "just works". Please try it out and submit some new features via pull requests :)
Check out a demo here:
http://documents.meteor.com
What you describe seems out of Meteors scope for me. Its not a tool to set up collaboration possibilities!
What it provides is a way to transparently work against a subset of a servers database. But the implementation of use-case specific merging functionality is the job of the application, not the framework.