In the recent Office 365 Developer YamJam on the Office 365 Technical Network, there were lots of great questions asked to and answered by the Office 365 Engineering Team. You can view all the questions over here: https://www.yammer.com/itpronetwork/#/threads/inGroup?type=in_group&feedId=4419638
One thing which I was interested in was the Integrated Workflow Apps. I have seen a lot of people ask about this as they want to deploy Workflows to their Host Web (or Content Site) from their Apps. I had known that something was in the pipeline as I had seen a glimpse of it in this video from SPC 2014 http://channel9.msdn.com/Events/SharePoint-Conference/2014/SPC3994
Luckily, Tim McConnell who is the speaker in the video was part of the YamJam and he answered that Integrated Workflow Apps are already available on SharePoint Online but they are waiting for tooling support so no official announcement has been made till now.
I have tested them on my development Office 365 Tenant and it works! In this post, I will be detailing the process by which you can get it working too.
Please bear in mind that this is a temporary workaround which involves modifying some Manifest XML files. Official tools will be released in the future which will automate this. Till then, use this method for experimental purpose only. Do not use this method to deploy Workflows in Production!
You will need to have installed Visual Studio 2013 and Microsoft Office Developer Tools for Visual Studio 2013 for this. My test project is available on GitHub here: https://github.com/vman/Integrated-Workflow-Apps
1) Start Visual Studio 2013 > New Project > App for SharePoint
2) Enter the SharePoint Online Site Url and select the hosting model for your app. I have selected SharePoint Hosted.
3) Right Click App Project > Add > New Item
4) Select Workflow and type in a name for your Workflow
(Click on the Image to Zoom)
5) Select the type of Workflow as Site Workflow
(List Workflow Deployment is shown at the end of the post)
6) Select "Create New" for History List and Task List.
7) Add some sample activities to your Workflow.
I have added a LookupWorkflowContextProperty to get the current Site Url and a WriteToHistory activity which will write the Current Site Url to the History List
(Click on the Image to Zoom)
(Click on the Image to Zoom)
8) Give your App Manage Permissions on the Web:
9) Right click App Project > Publish > Package the app. A window will pop up showing you the packaged .app file.
(Click on the Image to Zoom)
10) Now the interesting part. Open the .app file as an archive with a tool of your choice.
I have used 7-Zip which is a really awesome tool. You can download it from here: http://www.7-zip.org/
(Click on the Image to Zoom)
11) Once opened, look for the WorkflowManifest.xml file and open it. It will be empty to start with. Copy the following in the file and save it.
(Click on the Image to Zoom)
12) After Clicking save, you will get the following prompt. Click Ok.
13) Now your .app package is ready to be deployed to your App Catalog. Go to your App Catalog and upload the .app file in the "Apps for SharePoint" document library.
14) Once uploaded, go to your Team Site > Site Contents > Add an App > Select your app and add it to your Team Site.
15) You will be prompted to trust your App. Click on "Trust It".
16) Once the App is installed on your site, go to Site Contents > Site Workflows
17) Click on your App to see your Site Workflow deployed on the site. Click on the Workflow to start it.
(Click on the Image to Zoom)
18) Let the workflow complete. After it has completed, click on the Internal Status to see what the workflow logged to the History List
(Click on the Image to Zoom)
19) You can see that the Workflow logged the url of the Team Site on which it was running.
(Click on the Image to Zoom)
This proves that the Workflow was deployed to and ran on the Host Web (Content Site).