MS WF state machine workflows and MS CRM Dynamics 4.0 - workflow

MS CRM Dynamics 4.0 incorporates the MS WF engine. The built in designer allows the creation of sequential workflows whos activities have native access to CRM entities.
Is it possible to:
Create a state machine workflow
outside of CRM (i.e. in visual studio) and import it into CRM?
Have this workflow access the CRM
entities?

It is NOT possible to create a state machine workflow for use in MSCRM.
It is also not supported to create any workflow outside of MSCRM and import it.
As a work around you could write either all the logic you need into a custom workflow activity and import that into MSCRM and have it called from a normal workflow.
The other option is build a seperate application which runs a state machine workflow and interacts with MSCRM via the web services. You could (would need to?) combine this with a custom workflow activity to kick off processes.

It is possible to create no code workflow...
http://blogs.msdn.com/jonasd/archive/2008/01/21/Creating-a-no_2D00_code-workflow-for-CRM-4.0-with-Visual-Studio-2005-_2800_2008_2900_.aspx
and take a look at the other thread...
Is is possible/a good idea to edit workflows in Visual Studio?

I don't know the answer to your specific question, but hopefully this information will point you in the right direction.
The "native" format for WF workflows is ".xoml" files. These are basically identical to XAML files, and both are nothing more than generic persistence formats for a .NET object tree. If you can access the saved data that is output by the Dynamics designer, it should be in the same format. If it is, you should be able to open it from the Visual Studio designer.
The key here is that CRM undoubtedly defines its own set of custom activities that you'll need to be able to reference from within the alternate designer. With any luck, these will be in assemblies with obvious names and/or in the GAC.

Related

How does processmaker engine work?

After I finish the design of the process in the bpmn notation..processmaker transform the bpmn to xpdl to execute this process? or use bpel?
I've used ProcessMaker for 3 years, and it seems to me it doesn't use BPEL.
Check this: http://wiki.processmaker.com/index.php/ProcessMaker_Architecture_Diagrams
It doesn't mention anything about it BPEL or XPDL.
To execute the process, ProcessMaker generates code files and XML files, which contain the business logic you designed before using DynaForms.
So, it's not just designing the process using BPMN notation, you have to build data entry forms, derivation rules, create user groups, give them permission and even some custom programming.
This is not "magic".
The current version of ProcessMaker 2.5.0 is not BPMN or BPEL compliant. But the Roadmap of the product includes the BPMN compliant implementation (http://wiki.processmaker.com/index.php/ProcessMaker_RoadMap).
Currently the engine uses tasks, events, steps, dynaforms, input and output documents and triggers to execute processes.
Current version of processmaker has not a BPEL or BPMN engine. But processmaker can execute processes because have an engine. To execute a case you need to go to the inbox tab and start a new case, of course you need to configure user access at the designing time.
I don't know anything about XPDEL or BPEL but based on my experience, processmaker will store everything on their workspace database, that's why they use PMT_ prefixes if you create report table, for separate user created table and processmaker system tables. If you create case, processmaker will create CASE in table APP_DELEGATION with process, task, application (cases), user and anything related to your CASE.
So basically they will serve form based on APP_DELEGATION data, this table also stored every steps of CASES. If your submit your form, they will make a new row in APP_DELEGATION with sampe process and application but new TASK (TAS_UID) related to designer path(arrow on your screen).
Basically they just store information, serve it based on information, and route it based on your design. Even your uploaded file will be noted on processmaker databases system (they will create UID and other important information, even the uploader user information). And not compiling or translate it to another language. Simple but not so simple as that.
ProcessMaker's latest version (released in January 2020) - ProcessMaker 4.x- is fully BPMN 2.0 compliant. You can important and export BPMN 2.0 files from other BPMN 2.0 compliant designers into ProcessMaker.
BPEL is really no longer used by anyone in the industry. It lost support a long time ago.
In summary, ProcessMaker 4 requirements for a server can be seen at this link.
ProcessMaker still uses the stack for installation: apache or nginx, mysql database and php language. Aditionally, Lavaravel framework is used in ProcessMaker. ProcessMaker as a bmnp software needs complies with the BPMN 2.0 standards.

Pass a parameter to a CRM 2011 Workflow via the API

I have a workflow that has a 'Prompt and Response' dialogue. I can run the workflow from the API using ExecuteWorkflowRequest but how do I provide values for the prompt and response inputs?
Workflows don't take parameters.
Dialogs take parameters, which are generally passed from other dialogs or queries.
The only thing I managed to do is to pass a related entity from parent workflow as the primary entity to a child workflow.
I'm going to retract my earlier answer and upvote #Grigory instead.
See this page from the SDK
Note Due to the interactive nature of the dialog process, you cannot run a dialog using the Microsoft Dynamics CRM SDK. A dialog can
only be run through the Microsoft Dynamics CRM Web application and are
not supported in Microsoft Dynamics CRM for Microsoft Office Outlook
with Offline Access.
I don't know the answer, but I'd be fairly confident that this is:
Possible
Unsupported (as it is not documented in the SDK)
If I really needed to find out then I'd write a plugin to explore what happens when a workflow is fired internally (this makes an assumption that such a message is fired via the plugin pipeline - not necessarily a correct assumption).
I'd register this plugin on all stages of the Execute message (I assume) and then use debug logging or an interactive debug session (attached to the Async service) to examine the InputParameters (and maybe OutputParameters and ExtensionData) of the ExecuteWorkflowRequest that is (hopefully) generated when CRM runs a workflow that does have parameters. I expect that one of those PropertyBags will contain some sort of parameter.

Deployment with SharePoint 2010

What's the best practice of deploying structure/content in SharePoint 2010 from Test environment to Production? Provided that I don't want to overwrite existing content (specially list content) on production environment.
Thanks
My approach would be to deploy via Event Receivers and write code to evolve existing list structures and extend static content.
There is no easy tricks though. List definitions are only helpful during initial roll out and list instance project items will overwrite by default, so be extremely careful.

How can I track custom Windows Workflow Foundation activity properties?

I want to track my custom activities' property values in my own tracking service, .i.e. I don't need it in the built in SQL tracking service. I have been successful in reproducing the SQL tracking service in that I can see the worklfow and activity states etc. but I want to see property values also.
We are writing many workflows for a document management system (DMS) using its own workflow engine that is based on MS WF. I can therefore not change the workflow runtime (if it was needed). The solution has to work with the embedded functionality of the underlying Microsoft workflow runtime.
Our workflows typically do database lookups through custom activities we write. These lookup values are then passed on to other activities for program flow or for persistence into the DMS. It would be great if we can see what these lookup values are at runtime and in fact the values of the DMS own activities' properties.
From my (admittedly limited) knowledge of MS's Workflow, the correct approach is to publish updates to your tracking service from within the workflow -- ie, if your workflow does some step, it should go to the tracking service and say "I did X". Your tracking service can record this information to answer any subsequent queries about what the workflow did (and what the various property values were at the time).
The essential point is that the WF engine is useful for running workflows - but is not very good at reporting on the progress of those workflows.
If you do have some control over the WF engine (you say its "based on MS WF") then one option may be to make your WF Engine publish such updates for all workflows. That may allow you to forgo explicit updates within your actual workflow definitions. However, if you really can't make any changes to the engine, then this won't work.

How to send something from Dynamics CRM

I would like to develop a way for sending text messages (SMS) from Microsoft Dynamics CRM 4.0.
For example: clicking a button will open a window where I can enter my message. Clicking send will send a request to the SOAP XML Web Service I'm working with containing the contact's cell number and my text. I also want to be able to install it on some of my customers' CRM servers.
What would be the best way to do this? Should I develop a plug-in or use JScript and integrate it to the workflow?
Thanks!
I'll assume you want to store the message in CRM. You can create a text message custom entity or modify one of the activity entities to store that data.
From there it depends on what you are most comfortable with. You can call web services from either javascript or a custom workflow. A custom workflow tends to allow for better testability and debugging, but is more work to set up and install (not hard, just more work). However, using javascript to communicate with web services can be tedious without some kind of framework (JQuery, Prototype).
My opinion: use a custom workflow.
One of the best ways to do this would be to use Microsoft Biztalk Server