Windows Workflow - Creating a reusable task list (bookmarks?) - workflow-foundation-4

I'm looking at migrating business processes into Windows Workflow, the client app will be ASP/MVC and the workflows are likely to be hosted via IIS.
I want to create a common 'simple task' activity which can be used across multiple workflows. Activity properties would look something like this:
Related customer
Assigned agent
Prompt ("Please review PO #12345")
Text for 'true' button ("Accept")
Text for 'false' button ("Reject")
Variable to store result in
Once the workflow hits this activity a task should be put into a db table. The web app will query the table and show the agent a list of tasks they need to complete. Once they hit accept / reject the workflow needs to resume.
It's the last bit that I'm stuck on. What do I need to store in the DB table to resume a workflow? Given that the tasks table will be used by multiple workflows how work I instantiate the workflow to resume it? I've looked at bookmarks but they assume that you know the type of workflow that you're resuming. Do I need to use reflection or is there a method in WF where I can pass a workflow id and it will instantiate it?

You can use workflow service and control its via ControlEndPoint.
For more info about controlendpoint you can refer at
http://msdn.microsoft.com/en-us/library/ee358723.aspx

Related

Alfresco Activiti - How to modify process variables?

How can I modify process variables in Alfresco's workflows? (embedded Activiti)
I know that they are created when the process is initiated but I'm unable to change them in the Java/JavaScript/process code. (unless I use REST API directly)
I can successfully change local and execution variables ( execution.setVariable("san_value", "1000"); ) but I am unable to change variables which are shown in the Workflow details page.
For the workflow details, data fetched from start-task . Please how you've added the process variables and how you're accessing it ?
Instead of using process variable, you can add new property(using aspect) in the workflow model and you should be able to access and fetch the variable across all the tasks in the workflow process.

how is an event triggered for a service in oracle brm

Hello every one i have been going through the oracle communications business revenue management (BRM) docs for sometime now but one thing i can't figure out is how are the events associated with a service triggered actually. Is it done by the BRM or the client application interacting with the BRM. Somehow the docs don't mention it or i may have missed it.Would be nice if someone can explain it to me. Note the term service is used in the same context as used in BRM docs i.e. something that the customers subscribe to and pay for when use i.e. telephony service. the link to the docs https://docs.oracle.com/cd/E51000_01/index.htm
Events are created by BRM:
the logic is defined in the CM (Connection Manager) tier, inside the Facilities Modules (FMs)
the actual SQL instructions are generated by the Oracle DM (dm_oracle)
For the sake of completeness, there is also another way in which events are created:
Call Detail Records (CDRs) are rated with the Batch Rating Engine (Pipeline Manager) and generate Rated Event records
these are then loaded, via the Rated Event Loader (REL), directly to the database. Under the hood, REL calls SQL*Loader and a stored procedure to update account balances and bill items

Simplest possible BAM Scenario

I’m trying to set up a very simple BAM scenario within BizTalk Server 2013R2 upon which to build, involving tracking just the time of all incoming messages processed by a port.
To this end I have :
Within Excel, created an Activity Definition (called
SimpleReceiveTest) containing a single Item called ReceiveTime of
type milestone (date/time), and a View Definition (also called
SimpleReceiveTest) containing just this Activity Definition and Item.
Imported this BAM definition spreadsheet using bm.exe
Added view rights to SimpleReceiveTest again using bm.exe
Launched the Tracking Profile Editor, imported the BAM Activity
Definition, and mapped ActivityID = MessageID and ReceiveTime =
PortStartTime by drag and drop from the Messaging Property Schema, as
shown below :
Set the Port Mappings for MessageID and PortStartTime to relate to a
test Receive Port ReceivePort1 that I am using for testing. This is
using a pass-through pipeline.
Saved and applied the above Tracking Profile
It is my understanding that for any messages received on port ReceivePort1 I should now get a tracking activity created. However this is not happening – there are no records in any of the BAM tables/views and no data is available within the BAM Portal.
I have tried restarting the hosts, and have verified that the TDDS_FailedTrackingData table is empty, there is nothing relevant in the event log, a Tracking host is running and the SQL Agent Jobs are running. I have also tried running these jobs manually.
Have I missed something, and am I correct in my expectation that this simple scenario should create tracked activities for any messages passing through the Receive Port? If so what can I try to further diagnose this?
Now fixed - it's actually a bug in vanilla BizTalk 2013R2 when using a standard pipeline that has been fixed in CU2.
FIX: BAM tracking doesn’t work when you use the XMLReceive or a custom pipeline in BizTalk Server

is Workflow Management right required to create SG with Workflow Process defined?

We are noticing that if a user without Workflow Management rights on a Publication tries to create a Structure Group and sets the "Associated Page Process" set on the Workflow tab, they get a permission error. If the workflow setting is removed, the user can save without issue.
I assume this is by design in the product, right? I wanted to verify that we weren't hitting something in our custom code. If it matters, here's what's logged:
Unable to save Structure Group (tcm:0-0-0). You do not have permission to perform this action. Error Code: 0x80040242 (-2147220926) Call stack: Tridion.ContentManager.Security.AuthorizationManager.AssertAccess(IdentifiableObjectData,Permissions,Rights) Tridion.ContentManager.CommunicationManagement.StructureGroup.OnSaving(SaveEventArgs) Tridion.ContentManager.IdentifiableObject.Save(SaveEventArgs) Tridion.ContentManager.IdentifiableObject.Save() Tridion.ContentManager.BLFacade.ContentManagement.RepositoryLocalObjectFacade.Create(UserContext,String) XMLState.Save StructureGroup.Save
thanks,
~Warner
Yes, to assign a Workflow Process Definition to an item (Schema or SG), you need Workflow Management rights.

SQL Server load balancing optimizing Hits or Optimize the query

When we developers write data access code what should we really worry about if the application should scale well and handle the load / Hits.
Given this simple problem , how would you solve it in scalable manner.
1.ProjectResource is a Class ( Encapsulating resources assigned to a Project)
2.Each resource assigned to Project is User Class
3.Each User in the Project also has ReportingHead and ProjectManager who are also instance of User
4.Finally there is a Project class containing project details
Legend of classes used
User
Project
ProjectResource
Table Diagram
ProjectResource
ResourceId
ProjectId
UserId
ReportingHead
ProjectManager
Class Diagram
ProjectResource
ResourceId : String / Guid
Project : Project
User : User
ReportingHead : User
ProjectManager : User
note:
All the user information is stored in the User table
All the Project information is stored in the project table
Here's the Problem
When the application requests for Resource In a Project operations below are followed
First Get the Records for the Project
Get the UserId , make the request(using Users DAL) to get the user instance
Get the ProjectId, make the request(using Projects DAL) to get the project information
Finally assign Users and Project to instance of ProjectResource
clearly you can see 3 Db Calls are made here for populating single ProjectResource but the concerns and who manages the objects are clearly defined. This is the way i have planned to , since there is also connection pooling available in Sql Server & ADO.net
There is also another way where all the details are retrieved in single hit using Table Inner Joins and then Populating.
Which way should i really be taking and Why?
Extras:
.NET 2.0,ASP.net 2.0,C#,Sql Server 2005,DB on same machine hosting application.
For best performance and scalability, you should minimize the number of round-trips to the DB. To prove that to yourself, just run some benchmarks; it becomes clear very quickly.
One approach to a single round-trip is to use joins. Another is to return multiple result sets. The latter can be helpful in eliminating possible duplicate data.

Resources