Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Dec 10 21:56
    rsoika labeled #560
  • Dec 10 21:55
    rsoika unlabeled #606
  • Dec 10 21:55
    rsoika labeled #606
  • Dec 10 21:55
    rsoika commented #606
  • Dec 10 21:52
    rsoika milestoned #606
  • Dec 10 21:52
    rsoika labeled #606
  • Dec 10 21:51
    rsoika milestoned #560
  • Dec 10 21:51
    rsoika demilestoned #560
  • Dec 10 21:50

    rsoika on master

    refactoring NOANALZE is now mo… (compare)

  • Dec 10 21:28
    rsoika reopened #560
  • Dec 10 21:28
    rsoika commented #606
  • Dec 08 22:22
    rsoika commented #606
  • Dec 08 18:45
    chrisw14 commented #606
  • Dec 08 18:44
    chrisw14 commented #606
  • Dec 07 18:41
    rsoika commented #606
  • Dec 07 13:03
    chrisw14 commented #606
  • Dec 06 21:37
    rsoika commented #606
  • Dec 06 21:35
    rsoika commented #606
  • Dec 05 16:39
    chrisw14 commented #606
  • Dec 05 16:39
    chrisw14 commented #606
Pooja Gupta
@Pooja-gupta1995
@rsoika i am unable to understand the relation between bpmn and workflow controller?
till now my understanding is that, bpmn decides the flow according to the access rights and make you see the web pages according to your rights.
and in every web page there is some defined workflow controller for every component we use in our web pages to save our data using global.
so bpmn connected to User Interface and User Interface is connected to controller.
so how bpmn and controller are related?
Pooja Gupta
@Pooja-gupta1995
@rsoika where to find workitem property txtWorkflowEditorID?
lodhipr
@lodhipr
@rsoika : Sir i am in trouble, I want to retrive data from my table i have generated an issue in github with link. as :
Ralph Soika
@rsoika
@lodhipr see my reply on github
Pooja Gupta
@Pooja-gupta1995
@rsoika i have created bpmn with multiple lanes ,its loaded successfully with curl command ,i am using tomcat server and in the configuration file i have defined my user with their access but its not taking login from my user, is there any other place where i have to make changes?
can u tell the step by step process where and how to create multiple users in imixs sample application?
Ralph Soika
@rsoika
@Pooja-gupta1995 see the discussion on imixs/imixs-jsf-example#34
ekoranda
@ekoranda
Hello Ralph,
It looks like this forum hasn't been used since February, is it still a good place to ask questions about using imixs-workflow?
Ralph Soika
@rsoika
yes of course you can ask your questions here or open an issue on github.
ekoranda
@ekoranda

I am using Imixs-Workflow to build an application for managing proposals
for access to computing clusters. We will be using Tomcat TomEE 8.0 to
deploy the application. I have worked through the sample application and
have it running on my sandbox.

We would like to use custom or individual access roles with the
application. I have studied the page at

https://www.imixs.org/doc/deployment/security.html

and the details in the section "How to Define Individual Access Role"
but I do not understand precisely what I need to do. I have experience
with Java but I am not a Java EE expert.

To define a custom role do I need to define the role in the ejb-jar.xml
deployment descriptor? If so, do I need to define my own Java class and
what base class should I use?

I would be grateful for any pointers or other information you can
provide.

Ralph Soika
@rsoika
HI,
In principle, extra rolls are usually not necessary when you work with Imixs-Workflow engine. But it is necessary that you have at least defined the roles 'org.imixs.ACCESSLEVEL.AUTHORACCESS' and 'org.imixs.ACCESSLEVEL.MANAGERACCESS'. Did you succeed to install the JSF-Sample application? This gives you good hint how to deal with access. Let me know if the example is running on your environment.
Here you can also find a short description how to setup the Imixs-Workflow core access roles.
ekoranda
@ekoranda
image.png

Hello Ralph I am using Imixs to make a workflow in which a user creates a proposal which is reviewed by three reviewers. The proposal needs to be approved by at least 2 of the reviewers for the workflow to continue. I'm trying to diagram this workflow by using gateways. Above this post I attached a screenshot of my diagram.

I am using the result plugin on an event to set an item to the workitem using the code:

<item name="reviewer1" type="integer">0</item>

At this page: https://www.imixs.org/doc/engine/plugins/resultplugin.html I've read that you will be able to update properties of the current workitem using the result plugin.

Later I'm trying to use the rule plugin to write a conditional expression in an exclusive gateway however I am unsure how to access the item which I set to the workitem previously using the result plugin. Could you clarify how I'd be able to access the item made using the result plugin later in the workflow?

Ralph Soika
@rsoika
Gut question! I put your question and my answer into a new question-issue on Github. Please follow here: imixs/imixs-workflow#543
skoranda
@skoranda
Hello. Is it possible to log the details of the workitem so that one can see how it is evolving through the model?
Ralph Soika
@rsoika
Yes of course you can use the HistoryPlugin for this requirement
skoranda
@skoranda
Thanks. I will take a look at that. Cheers.
ekoranda
@ekoranda

Hello Ralph,

I am working on switching my version of Imixs from 4.5.0 to 5.0.2. However I am getting the error:

java.lang.NoClassDefFoundError: org/eclipse/microprofile/health/HealthCheck.

I am currently using apache-tommee-plus-8.0.0-M2. I have reviewed the pom.xml for the sample application for the version 5.0.0 and did not see any differences compared to my current pom.xml. Are there any changes necessary to pom.xml when building the new version?

Ralph Soika
@rsoika
Version 5.0 is based on Eclipse Microprofile. So you need an application server supporting microprofile. I know that Glassfish, Wildfly, OpenLibertry and Payara supporting Microprofile. But I am not sure for TomEE 8. Can you verify this?
Ralph Soika
@rsoika
It looks like that TomEE 8 supports microprofile 1.3. I will check this.
Ralph Soika
@rsoika
I tried to setup a docker container with TomEE 8M2 plume. But I had no success . In M2 the HelthCheck is missing. I am not so familiar with TomEE and do not now how to solve it. Maybe my deplyoment problem with M3 come from JDK 11......
ekoranda
@ekoranda

Hello Ralph thanks for checking. We have moved to wildfly 17. We were able to run the sample application version 5.0.0. Originally we were using the version 4.2.1 of the workflow engine and now we want to update to 5.0.2. However, when we tried updating to 5.0.2 the view in our sub_tasklist.xhtml was not showing up with all of the data. We're getting our data using this:

class="imixsdatatable" style="width:100%"
value="#{viewHandler.getData(proposalController)}" var="workitem">.

And using this to output the data:

<h:column>

<f:facet name="header">

<h:outputText value="Requester Name" />
</f:facet>

<h:link outcome="/pages/workflow/workitem">

<h:column>

<f:facet name="header">

<h:outputText value="Requester Email" />
</f:facet>

<h:outputText value="#{workitem.item['email']}" />
</h:column>

However no data is showing up using that code. Is there any changes from 4.2.1 to 5.0.2 that we need to change in order for this data to show up?

Ralph Soika
@rsoika
Yes maybe you need to rebuild the Lucene Index. Have you installed the Admin Client? There you have the option to rebuild the index (admin-p) and also to upgrade your existing data. But to sort this issue out - can you see the data of new created workitems in your application?
Also in Version 5.0 we introduced a new JSF controller technique which is much faster. Have you seen this?
ekoranda
@ekoranda
Thanks for your help. We have the sample application 5.0.0 and my application running in the same wildfly. We've also learned how to run the admin tool which is deployed in a different container but we are able to update and see workitems. We wanted to make sure we didn't have any corrupted data so we deleted all of our test data and created completely new databases however we are having the same problem. In the admin tool we can see that the data is there we just aren’t able to access it in the webpage with the code I mentioned above using a controller.
Ralph Soika
@rsoika
But did the sample application work? Can you create and view data there?
Ralph Soika
@rsoika
The question is which query did define your proposalController? Take a look at the jsf-example class 'TasklistController'
ekoranda
@ekoranda
Hello Ralph. I am able to create and view data in the sample application. My proposalController is identical to TasklistController I just changed the name of it. I am able to view the workflow data that starts with '$', however none of the workflow data that I manually added to the workflow by using the code: value="#{workflowController.workitem.item['email']}".
Ralph Soika
@rsoika
but this sounds that even in the admin client you can not see the item 'email' - right?
ekoranda
@ekoranda
In the admin client I can see the item 'email'. And I can also see the data in new created workitems.
Ralph Soika
@rsoika
ok - now I understand :-) just add the following line in your proposalController
this.setLoadStubs(false);
otherwise the view controller loads only data stored in the lucene index itself - which is a new feature to improve performance. In your case you can load the data directly from the database - means do not load the stubs.
I will change this in the example code as well
ekoranda
@ekoranda
Thank you Ralph, adding in the line fixed all the issues I was having.
Ralph Soika
@rsoika
Great! :-)
ekoranda
@ekoranda

Hello Ralph. I am working on implementing the mail plugin however was running into some errors. I added logging commands and learned that the method getRecipients in mailPlugin.java is including the logging username as a recipient which causes an error because the username is not a valid email. Do you know how I could fix this so that the username is not included in the recipients?

This is the error that I am getting:

WARNING [org.imixs.workflow.engine.plugins.MailPlugin] (default task-4) close failed with exception: javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 553 5.1.2 The recipient address <emily> is not a valid RFC-5321 address. cx22sm389452pjb.25 - gsmtp

Where 'emily' is my username.

Ralph Soika
@rsoika

You need a custom implementation of the MailPlugin. Just extend the mailPlugin and overwrite the method getInternetAddress()

public InternetAddress getInternetAddress(String aAddr) throws AddressException {
        // is smtp address skip profile lookup?
        if (aAddr.indexOf('@') > -1)
            return super.getInternetAddress(aAddr);
        else
          return null;
}

You my also add some custom code to lookup the e-mail address from a user profile or ldap directory....

ekoranda
@ekoranda
Hello Ralph Im wanting to make some of the pages on my webapp to only be available to some of the actors that I defined in my model. I want to make a tab to only be visible able to my actor 'manager'. Is there a way to tell what actor the current user is part of? Or to be able to tell if the current user is an owner of the current workitem? Is there a way to be able to do this?
Ralph Soika
@rsoika
The LoginController provides methods to ask for Roles. And a workitem provides the item $isAuthor to indicate if the current user has write access to the current workitem
you can also test the item $owner to see if the current user is owner of a workitem and than hide elements on your form
Ralph Soika
@rsoika
ekoranda
@ekoranda

Thanks Ralph I got the .getUserNameList() method to work however I'm wondering how I can create my own unique roles. Currently I am using curly brackets to add a static list of user ids. However I would like my roles to show up when I use the getUserNameList() method. I am using wildfly to try to add the role 'reviewer'. In the process properties of the model I have defined the actor reviewer|namReviewer. In my sampleapp-roles.properties I have given the user 'Emily' the following roles:

emily=IMIXS-WORKFLOW-Author,IMIXS-WORKFLOW-Reader,reviewer

In my imixsrealm.properties I have defined reviewer as:

reviewer=org.imixs.ACCESSLEVEL.reviewer.

However when I use the .getUserNameList() method reviewer is not showing up as one of the roles. What should I be doing so that I'm able to add the new role?

Ralph Soika
@rsoika

This is an intressting point. And we have different mechansims to archive this.

One way is to define an external String Resource with the name 'ACCESS_ROLES'. You can provide a list of application specific Roles. The method getUserNameList will test these role names by ctx.isCallerInRole(testRole). I think, this is what you are searching for.
See here. But you need to define the resource 'ACCESS_ROLES' by the ejb-jar.xml descriptor which is not very elegant.

A smarter way is the CDI UserGroupEvent. See here.
You can observe this event and simply return a List of your application specific user roles.

To check if the user isInRole you can do this:

public void onUserGroupEvent(@Observes UserGroupEvent userGroupEvent) {
    List<String> customGroups = new ArrayList<String>();
    if (ctx.isCallerInRole("reviewer")) {
        customGroups.add("reviewer");
    }
    userGroupEvent.setGroups(customGroups);
}
Ralph Soika
@rsoika
To take the discussion a little further: A role 'reviewer' should actually not be necessary in an Imixs workflow model. A task 'review' should be set with an appropriate ACL. That is, the assigned groups should be organization specific rather than technical. For example, if the Finance department is responsible for the review, than the task should be assigned to the group 'finance'. This makes it much easier to model your process on a organization level. We ask our own customers: which departments are involved in the process and which task are they responsible for? In this way there is no need to 'pollute' your workflow application with technical roles.
ekoranda
@ekoranda
Hello ralph I think I was misusing the word 'role'. I want to create a group with actors in which I'm able to see using the getUserNameList() method so that I can make it so that only groups can see different webpages in my webapp regardless of what stage the workitem is in. However I think I am overall unclear on how to make a group without defining it as a static list in the model. On this page: https://www.imixs.org/doc/modelling/main_editor.html, it mentions that the workflow engine maps the user to the group during runtime however I am unclear how you would do this using wildfly?
Ralph Soika
@rsoika
I added a new page providing more details about the role mapping: https://www.imixs.org/doc/quickstart/roles_responsibilities.html
However, if you really need a technical role - independent from the workflow status - than just add the role as you declared the Imixs-Access-Roles and use the method ctx.isCallerInRole(testRole) from Java EE to test if your user is assigend to. You can use the LoginController for this.
Lenny
@lennycode
I'm having issues with the docker microservice. I've tried it in Windows and in a fresh Ubuntu. I can access the homepage, but calls to the API either 404 or return blank.