
Hey Gwener's, What's Up!
Pada artikel ini saya akan menjelaskan bagaimana untuk mempublish workflow yang dibuat dengan Workflow Foundation. Perlu diketahui untuk mempublish workflow sobat memerlukan format metadata dengan extensi (*.xaml). Baik selengkapnya akan saya ulas sebagai berikut
Pada artikel ini saya akan menjelaskan bagaimana untuk mempublish workflow yang dibuat dengan Workflow Foundation. Perlu diketahui untuk mempublish workflow sobat memerlukan format metadata dengan extensi (*.xaml). Baik selengkapnya akan saya ulas sebagai berikut
Ada 2 hal yang perlu sobat lakukan yakni mempublish activies yang diperlukan pada workflow yang dibuat. Kemudian mempublish workflow tersebut.
Create Worflow Management Client
Tahap pertama adalah membuat WorkflowManagementClient, ini membutuhkan Url dan cridential untuk mengakses Workflow Manager. selengkapnya seperti script berikut
WorkflowManagementClient CreateManagementClient(Uri baseUri, string scopeName) { //use ClientSettings for addtional setting WorkflowManagementClient managementClient = new WorkflowManagementClient(baseUri); managementClient = managementClient.CurrentScope.PublishChildScope(scopeName, new ScopeDescription() { UserComments = string.Format("For {0} sample only", scopeName) }); return managementClient; }
Publish Workflow Activities
Seperti yang telah saya jelaskan sebelumnya custom actifi yang telah dibuat juga perlu dipublish. Hal ini sobat bisa lakukan menggunakan ManagementClient dengan melampirkan Path File Activiti.
string PublishActivity(WorkflowManagementClient managementClient, Uri baseUri, string scopeName, string activityFile, string activityName) { string activityString = File.ReadAllText(activityFile); string translatedFolder = Path.Combine(Path.GetDirectoryName(Path.GetFullPath(activityFile)), @"bin\Debug\TranslatedWorkflows"); string translatedXamlFile = Directory.GetFiles(translatedFolder, "*.xaml").First(); string translatedXamlString = File.ReadAllText(translatedXamlFile); if (translatedXamlString.StartsWith("Error")) { return translatedXamlString; } ActivityDescription activityDesc = new ActivityDescription(XElement.Parse(translatedXamlString)); activityDesc.Name = activityName; // This has to match the Activity Class name when publish activity. try { managementClient.Activities.Publish(activityDesc); } catch (Exception e) { return "Failed to publish activity: " + e.Message; } return string.Empty; }
Publish Workflow
Terakhir adalah mempublish workflow. Caranya adalah mendaftarkan salah satu akviti sebagai workflow melalui script berikut
string PublishWorkflow(Uri baseUri, string scopeName, string activityFile, string activityName, string workflowName, bool startWorkflow, Dictionaryfilters) { WorkflowManagementClient managementClient = CreateManagementClient(baseUri, scopeName); string errorMessage = PublishActivity(managementClient, baseUri, scopeName, activityFile, activityName); if (!string.IsNullOrEmpty(errorMessage)) { return errorMessage; } WorkflowDescription workflowDescription = new WorkflowDescription() { Name = workflowName, ActivityPath = activityName, }; if (filters != null) { MatchAllSubscriptionFilter filterActivity = new MatchAllSubscriptionFilter(); foreach (var filter in filters) { filterActivity.Matches.Add(filter); } workflowDescription.ActivationFilter = filterActivity; } try { managementClient.Workflows.Publish(workflowDescription); } catch (Exception e) { return "Failed to publish workflow: " + e.Message; } if (startWorkflow) { try { managementClient.Workflows.Start(workflowDescription.Name);// (workflowDescription.Name, startParameters); } catch (Exception e) { return "Failed to start workflow: " + e.Message; } } return string.Empty; }
Sampai tahap ini sobat sudah mempublish worfklow dengan akvities yang telah sobat buat. Selanjutnya sobat tinggalkan menjalankan worfklow berdasarkan nama yang sobat buat menggunakan workflowmanagementclient. Nah, demikianlah cara publish workflow ini. Untuk sobat yang belum menginstall workflow manager bisa mengetahui caranya di artikel berikut Cara install Workflow Manager 1.0
Sekarang bisa dimanage menggunakan workflow manager
ReplyDelete