Now I am wondering if I can rewrite our B2B product interface to just be email. The more I think about this the more it starts to make a ridiculous amount of sense...
User=>Server (Email 1):
Subject: Get Workflow List
Server=>User (Email 2):
Subject: Workflow List [hash code]
Body: <all workflows by name and id>
User=>Server (Email 3):
Subject: Start Workflow #21
Server=>User (Email 4):
Subject: Workflow #12345532
Body: <First page of onboarding questions the user needs to fill out>
User=>Server (Email 4 - reply):
Subject: Re: Workflow #12345532
Body: <First page of questions with responses>
Server=>User (Email 4 - reply):
Subject: Workflow #12345532
Body: <Second page of questions, or error regarding first page responses>
...
Server=>User (Email 4 - reply):
Subject: Workflow #12345532 [COMPLETED]
Body: <Completion summary with whatever final artifacts attached>
I know our users would totally reject this proposal if it were made to be the only way to interact with our product, but if it were an additional way to interact, they might grow accustomed over time.Think about the technical advantages of the above. If you keep it plaintext, anyone with a computer made within the last 3 decades could access your business system unconditionally. Developer productivity is likely excellent. I can't imagine you would be able to get very distracted with plain text emails.
We use online forms for data capture, but funnily enough things sometimes pan out like you say.
It seems that if you send someone an email saying "You forgot to upload your drivers licence, please click _HERE_ to upload it", a good 50% of the time they will simply reply to your email, attaching the document. And why not really. We used to try again to direct them to the online system, but eventually started handling these things outside the usual flow.
tldr; your idea is sound!
It's the script pulling data over the network, parsing it, developers updating it, etc, where the instability comes in. And don't forget the edge cases where somebody uses weird encoding, a large email with attachments, a client that formats it in weird ways, etc.
I probably took your comment way too seriously.
This is people clicking on mailto: hyperlinks in servicenow notification emails to do stuff like approve/reject a service request or reopen an incident ticket.
You can go beyond this functionality and build any workflow to be triggered after consuming an inbound email sent to client@servicenow.com
I am sure there are a number of email based integrations built using this especially when the upstream application didn't speak API but could do email.
During the rise of J2EE, long before Jespin, we were directed to use JMS. Because architecture. All of the products we tried for our trivial use case would ABEND or break FIFO.
We submitted bug reports, repo steps, and patches to ActiveMQ. Closed, WONTFIX.
So I gave up. Nobody has time for all that.
Motivated by postfix, I just wrote inbound messages to disk. File name included timestamp and counter. fsync() for the win. (What more could we do?)
Processing a queue meant moving a file to a different directory. Logging, archiving, and grooming were just cron jobs and shell scripts. Tada!
Like your predecessor's solution, this allowed trivial testing, observation, and admin.
I wouldn't do this again today for anything high volume. But for less than 100s of messages per minute? Probably.