AppTree's Workflow platform is about empowering developers to repeat complicated tasks without having to write too much task-specific code. Specifically, it's about writing simple, reusable steps that can be composed together to accomplish common, complex tasks. It takes the idea of breaking big tasks into baby steps to the (useful) extreme.
For example, you may want to move data from a SQL database to a shiny new NoSQL database. That's a complicated task, and a task that you'll likely do over and over (say, for each row in a database table). But, if you break it into tiny pieces, it may not be so different from moving data from that same SQL database to a Google Sheet. You're really doing a few smaller tasks:
    Fetching Data
    Serializing Data to JSON
    Mapping Data to a new object
    Writing data to its new home.
In this example, the first three steps are the same regardless of where you're pushing your new data. It'd be nice if you could write those three steps once and then use them whenever you needed to move data from that SQL data base to a new home.
That's what AppTree's Workflow platform does for you. It provides a library of steps, an (optional) SDK to write your own steps, and a simple YAML interface to compose the steps together into a workflow. You can run the workflow on our engine from your machine on a schedule or by triggering it manually.

Who is it for?

The platform was built by us, for use internally. Our integrations team has been able to finish integrations which used to take months in a few days using this platform. That's what this platform is about: creating a sane process to repeating complex tasks without having to write too much code. (Or, ideally, none at all).
We have decided to open the platform up to the world to enable other developers who need to solve really hard enterprise problems as well. We know the pain of dealing with security, integrating with on premise systems, firewalls and massive amounts of data. We know that you want to build innovative user experiences with voice devices, mobile, web and sms but the wall to climb is sometimes just too high.
We've provided the infrastructure, a growing number of public steps, and interface to accomplish these tasks fast.

User Experiences vs Integrations

In general, there are two ways that an AppTree user could use our platform: User Experiences and Integrations.

Scenario 1 - A User Experience

Mollie is a project coordinator and she loves Slack. She uses it to chat with co-workers and clients all day so it's always in the forefront of her desktop.
As Mollie moves throughout her day from project to project, she needs to enter her time along with a note about the progress of a project.
Currently, Mollie has browse to her corporate time entry system, select a client, select a project, enter her time, enter a note and save. On top of that, the system logs her out after 30 minutes. It's annoying.
If only there were a way Mollie could have a Slack command that looked like:
/time 1.2 Weekly project meeting with Acme co
This is what we consider a User Experience and you can build this on our platform.

Scenario 2 - An Integration

You know that time entry system that Mollie uses... Well unfortunately it does not talk to your companies Payroll system. At the end of each week, Mollie's manager needs to go look at all of her employees time entries and re-enter them into the Payroll system so people get paid. This is a painful task and it makes Mollie's manager hate Fridays.
It would be great if every Friday at 8pm a workflow could run that would transfer all of the weeks time entries into the p
We consider this an integration and it can also be build on our platform.

Scenario 3 - A combination of "User experiences" and "Integrations"

Now that Mollie's company has an easy way to enter time using Slack, and an easy way to get that time into the payroll system things are humming along smoothly. So smoothly that the company decides to do something crazy like build some new features.
Whenever an employee enters some time, a message should be sent to the manager in Slack that looks like:
Once the Approve button is clicked, Mollie is notified immediately through Slack that her time has been approved.
Finally, at the end of the week after the payroll workflow runs, Mollie receives this message:
As you construct workflows, it becomes very simple to add in steps that allow these more complex interactions. I could just as easily decide to delivery these messages via SMS and let users reply that way.

The Makeup of a Workflow

Whether you are looking to build a rich user experience or robust, scalable integration, it's all built on top of our powerful workflow engine. A workflow is defined using YAML and is built in a step-wise process.
In the Scenario 1 example, we described a workflow that would receive a slack message and enter time into some time tracking system. Given a slack command of /time 1.2 project_1 Weekly project meeting with Acme co
The workflow could look something like this:
# 1. Parse the slash command using a pre-built step
message: ${trigger.body} //<-- more about triggers later...
text: time_entry_string
user: username
# 2. Split the text `project_1 Weekly project meeting with Acme co`
# into 3 fields. Put the results into a variable called `time_entry`
text: ${time_entry_string}
hours: 0
project_name: 1
comments: 2...
record: time_entry
# 3. Send the time entry to your time system.
- Content-Type: application/json
body: ${time_entry}

Stepping your way to victory

From the example above, you can see that workflows are built on a concept of Steps.
A step is a single unit of work that performs a very specific task. You can use our growing library of steps for things building custom user experiences for things like Slack, SMS, or Google Home. You can tie these steps together to make a workflow that empowers you to be more productive, like a simple way to track meetings. Or, you could combine the steps to boost your morning morale by sending the top 5 cat photos to your slack channel every day. Either way, the beauty of steps is that they're generic and highly reusable.
If theres a step we don't have, or a custom step specific to your business; No problem, you can write a step in your language of choice.
Last modified 2yr ago