How to use OpenNTF's "Workflow for XPages"? - workflow

Any tips on getting started using the "Workflow for XPages" on OpentNTF? The documentation is pretty high-level, and mostly about the sample app. Page 24 is the only one with info about using the simple workflow engine. I'm digging into the EmployeeReview.nsf example database, but could use some pointers?

One of my developers evaluated the workflow stuff over the last couple of days. Unfortunately, I cannot share the documentation that came out as a result of her efforts.
So the only way for you by now is to analyse the parts of the sample application.
Find the Simple Workflow Control und Workflow Action controls in the sample application and take a look at the source code.
You will see that the Simple Workflow Control deals with persons and roles. Roles in the context of workflow are not ACL Roles. They are roles that ere defined in the configuration ( like [Manager] )
So you need to have some kind of configuration in your application that contains a person name an the role this person has in your workflow. If this person is a manager for example, you have also to describe, which other persons he/she is managing.
Then, in your workflow steps you describe, in which wf state a specific person is involved, what is the next step and if any mail is send around.
Once ayou have done a bit of analysis, you will be able to create your own sample application.
I also hope that there will be more documentation around. I will provide more detailed information about how to use the wf controls, but I'm going on holiday in the next days. So I do not have much time left, to put a manual together.
But looking at the source code should help to understand how all the stuff works.

Related

Craft CMS: sending email after entry is published

I want to create a site with a channel. On this channel, I want to post activities. Inside the entry, there will be a category selectable with an email address within. Once I publish the entry, craft should send an email to the email of the selected category with the details of the entry (like an info mail "hey, there is a new activity. have a look).
I googled and searched for hours, but I couldn't find a suitable solution. I stepped over craft modules, but I am new to programming and the explanations are pretty overwhelming. Is there anyone who can help me and would walk me step by step through creating such a solution?
Modules are indeed the way to go. They allow you to write custom code to extend Craft CMS functionality.
What you want can be achieved with the help of events: Craft CMS dispatches a lot of events at various points in the lifecycle of every request. You can listen to these events to react accordingly.
In your case, you should have a look to the EVENT_AFTER_SAVE of the craft\elements\Entry class. To help you get started, Craft provides an event listener code generator.
You then need to write a module that includes the generated code. This article from the Craft knowledge base should help you. This article from NYStudio107 is also a nice introduction.
There's a discord community for Craft CMS where you can ask for help as well as a dedicated stackexchange site.
If you need more help here, we'll need to see some code.

CMS martial arts membership management or own?

While I found quite some interesting suggestions on this site (the typical WP vs. Joomla) I just couldn't find an answer that could help me get started.
I know this is close to some of the other CMS questions but I'm missing specificities that need answering.
I'm looking for a CMS that can provide me with the following key functionalities, either through minimal programming or additional plugin installations. I'm stating this because it won't be just me, who can program, but also other trainers who are not technically inclined that will handle the site (in the future).
The functionalities I'm looking for:
Schedule management of training
Trainees of the club must check-in before or after the training to proof attendance, thus site must be mobile friendly. This is more proof-of-concept since not everyone has/wants a smartphone.
Each trainee has his own profile that logs said attendance
Possibility to provide feedback on training. For example: give a thumbs up on the last training, give a "yellow card" if the trainee misbehaved, two/three/four and you're prohibited from training ones/twice/thrice.
The attendance allows the trainee to become eligible for the next exam
Schedule management of said exam
Yearly subscription reminders for the trainees and if under-aged required parent information
Management of trainee profiles and subscriptions
Is the above possible through a CMS or is it too specific and will I need to program this myself? Either is fine by me but I'd first like to find out if a CMS can offer this.
I've decided to Go for a custom solution using ReactJS.
There are very good open-source solutions for the admin part and the open/client part is fairly simple so React is perfect for what I want to achieve. Additionally, it also challenges to think differently since I never worked with ReactJS before.
With ReactJS I have a lot of freedom in how I implement the above scenarios while at the same time have a lot of support available online in cause of issues.

How to partial sharing product code in company?

I'm developing a app which would be my startup product. Surely, it has serverside and clientside code. Creating separate repository for each one is common task. When I work with someone, I'll give them authority to access their own repository.
But, when my project grows big, the needs for sharing partial codes would be arised. For example, when I hire someone as part-time job to maintenance some UI part of my product, opening all access to clientside code would be danger. Because he would be copy or get my product's essential idea in the business logic code.
It also occurs at serverside code. In the server, many control layers are mixed. When I hire someone, not a permanent worker of my company but as a part-time worker, I want to only give him a part of source code. Giving all access to product code is crazy because serverside code has lots of private keys and administrator datas.
I think that these problems are common to IT company like facebook or google. But I can't find any methodology or idea how to handle these problem. Can anyone teach me? Thanks.

Custom WorkFlows vs Plug-ins in MS CRM

I used a lot of Plug-in code to implement business logic in CRM but now I've came up with this feature called Custom Workflow Activity.
now i wonder When to use these custom workflows over Plug-ins ?
Code Activities are custom steps which can be inserted into one or many different workflows. Kind of "plugins" but used to be inserted in workflows.
Workflows give you more feedback because they are represented visually in CRM, so non technical people can see the status of a workflow, and the steps which were executed since the start. Workflows are also executed in the Asynchronous service so they run asynchronously, plugins run synchronously, inside the application pool.
So workflows are also better for long running processes.
With that being said, plugins are still helpful when:
You need to have an immediate response, because they are triggered and executed inside CRM's application pool and,
You need to run anything inside the transaction, so they can abort it by raising an exception.
Example: you have an integration with a 3rd party service, where a record can't be created in CRM unless something is validated on the other side. Another example is concurrency: the auto-number plugin is a plugin because it needs to lock the database in the transaction, otherwise multiple concurrent threads could create duplicate IDs.
So, the answer, like always is: It depends. :)
I went deep into the subject myself and found interesting things i want to share,
So here is the complete list of compare :
Plug-in's only fire on data change like updating or creating records but custom workflows take part inside a process ( workflow, dialog, ... )
As a result , workflows not only can be triggered on data change, but on demand at anytime at any point inside their process. As you might have already understood, It is the real flexibility needed for implementing complicated business logic.
Plug-ins won't accept arguments or passed-data,
But custom workflows make it possible by using InArgument properties like below :
[Input("Case")] //label of the field shown in workflow
[ReferenceTarget("incident")] //if using EntityReference, must point the type
public InArgument<EntityReference> yourArg { get; set; } //almost every data type is supported
Workflows can be simply used and manipulated by business users.
Custom Workflows are absolutely reusable. with one register you have a piece of business logic that can be used in several situations.
in some cases you might even happen to write a code which can be used upon many different entities.
So far you know that custom workflow is more reliable than plug-in , but the point that makes a plugin's take over custom workflow is when you are validating data changes and eventually need to revert those changes . of course this is possible in Custom Workflows but it's much more easier to add a plugin than workflow.
and bare in mind that plugins run faster! (as i tested it myself)
However profiling workflows in CRM is still bugged out !
Many of the developers or MS CRM beginners get confused in some scenarios whether to go with Workflows or to go with Plugins, as both can be used and has ability to perform specific task at server side.
Plugins and workflows have some significant differences like limitations in event messages, Triggering points.
You can refer the below link for complete understanding of differences-
https://mscrm16tech.com/.../workflows-vs-plugins-in-ms-crm/

Making User Interface smart in eclipse based applications

I am currently developing a desktop application based on eclipse.
Currently the user needs to perform many redundant actions like doing step A in View 1 then doing step B in View 2 then repeat. I am wondering if anybody knows a solution that records/recommends user actions in eclipse based applications.
Maybe based on the history much like the web based solutions.
Any help would be good.
Thanks.
1)
Do you want to record the user clicks (actions)?
If so eclipse provides a Location tracker, so you can analyse the use cases from the field.
OperationHistoryActionHandler
2)
Do you want to have a smarter way the user uses your tool?
Think about using Wizards. in a Wizard you can have a defined number of execution steps. The user does not need to search some button in a view.
With a Wizard a specific execution flow is very clean and good to understand.
3)
As Jonah mentioned you can use cheatsheets as well.
We once did something similar, where we had a rather big user interface that had heaps and heaps and heaps of different functionalities. Our solution was this:
We abstracted all actions into commands. They were all implemented in a way that they can be cascaded, undone, redone etc. See for example IUndoableOperation
The commands had conditions that made it easy to decide if one could combine these commands.
All commands have an ID and can be easily identified
We then continued to integrate our own run configurations. We added a UI that gave the user the option to cascade multiple commands into one big one. For example, A user wanted to create a new file, apply a template, generate some graphs, export them into a given location etc, the user would create a run configuration adding those commands together.
That way we kept the UI comprehensive but gave the expert user the ability to create their own workflow based on what they do every day.
Our users liked that quite a bit.