Skip to main content

Hi Guys!


We try to migrate the K2 from an old environment (1 K2 + 1 SQL 200) to a new environment (K2 NLB + SQL 2005 cluster). We used the scenario from here: http://k2underground.com/forums/permalink/8133/8134/ShowThread.aspx#8134


There is two problem with it:


1. The K2.Serial number is stored for the active woriktems URL (_worklist table), which contains the old server name. So this workitems cannot reach. This migration scenario cannot working with active processes?


2. If i start a new process instance (in the new environment) the Workitem URL contain the NLB node name, not the common name (Virtual server name). That means if i shutdown this node these workitems cannot use. So the K2 not support NLB?


Please help, if you have any idea.


Regards 


 


 


 

The server name in the serial number should not impact how you access the workitem unless your application is somehow accessing based on the server name in the serial number.


 See this http://k2underground.com/forums/post/7797.aspx


"The fact that the worklist serial number contains the server name isn't an issue unless someone is using the serial number to derive the server name. Any new worklist items will reflect the new server name, but the old ones are still valid. "


The only thing that would be impacted is if the application web forms are stored on the same server and you have the URL fixed to the node name.  If the old servers are offline, one way to get easily get around this is to create a DNS HOST (A) record or ALIAS (C) record entry to point the old server name to the new servers.


You are right, i can access the workitem in the workspace, but..


We use the URL (that contains the K2.SerialNumber) to create decisions: approvals or rejections: http://JIK:85/JIKWeb/ApprovalDecisionPage.aspx?DemandID=1260&DecisionMakerRole=2&sn=BZTK2SRV,2794,40"


This is the code how we make a finish on a worklist item:


      Connection k2 = null;


      WorklistItem k2WorklistItem;


      DataField dataField;


      XmlField xmlField;


 


      try


      {


        k2 = new Connection();


        k2.Open(ConfigurationManager.AppSettings.Get("PlanServer"));


 


        k2WorklistItem = k2.OpenWorklistItem(serialNumber, "ASP");


 


        if (k2WorklistItem != null)


        {


          dataField = k2WorklistItem.ActivityInstanceDestination.DataFieldsÂ"Decision"];


          dataField.Value = decision.ToString();


          xmlField = k2WorklistItem.ActivityInstanceDestination.XmlFields>"SignedDemand"];


          if (signedDemand != null)


            xmlField.Value = signedDemand.InnerXml;


 


          k2WorklistItem.Finish();


        }


        else


          throw new Exception("A feladat nem elérhető!");


      }


      catch (Exception ex)


      {


        throw new Exception("k2manager:" + ex.Message, ex);


      }


      finally


      {


        if (k2 != null)


          k2.Close();


      } 


 


Is there another way to use? 


We analyse this resolution to create DNS Alias, but the problem that the old K2 server not just K2 server, but Biztalk server too, we just stop the K2 service not all the server. It is not workin to create a DNS Alias what is the same with a running server.


Is there any idea with the NLB problem?


Zsolt 


 


 


 


 


 


How is serialNumber populated and what error are you getting when you call .Finish?   Or did you get an error on K2.Open or k2.OpenWorklistItem?

The serial number should work even if it is executed on another K2 server installation.  The only thing that might not work would be if you hard coded the form URL to the specific node.  It would be helpful if you gave a bit more detail on what error you are hitting (attach screenshots if possible).


Reply