Question

Photo of Eddie Holeman

0

Event Project Request and Tracking System

I am considering what a mimimum viable implementation of Rock might look like here at Fellowship Greenville.  Yes, I was at the conference last week and this was my takeaway.  :-) I believe that this might involve a development of Workflows.  I have a workflows project partially completed in our curent ChMS which I am considering the idea of building in the Rock and would love honest input as to challenges and possible gotchas in this project.  Below is a screenshot of a dashboard / data grid which is the central feature of this system I am currently building in our current system.

event_request_grid75.PNG

Here is the workflow.  The requester would come to this page to initiate a new event request by clicking the plus sign top left.  Then would enter details about the event (date, time, description, location, etc) along with multi-selecting from a list services like Video creation, Website promotion, etc.  Each service requested would have its own details for the requester to complete.  Each service would have its own service provider who would need to be notified of the request for her services and would need to change the status of the request to In Process or something similar for the requester to be able to see where this part of his request stands.  The service provider might also need to make notes about the project that the requester would need to read. The service provider would eventually close the request for his/her services with a resolutions of what was accomplished.  

The dashboard above would give the requester, service provider, as well as others in the department a place to come to easily see the status of each part in the project.  Once the event is complete the whole request, along with each service request, would need to be closed.

Does this concept fit well in Rock Workflows?  Would you handle this in a very different way or would you build it much like the concept I have included here?  Thanks for your input.

  • Photo of Derek Mangrum

    0

    Hello.

    I believe this functionality could certainly be handled with a workflow. I envision having a main ‘trunk’ for taking the request, then fire off ‘branches’ of activities, one for each service that was requested. Each branch would be similar to the ‘trouble ticket’ example workflows shipped with Rock (the IT Support Workflow, for example). Each branch would be assigned to the ‘worker’ for that service and give them the ability to update their status, notes, etc.

    I heard rumors about a Workflow action that fires off another workflow, passing values in. This is not currently in Rock, but I think it might be made available at some point in the future (either in Core or as an add-on). If that were available, you could even have each service available be its own workflow. Then, the main workflow would just fire off the appropriate children workflows based on the services requested, passing in the pertinent data. This would create flexibility, in that the individual services could also be made available as a stand-alone product, since their workflow functions wouldn’t be wrapped up in a bigger master-workflow. But, this could just as well be done in a single workflow.

    Again, the question would be UI… how to present the whole process to the user… showing where each service is in the pipeline. But, this may be little more than a nice Lava block, pulling out and formatting various WF attributes. Here is a mock-up of what this might look like. This uses the ‘MyWorkflowsLiquid’ Block. It just lists Workflow instances and formats a few of their Attributes in a grid.

    WFGrid01.jpg

    The Lava to render this out would be something like:

    {% if Actions.size > 0 %}
        <div class='panel panel-block'> 
            <div class='panel-heading'>
                <h4 class='panel-title'>My Requests</h4>
            </div>
            <div class='panel-body'>
                <img src="add-document.png"/>
    
                <table class="table table-bordered">
                    <tr>
                        <th>Title</th>
                        <th>Event Start</th>
                        <th>Video</th>
                        <th>Lvl 1 Event</th>
                    </tr>
                {% for action in Actions %}
                    <tr>
                        <td><a href='~/WorkflowEntry/{{ action.Activity.Workflow.WorkflowTypeId }}/{{ action.Activity.Workflow.Id }}'>{{ action.Activity.Workflow.Name }}</a></td>
                        <td>{{ action.Activity.Workflow | Attribute:'EventStart' }}</td>
                        <td>{{ action.Activity.Workflow | Attribute:'Video' }}</td>
                        <td>{{ action.Activity.Workflow | Attribute:'EventLevel' }}</td>
                    </tr>
                {% endfor %}
                    
                </table>
             </div>
        </div>
    {% endif %}
    
  • Photo of Eddie Holeman

    0

    Derek,

    Thanks a bunch for your time in reviewing and answering my question.  The solutions doesn't sound totally easy, but it does sound doable.  That is what I was looking for.  I appreciate it.

    Eddie