Probesys / bileto

The ergonomic ticketing tool for managing your Help Desk.
https://bileto.fr
GNU Affero General Public License v3.0
43 stars 2 forks source link

workflow feature #539

Open nolotz opened 6 months ago

nolotz commented 6 months ago

Hi all,

I have been using Bileto and find it immensely useful. I'm reaching out to suggest a new feature that I believe could enhance its functionality: a workflow feature for managing ticket statuses.

This feature would allow users to define and manage custom workflows for ticket statuses. The implementation would be based on the Symfony workflow component, with the workflow definitions stored in the Bileto settings.

I would love to hear your thoughts on this feature. Does it align with the current roadmap for Bileto? Are there any specific considerations or requirements you would want for such a feature?

Thank you for considering this proposal. I am looking forward to your feedback and the possibility of contributing to Bileto.

nolotz commented 6 months ago

I have successfully implemented a proof of concept. However, during the implementation, I encountered a few issues that need to be addressed:

  1. Hardcoded Status in LifecycleSubscriber::processAssignedTicket: The current implementation hardcodes the ticket status. This is a critical point as it could lead to conflicts or unintended behavior in the workflow. The code snippet is as follows:
if ($assignee !== null && $status === 'new') {
    $ticket->setStatus('in_progress');
    $this->ticketRepository->save($ticket, true);
}

This hardcoding might not align well with a dynamic workflow system where statuses could be more fluid and based on different criteria.

To address the above issue and to enhance the workflow feature, I believe a business rule engine #279, similar to how Jira implements this, could be beneficial.

marien-probesys commented 5 months ago

Hi @nolotz, glad you find Bileto useful!

I had in mind to manage the workflow of tickets' statuses with the business rule engine (https://github.com/Probesys/bileto/issues/279). The business rules are the next big thing we want to work on, so it's perfectly in line with our roadmap ;) Note that this workflow feature is strategic for us so I'll probably take the lead on it if it takes too long to implement, or if it doesn't go the way we want.

Also, right now we are focused on releasing a stable version that we can use internally and with our customers.

For the context: I've hardcoded our current workflow into the LifecycleSubscriber class, as you noticed. We would indeed need to modify this part. I have no experience with the Symfony workflow component, but a colleague also suggested I use it for this feature. So I could use some help with this!